usb: gadget: renesas_usbhs: add usbhs_set_device_speed() support for host
mod_host needs device speed setup function Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:

committed by
Felipe Balbi

parent
a9be4a4562
commit
eb05191f6a
@@ -226,6 +226,48 @@ static void usbhsc_bus_init(struct usbhs_priv *priv)
|
||||
usbhs_vbus_ctrl(priv, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* device configuration
|
||||
*/
|
||||
int usbhs_set_device_speed(struct usbhs_priv *priv, int devnum,
|
||||
u16 upphub, u16 hubport, u16 speed)
|
||||
{
|
||||
struct device *dev = usbhs_priv_to_dev(priv);
|
||||
u16 usbspd = 0;
|
||||
u32 reg = DEVADD0 + (2 * devnum);
|
||||
|
||||
if (devnum > 10) {
|
||||
dev_err(dev, "cannot set speed to unknown device %d\n", devnum);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
if (upphub > 0xA) {
|
||||
dev_err(dev, "unsupported hub number %d\n", upphub);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
switch (speed) {
|
||||
case USB_SPEED_LOW:
|
||||
usbspd = USBSPD_SPEED_LOW;
|
||||
break;
|
||||
case USB_SPEED_FULL:
|
||||
usbspd = USBSPD_SPEED_FULL;
|
||||
break;
|
||||
case USB_SPEED_HIGH:
|
||||
usbspd = USBSPD_SPEED_HIGH;
|
||||
break;
|
||||
default:
|
||||
dev_err(dev, "unsupported speed %d\n", speed);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
usbhs_write(priv, reg, UPPHUB(upphub) |
|
||||
HUBPORT(hubport)|
|
||||
USBSPD(usbspd));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* local functions
|
||||
*/
|
||||
|
Reference in New Issue
Block a user