summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYe Li <ye.li@nxp.com>2021-01-25 21:43:44 +0800
committerMarek Vasut <marex@denx.de>2021-01-31 14:08:56 +0100
commit71a5732b43b9798d4c288f4dd118247ebdf88e9b (patch)
treec5b765cc532c437d320847aff8a247312234aa88
parentf2fa49988301965c4f8e7bfdf83145e677b1fbcc (diff)
downloadu-boot-71a5732b43b9798d4c288f4dd118247ebdf88e9b.tar.gz
usb: gadget: Add ep_config call back to usb_gadget_ops
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>
-rw-r--r--drivers/usb/gadget/epautoconf.c4
-rw-r--r--include/linux/usb/gadget.h3
2 files changed, 7 insertions, 0 deletions
diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c
index e61fe5d114..3f8842976d 100644
--- a/drivers/usb/gadget/epautoconf.c
+++ b/drivers/usb/gadget/epautoconf.c
@@ -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;
}
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
index 06292ddeb6..8d54b91734 100644
--- a/include/linux/usb/gadget.h
+++ b/include/linux/usb/gadget.h
@@ -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);
};