forked from Minki/linux
usb: gadget: move bind callback into driver struct usb_composite_driver
It was moved to be an argument in 07a18bd716
("usb gadget: don't
save bind callback in struct usb_composite_driver"). The reason was to
avoid the section missmatch. The warning was shown because ->bind is
marked as __init becuase it is a one time init. The warning can be also
suppresed by whitelisting the variable i.e. rename it to lets say _probe.
Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
e473093114
commit
fac3a43e0a
@ -32,7 +32,6 @@
|
|||||||
#define USB_BUFSIZ 1024
|
#define USB_BUFSIZ 1024
|
||||||
|
|
||||||
static struct usb_composite_driver *composite;
|
static struct usb_composite_driver *composite;
|
||||||
static int (*composite_gadget_bind)(struct usb_composite_dev *cdev);
|
|
||||||
|
|
||||||
/* Some systems will need runtime overrides for the product identifiers
|
/* Some systems will need runtime overrides for the product identifiers
|
||||||
* published in the device descriptor, either numbers or strings or both.
|
* published in the device descriptor, either numbers or strings or both.
|
||||||
@ -1468,7 +1467,7 @@ static int composite_bind(struct usb_gadget *gadget)
|
|||||||
* serial number), register function drivers, potentially update
|
* serial number), register function drivers, potentially update
|
||||||
* power state and consumption, etc
|
* power state and consumption, etc
|
||||||
*/
|
*/
|
||||||
status = composite_gadget_bind(cdev);
|
status = composite->bind(cdev);
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
@ -1621,7 +1620,9 @@ static struct usb_gadget_driver composite_driver = {
|
|||||||
int usb_composite_probe(struct usb_composite_driver *driver,
|
int usb_composite_probe(struct usb_composite_driver *driver,
|
||||||
int (*bind)(struct usb_composite_dev *cdev))
|
int (*bind)(struct usb_composite_dev *cdev))
|
||||||
{
|
{
|
||||||
if (!driver || !driver->dev || !bind || composite)
|
if (!driver || !driver->dev || composite)
|
||||||
|
return -EINVAL;
|
||||||
|
if (!bind && !driver->bind)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (!driver->name)
|
if (!driver->name)
|
||||||
@ -1632,7 +1633,8 @@ int usb_composite_probe(struct usb_composite_driver *driver,
|
|||||||
composite_driver.driver.name = driver->name;
|
composite_driver.driver.name = driver->name;
|
||||||
composite_driver.max_speed = driver->max_speed;
|
composite_driver.max_speed = driver->max_speed;
|
||||||
composite = driver;
|
composite = driver;
|
||||||
composite_gadget_bind = bind;
|
if (!driver->bind)
|
||||||
|
driver->bind = bind;
|
||||||
|
|
||||||
return usb_gadget_probe_driver(&composite_driver, composite_bind);
|
return usb_gadget_probe_driver(&composite_driver, composite_bind);
|
||||||
}
|
}
|
||||||
|
@ -257,12 +257,16 @@ void usb_remove_config(struct usb_composite_dev *,
|
|||||||
* not set.
|
* not set.
|
||||||
* @dev: Template descriptor for the device, including default device
|
* @dev: Template descriptor for the device, including default device
|
||||||
* identifiers.
|
* identifiers.
|
||||||
* @strings: tables of strings, keyed by identifiers assigned during bind()
|
* @strings: tables of strings, keyed by identifiers assigned during @bind
|
||||||
* and language IDs provided in control requests
|
* and language IDs provided in control requests
|
||||||
* @max_speed: Highest speed the driver supports.
|
* @max_speed: Highest speed the driver supports.
|
||||||
* @needs_serial: set to 1 if the gadget needs userspace to provide
|
* @needs_serial: set to 1 if the gadget needs userspace to provide
|
||||||
* a serial number. If one is not provided, warning will be printed.
|
* a serial number. If one is not provided, warning will be printed.
|
||||||
* @unbind: Reverses bind; called as a side effect of unregistering
|
* @bind: (REQUIRED) Used to allocate resources that are shared across the
|
||||||
|
* whole device, such as string IDs, and add its configurations using
|
||||||
|
* @usb_add_config(). This may fail by returning a negative errno
|
||||||
|
* value; it should return zero on successful initialization.
|
||||||
|
* @unbind: Reverses @bind; called as a side effect of unregistering
|
||||||
* this driver.
|
* this driver.
|
||||||
* @disconnect: optional driver disconnect method
|
* @disconnect: optional driver disconnect method
|
||||||
* @suspend: Notifies when the host stops sending USB traffic,
|
* @suspend: Notifies when the host stops sending USB traffic,
|
||||||
@ -271,9 +275,9 @@ void usb_remove_config(struct usb_composite_dev *,
|
|||||||
* before function notifications
|
* before function notifications
|
||||||
*
|
*
|
||||||
* Devices default to reporting self powered operation. Devices which rely
|
* Devices default to reporting self powered operation. Devices which rely
|
||||||
* on bus powered operation should report this in their @bind() method.
|
* on bus powered operation should report this in their @bind method.
|
||||||
*
|
*
|
||||||
* Before returning from bind, various fields in the template descriptor
|
* Before returning from @bind, various fields in the template descriptor
|
||||||
* may be overridden. These include the idVendor/idProduct/bcdDevice values
|
* may be overridden. These include the idVendor/idProduct/bcdDevice values
|
||||||
* normally to bind the appropriate host side driver, and the three strings
|
* normally to bind the appropriate host side driver, and the three strings
|
||||||
* (iManufacturer, iProduct, iSerialNumber) normally used to provide user
|
* (iManufacturer, iProduct, iSerialNumber) normally used to provide user
|
||||||
@ -291,6 +295,7 @@ struct usb_composite_driver {
|
|||||||
enum usb_device_speed max_speed;
|
enum usb_device_speed max_speed;
|
||||||
unsigned needs_serial:1;
|
unsigned needs_serial:1;
|
||||||
|
|
||||||
|
int (*bind)(struct usb_composite_dev *cdev);
|
||||||
int (*unbind)(struct usb_composite_dev *);
|
int (*unbind)(struct usb_composite_dev *);
|
||||||
|
|
||||||
void (*disconnect)(struct usb_composite_dev *);
|
void (*disconnect)(struct usb_composite_dev *);
|
||||||
|
Loading…
Reference in New Issue
Block a user