diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2011-10-11 01:06:46 -0400 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2011-10-13 13:41:49 -0400 |
commit | eb05191f6a9aba8344a0d5f28642b5ecf44d49a4 (patch) | |
tree | d86743fd474d71d7dfd1bf0af827cb404b3ed7e4 /drivers/usb/renesas_usbhs/common.c | |
parent | a9be4a45627c0eaa5f3f16987243530f4df6b514 (diff) |
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>
Diffstat (limited to 'drivers/usb/renesas_usbhs/common.c')
-rw-r--r-- | drivers/usb/renesas_usbhs/common.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c index 895eb44a1a51..c3aef40fa9e5 100644 --- a/drivers/usb/renesas_usbhs/common.c +++ b/drivers/usb/renesas_usbhs/common.c | |||
@@ -227,6 +227,48 @@ static void usbhsc_bus_init(struct usbhs_priv *priv) | |||
227 | } | 227 | } |
228 | 228 | ||
229 | /* | 229 | /* |
230 | * device configuration | ||
231 | */ | ||
232 | int usbhs_set_device_speed(struct usbhs_priv *priv, int devnum, | ||
233 | u16 upphub, u16 hubport, u16 speed) | ||
234 | { | ||
235 | struct device *dev = usbhs_priv_to_dev(priv); | ||
236 | u16 usbspd = 0; | ||
237 | u32 reg = DEVADD0 + (2 * devnum); | ||
238 | |||
239 | if (devnum > 10) { | ||
240 | dev_err(dev, "cannot set speed to unknown device %d\n", devnum); | ||
241 | return -EIO; | ||
242 | } | ||
243 | |||
244 | if (upphub > 0xA) { | ||
245 | dev_err(dev, "unsupported hub number %d\n", upphub); | ||
246 | return -EIO; | ||
247 | } | ||
248 | |||
249 | switch (speed) { | ||
250 | case USB_SPEED_LOW: | ||
251 | usbspd = USBSPD_SPEED_LOW; | ||
252 | break; | ||
253 | case USB_SPEED_FULL: | ||
254 | usbspd = USBSPD_SPEED_FULL; | ||
255 | break; | ||
256 | case USB_SPEED_HIGH: | ||
257 | usbspd = USBSPD_SPEED_HIGH; | ||
258 | break; | ||
259 | default: | ||
260 | dev_err(dev, "unsupported speed %d\n", speed); | ||
261 | return -EIO; | ||
262 | } | ||
263 | |||
264 | usbhs_write(priv, reg, UPPHUB(upphub) | | ||
265 | HUBPORT(hubport)| | ||
266 | USBSPD(usbspd)); | ||
267 | |||
268 | return 0; | ||
269 | } | ||
270 | |||
271 | /* | ||
230 | * local functions | 272 | * local functions |
231 | */ | 273 | */ |
232 | static void usbhsc_set_buswait(struct usbhs_priv *priv) | 274 | static void usbhsc_set_buswait(struct usbhs_priv *priv) |