usb: dwc2: Add support for 'maximum-speed' property
Subsystems (2)
PATCH 1/1 usb: dwc2: Add support for 'maximum-speed' property
The DWC2 IP can be properly integrated in a SoC to work at high-speed USB speed but some board issues, EMC constraints or any other reasons can lead to the need to limit this USB speed at board level.
The device-tree 'maximum-speed' property already exists for this purpose but is not handled by the DWC2 driver.
Fill this lack adding support for 'maximum-speed' property and so allow to limit the USB speed in device-tree (board description).
Signed-off-by Herve Codina <[email protected]>
--- drivers/usb/dwc2/params.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)
drivers/usb/dwc2/params.c +26 -0
@@ -1029,11 +1029,33 @@ int dwc2_get_hwparams(struct dwc2_hsotg *hsotg)return 0 ; } +static int dwc2_limit_speed (struct dwc2_hsotg *hsotg) +{ +enum usb_device_speed usb_speed; + + usb_speed =usb_get_maximum_speed (hsotg->dev); +switch (usb_speed) { +case USB_SPEED_LOW : +dev_err (hsotg->dev,"Maximum speed cannot be forced to low-speed\n" ); +return -EINVAL ; +case USB_SPEED_FULL : +if (hsotg->params.speed ==DWC2_SPEED_PARAM_LOW ) +break ; + hsotg->params.speed =DWC2_SPEED_PARAM_FULL ; +break ; +default : +break ; + } + +return 0 ; +} +typedef void (*set_params_cb )(struct dwc2_hsotg *data);int dwc2_init_params (struct dwc2_hsotg *hsotg) {set_params_cb set_params; +int ret;dwc2_set_default_params (hsotg);dwc2_get_device_properties (hsotg);
@@ -1051,6 +1073,10 @@ int dwc2_init_params(struct dwc2_hsotg *hsotg) } } + ret =dwc2_limit_speed (hsotg); +if (ret) +return ret; +dwc2_check_params (hsotg);return 0 ;
Signature · 1 line
2.51.0