>>>>  #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.

>my proposal is to allow gpio_status to be usable by ALL OMAPs -> maybe
>OMAP1 also could also use it.. I cannot comment - but it does look to
>have scope of usage beyond omap2/3/4 series?
Even though OMAP1 supports the same feature, I am not including it as I
cannot test it and I am not sure about it in OMAP1. For 24xx, 34xx & 44xx, 
the registers used and offsets are all the same. So the same code is reused. --
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to