> From: Varadarajan, Charu Latha > Sent: Monday, October 26, 2009 4:07 AM > > >>>> #endif > >>>> + if (cpu_is_omap24xx() || cpu_is_omap34xx() || > cpu_is_omap44xx()) { > >>>> + if (!bank->>gpio_status) { > >>>> + ctrl = __raw_readl(bank->>base + > OMAP24XX_GPIO_CTRL); > >>>> + /* Module is enabled, clocks are not gated */ > >>>> + ctrl &= 0xFFFFFFFE; > >>>> + __raw_writel(ctrl, bank->>base + > OMAP24XX_GPIO_CTRL); > >>>> + } > >>>> + bank->>gpio_status |= 1 << offset; > >>>> + } > >>> why do this every time a gpio is enabled? why not do this iff gpio was > >>> never used before.. how about the following: > >> The module is enabled only when gpio_status indicates that no GPIO > >> in that module is currently active and the GPIO being requested is the > 1st one > >> to be active in that module. > >> Each module would be disabled in free() API when all GPIOs in a > particular module > >> becomes inactive. The module is re-enabled in request() API when a GPIO > is > >> requested from the module that was previously disabled. > >Thanks. > Welcome > >>> if (!bank->>gpio_status && (cpu_is_omap24xx() || cpu_is_omap34xx() || > >>> cpu_is_omap44xx())) { > >>> u32 ctrl = __raw_readl(bank->>base + OMAP24XX_GPIO_CTRL); > >>> /* Module is enabled, clocks are not gated */ > >>> ctrl &= 0xFFFFFFFE; > >>> __raw_writel(ctrl, bank->>base + OMAP24XX_GPIO_CTRL); > >>> } > >>> bank->>gpio_status |= 1 << offset; > >> Why to touch gpio_status if not used (for other than 34xx/24xx/44xx > cases)? > >either the gpio_status should be under a #ifdef for 34xx when defining > >or it should be usable by all. what it does now is do both. > gpio_status is not used under #ifdef for 34xx. It is used only with > cpu_is_omap > (34xx/24xx/44xx). Should we use both #ifdef and cpu_is_omap together? Why? > But I don't see that approach in LO. For eg., usage of dbck_enable_mask is > used only with cpu_is_omap and is not declared under #ifdef. Please see [1] saved_datain is an example of why I think gpio.c could go thru a cleanup ;) already in #ifdef in line 1908, in line 1925, we add a new #ifdef under a #ifdef :D.. err... Ok this piece of code is not perfect.. Regards, Nishanth Menon [1] http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=blob;f=arch/arm/plat-omap/gpio.c;h=487bea7b5605fe366064d792d0c9cc8aed1eac63;hb=0bbf5337f2f2957775051a3caf60b66d3306c815#l174 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html