usb: gadget: Add ep_config call back to usb_gadget_ops
authorYe Li <ye.li@nxp.com>
Mon, 25 Jan 2021 13:43:44 +0000 (21:43 +0800)
committerMarek Vasut <marex@denx.de>
Sun, 31 Jan 2021 13:08:56 +0000 (14:08 +0100)
Since some new fields in usb_ep structure been moved to usb_ss_ep.
The CDNS3 gadget driver should replies on this operation to bind the
usb_ss_ep with the endpoint descriptor when function layer uses
usb_ep_autoconfig to add endpoint descriptors to gadget. So that
CDNS3 driver can know the EP information and configure the EP once
the set configuration request is received.

Signed-off-by: Sherry Sun <sherry.sun@nxp.com>
Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/usb/gadget/epautoconf.c
include/linux/usb/gadget.h

index e61fe5d..3f88429 100644 (file)
@@ -167,6 +167,10 @@ static int ep_matches(
                        size = 64;
                put_unaligned(cpu_to_le16(size), &desc->wMaxPacketSize);
        }
+
+       if (gadget->ops->ep_conf)
+               return gadget->ops->ep_conf(gadget, ep, desc);
+
        return 1;
 }
 
index 06292dd..8d54b91 100644 (file)
@@ -470,6 +470,9 @@ struct usb_gadget_ops {
        struct usb_ep *(*match_ep)(struct usb_gadget *,
                        struct usb_endpoint_descriptor *,
                        struct usb_ss_ep_comp_descriptor *);
+       int   (*ep_conf)(struct usb_gadget *,
+                       struct usb_ep *,
+                       struct usb_endpoint_descriptor *);
        void    (*udc_set_speed)(struct usb_gadget *gadget,
                                 enum usb_device_speed);
 };