Skip to content

Commit 0c0c420

Browse files
MarkWangChinesefabiobaltieri
authored andcommitted
drivers: udc: mcux: set high_bandwidth
set high_bandwidth and use the cfg->mps to set ep_init.maxPacketSize because NXP MCUX controller driver supports additional transaction bits in maxPacketSize. Signed-off-by: Mark Wang <[email protected]>
1 parent 8617e46 commit 0c0c420

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

drivers/usb/udc/udc_mcux_ehci.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,8 @@ static int udc_mcux_ep_enable(const struct device *dev,
571571
ep_init.zlt = 0U;
572572
ep_init.interval = cfg->interval;
573573
ep_init.endpointAddress = cfg->addr;
574-
ep_init.maxPacketSize = udc_mps_ep_size(cfg);
574+
/* HAL expects wMaxPacketSize value directly in maxPacketSize field */
575+
ep_init.maxPacketSize = cfg->mps;
575576

576577
switch (cfg->attributes & USB_EP_TRANSFER_TYPE_MASK) {
577578
case USB_EP_TYPE_CONTROL:
@@ -733,6 +734,7 @@ static int udc_mcux_driver_preinit(const struct device *dev)
733734
config->ep_cfg_out[i].caps.interrupt = 1;
734735
config->ep_cfg_out[i].caps.iso = 1;
735736
config->ep_cfg_out[i].caps.mps = 1024;
737+
config->ep_cfg_out[i].caps.high_bandwidth = 1;
736738
}
737739

738740
config->ep_cfg_out[i].addr = USB_EP_DIR_OUT | i;
@@ -753,6 +755,7 @@ static int udc_mcux_driver_preinit(const struct device *dev)
753755
config->ep_cfg_in[i].caps.interrupt = 1;
754756
config->ep_cfg_in[i].caps.iso = 1;
755757
config->ep_cfg_in[i].caps.mps = 1024;
758+
config->ep_cfg_in[i].caps.high_bandwidth = 1;
756759
}
757760

758761
config->ep_cfg_in[i].addr = USB_EP_DIR_IN | i;

drivers/usb/udc/udc_mcux_ip3511.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,8 @@ static int udc_mcux_ep_enable(const struct device *dev,
571571
ep_init.zlt = 0U;
572572
ep_init.interval = cfg->interval;
573573
ep_init.endpointAddress = cfg->addr;
574-
ep_init.maxPacketSize = udc_mps_ep_size(cfg);
574+
/* HAL expects wMaxPacketSize value directly in maxPacketSize field */
575+
ep_init.maxPacketSize = cfg->mps;
575576

576577
switch (cfg->attributes & USB_EP_TRANSFER_TYPE_MASK) {
577578
case USB_EP_TYPE_CONTROL:
@@ -747,6 +748,10 @@ static int udc_mcux_driver_preinit(const struct device *dev)
747748
config->ep_cfg_out[i].caps.interrupt = 1;
748749
config->ep_cfg_out[i].caps.iso = 1;
749750
config->ep_cfg_out[i].caps.mps = 1024;
751+
if ((priv->controller_id == kUSB_ControllerLpcIp3511Hs0) ||
752+
(priv->controller_id == kUSB_ControllerLpcIp3511Hs1)) {
753+
config->ep_cfg_out[i].caps.high_bandwidth = 1;
754+
}
750755
}
751756

752757
config->ep_cfg_out[i].addr = USB_EP_DIR_OUT | i;
@@ -767,6 +772,10 @@ static int udc_mcux_driver_preinit(const struct device *dev)
767772
config->ep_cfg_in[i].caps.interrupt = 1;
768773
config->ep_cfg_in[i].caps.iso = 1;
769774
config->ep_cfg_in[i].caps.mps = 1024;
775+
if ((priv->controller_id == kUSB_ControllerLpcIp3511Hs0) ||
776+
(priv->controller_id == kUSB_ControllerLpcIp3511Hs1)) {
777+
config->ep_cfg_in[i].caps.high_bandwidth = 1;
778+
}
770779
}
771780

772781
config->ep_cfg_in[i].addr = USB_EP_DIR_IN | i;

0 commit comments

Comments
 (0)