Exemple #1
0
void gpioConfig(uint32_t inst, uint32_t pin, uint32_t opt)
{
    uint32_t base = inst2Base[inst];

    /* GPIO Clock */
    switch (inst) {
    case GPIO_1:
        CM_MODULEMODE_ENABLE(CM_PER_GPIO1_CLKCTRL);
        CM_PER_GPIO1_CLKCTRL |= BIT_18; /* Debounce Clk */
        while(!(CM_PER_L4LS_CLKSTCTRL & CM_CLKACTIVITY_GPIO_1_GDBCLK))
            ;
        break;
    }

    /* Pin mux */
    switch (inst) {
    case GPIO_1:
        if (pin >= 16 && pin <= 27)
            CTRLM_CONF_GPMC_A(pin-16) = CTRLM_CONF_MUXMODE(7);
        break;
    }

    /* I/O */
    if (opt & GPIO_CFG_OUTPUT)
        GPIO_OE(base) &= ~(1 << pin);
    else if (opt & GPIO_CFG_INPUT)
        GPIO_OE(base) |=  (1 << pin);
}
Exemple #2
0
static void get_gpio_settings(void)
{
	unsigned long pmc_ctrl;
	int i;
	int j;

	pmc_ctrl = readl(IO_ADDRESS(TEGRA_PMC_BASE));	
	printk(KERN_INFO "pICS_%s: pmc_ctrl = 0x%lX...\n",__func__,pmc_ctrl);
	
	for (i = 0; i < 7; i++) {
		for (j = 0; j < 4; j++) {
			int gpio = tegra_gpio_compose(i, j, 0);
			printk(KERN_INFO "pICS_%s: %d:%d %02x %02x %02x %02x %02x %02x %06x\n",__func__,
			       i, j,
			       __raw_readl(GPIO_CNF(gpio)),
			       __raw_readl(GPIO_OE(gpio)),
			       __raw_readl(GPIO_OUT(gpio)),
			       __raw_readl(GPIO_IN(gpio)),
			       __raw_readl(GPIO_INT_STA(gpio)),
			       __raw_readl(GPIO_INT_ENB(gpio)),
			       __raw_readl(GPIO_INT_LVL(gpio)));
		}
	}
}