usb: musb: set the controller speed based on the config setting
Set the Power register HSENAB bit based on musb->config->maximum_speed, so that the glue layer can control MUSB to work in high- or full-speed. Signed-off-by: Bin Liu <b-liu@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
f35fe4beb0
commit
9b7537642c
|
@ -1028,18 +1028,22 @@ void musb_start(struct musb *musb)
|
|||
{
|
||||
void __iomem *regs = musb->mregs;
|
||||
u8 devctl = musb_readb(regs, MUSB_DEVCTL);
|
||||
u8 power;
|
||||
|
||||
dev_dbg(musb->controller, "<== devctl %02x\n", devctl);
|
||||
|
||||
musb_enable_interrupts(musb);
|
||||
musb_writeb(regs, MUSB_TESTMODE, 0);
|
||||
|
||||
/* put into basic highspeed mode and start session */
|
||||
musb_writeb(regs, MUSB_POWER, MUSB_POWER_ISOUPDATE
|
||||
| MUSB_POWER_HSENAB
|
||||
/* ENSUSPEND wedges tusb */
|
||||
/* | MUSB_POWER_ENSUSPEND */
|
||||
);
|
||||
power = MUSB_POWER_ISOUPDATE;
|
||||
/*
|
||||
* treating UNKNOWN as unspecified maximum speed, in which case
|
||||
* we will default to high-speed.
|
||||
*/
|
||||
if (musb->config->maximum_speed == USB_SPEED_HIGH ||
|
||||
musb->config->maximum_speed == USB_SPEED_UNKNOWN)
|
||||
power |= MUSB_POWER_HSENAB;
|
||||
musb_writeb(regs, MUSB_POWER, power);
|
||||
|
||||
musb->is_active = 0;
|
||||
devctl = musb_readb(regs, MUSB_DEVCTL);
|
||||
|
|
|
@ -95,7 +95,7 @@ struct musb_hdrc_config {
|
|||
/* musb CLKIN in Blackfin in MHZ */
|
||||
unsigned char clkin;
|
||||
#endif
|
||||
|
||||
u32 maximum_speed;
|
||||
};
|
||||
|
||||
struct musb_hdrc_platform_data {
|
||||
|
|
Loading…
Reference in New Issue