diff --git a/[refs] b/[refs] index 8684e7b8d84e..04c6a32684ef 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0c6ef985ced753b60ecdc091fa49c3f5fa4a4f79 +refs/heads/master: 651f5e49dd3d369711bd622f4bc72c2fa30a3cf9 diff --git a/trunk/drivers/usb/renesas_usbhs/mod.c b/trunk/drivers/usb/renesas_usbhs/mod.c index 621f6cc50db6..74ef49e7dd5f 100644 --- a/trunk/drivers/usb/renesas_usbhs/mod.c +++ b/trunk/drivers/usb/renesas_usbhs/mod.c @@ -292,6 +292,14 @@ void usbhs_irq_callback_update(struct usbhs_priv *priv, struct usbhs_mod *mod) u16 intenb0 = 0; struct usbhs_mod_info *info = usbhs_priv_to_modinfo(priv); + /* + * BEMPENB/BRDYENB are picky. + * below method is required + * + * - clear INTSTS0 + * - update BEMPENB/BRDYENB + * - update INTSTS0 + */ usbhs_write(priv, INTENB0, 0); usbhs_write(priv, BEMPENB, 0); @@ -324,5 +332,6 @@ void usbhs_irq_callback_update(struct usbhs_priv *priv, struct usbhs_mod *mod) } } - usbhs_write(priv, INTENB0, intenb0); + if (intenb0) + usbhs_write(priv, INTENB0, intenb0); }