RE: [PATCH] [OMAP] GPIO Module disable if all pins inactive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> 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

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux