]> git.sur5r.net Git - u-boot/commit
usb: gadget: at91_udc: port linux driver at91_udc
authorHeiko Schocher <hs@denx.de>
Tue, 8 Sep 2015 09:52:50 +0000 (11:52 +0200)
committerAndreas Bießmann <andreas.devel@googlemail.com>
Fri, 11 Sep 2015 07:35:39 +0000 (09:35 +0200)
commit8ea1fbf75c56cb9ac0e9d96173068703d4ee8fdd
treef22822ddfcb1846ed3673ef5d78e029ebbeb9cd8
parent0b4e450556a05d78d1eaf4921180916eb5939c9a
usb: gadget: at91_udc: port linux driver at91_udc

port at91_udc driver from linux:

original commit Message:
commit c94e289f195e0e13cf34d27f9338d28221a85751
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sat Apr 11 00:14:21 2015 +0200

    usb: gadget: remove incorrect __init/__exit annotations

    A recent change introduced a link error for the composite
    printer gadget driver:

    `printer_unbind' referenced in section `.ref.data' of drivers/built-in.o: defined in discarded section `.exit.text' of drivers/built-in.o

    Evidently the unbind function should not be marked __exit here,
    because it is called through a callback pointer that is not necessarily
    discarded, __composite_unbind() is indeed called from the error path of
    composite_bind(), which can never work for a built-in driver.

    Looking at the surrounding code, I found the same problem in all other
    composite gadget drivers in both the bind and unbind functions, as
    well as the udc platform driver 'remove' functions. Those will break
    if anyone uses the 'unbind' sysfs attribute to detach a device from a
    built-in driver.

    This patch removes the incorrect annotations from all the gadget
    drivers.

Signed-off-by: Heiko Schocher <hs@denx.de>
drivers/usb/gadget/at91_udc.c [new file with mode: 0644]
drivers/usb/gadget/at91_udc.h [new file with mode: 0644]