MX6SX_USB_VBUS_WAKEUP_SOURCE are two bits containing an enum value, so when read/modify/write that we have to clear both bits bits before setting the desired bits. The clearing of the bits was forgotten, add it. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> Reviewed-by: Xu Yang <xu.yang_2@xxxxxxx> Link: https://lore.kernel.org/r/20221011082924.884123-3-s.hauer@xxxxxxxxxxxxxx Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- drivers/usb/chipidea/usbmisc_imx.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index 8f805aa9c383c..e1b4b7f9b3f31 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -551,6 +551,7 @@ static int usbmisc_imx6sx_init(struct imx_usbmisc_data *data) spin_lock_irqsave(&usbmisc->lock, flags); /* Set vbus wakeup source as bvalid */ val = readl(reg); + val &= ~MX6SX_USB_VBUS_WAKEUP_SOURCE(3); writel(val | MX6SX_USB_VBUS_WAKEUP_SOURCE_BVALID, reg); /* * Disable dp/dm wakeup in device mode when vbus is -- 2.30.2