Subject: [PATCH 0/3] omap hsmmc init cleanup and section warning fixes for v3.4 merge window

From: [email-masked] (Rajendra Nayak)
Date: Fri, 17 Feb 2012 15:07:33 +0530

On Friday 17 February 2012 03:03 PM, Rajendra Nayak wrote:
> []...
>>>>>> 3. Load the gpio-twl4030 module
>>>>>
>>>>> I was expecting this to now detect the card, but I instead got
>>>>> this error which seems to tell gpio-twl4030 has problems
>>>>> when built/used as a module, outside of the mmc issues.
>>>>
>>>> Looks like I was mislead with the errors and though the twl4030
>>>> gpio probe was bailing out with errors, which its not.
>>>> It does seem to go ahead, does a mmc late init which registers
>>>> the mmc omap_device and hence does a platform_device_add, but the
>>>> device never seem to get probed. mmc driver is built in and
>>>> registered.
>>>>
>>>>>
>>>>> # insmod gpio-twl4030.ko
>>>>> [ 16.217864] twl4030_gpio twl4030_gpio: can't dispatch IRQs from
>>>>> modules
>>>>> [ 16.242004] gpiochip_add: registered GPIOs 192 to 211 on device:
>>>>> twl4030
>>>>>
>>>>>
>>>>>> 4. Remove the gpio-twl4030 module
>>>>>> 5. Re-load the gpio-twl4030.ko module
>>>>>>
>>>>>> and report back what you get. Thanks.
>>>>
>>>
>>> (4) and (5) are the key bits of what I was asking you to do.
>>
>> Okay, so that was a total waste of time and effort, because you didn't do
>> what I asked.
>
> Sorry, I did'nt repond back because I wanted to get this resolved
> completely before I did.
>
> (3) did not probe the inserted mmc device because the driver was
> doing a platform_driver_probe() and not a platform_driver_register().
>
> Once I fixed that and removed the __init from probe, I then hit a
> failure with gpio_to_irq() call in the mmc driver probe.
>
> This was beacuse the twl gpio driver does not register irqs as said by
> this error at driver load...
>  >>>> [ 16.217864] twl4030_gpio twl4030_gpio: can't dispatch IRQs from
> modules
> ... apparently because there is no way to unregister a irq once the
> module is unloaded.
>
> That makes sdmmc pretty much unusable if twl gpio is built as a module.
>
>>
>> Tony: I think there's a bug here - if the gpio-twl4030 module is
>> inserted,
>> removed and re-inserted, I think we'll end up creating the devices for
>> MMC
>> twice with the same name, resulting in sysfs complaining very loudly.
>
> I still went ahead and tried (4) becasue I knew I would hit the above
> issue. However I end up with a rmmod complaining 'resource temporarily
> unavailable' because I see there are 3 gpio_requests, which I found
> were from the .setup callback in the board file (I am using beagle).
> The beagle board file does not seem to however register a .teardown
> hook provided by twl4030 gpio platform_data structure to do a gpio_free.

Forgot to mention, its not just the beagle but *all* omap3 board files
with .teardown missing.

> So I am now trying to get the teardown function clean stuff up including
> unregister the mmc device, which should also fix the problem with
> multiple mmc device register that you reported with insmod/rmmod/insmod
> sequence.
>
> I will post patches on top of Tony's series to fix all these issues.
>
>