MLK-22280-1 usb: chipidea: usbmisc: add missing spin lock
authorLi Jun <jun.li@nxp.com>
Wed, 17 Jul 2019 08:47:01 +0000 (16:47 +0800)
committerLi Jun <jun.li@nxp.com>
Wed, 24 Jul 2019 07:26:25 +0000 (15:26 +0800)
Add missing spinlock for imx7d_charger_secondary_detection().

Acked-by: Peter Chen <peter.chen@nxp.com>
Signed-off-by: Li Jun <jun.li@nxp.com>
drivers/usb/chipidea/usbmisc_imx.c

index 558ac44..1939e19 100644 (file)
@@ -720,9 +720,11 @@ static int imx7d_charger_secondary_detection(struct imx_usbmisc_data *data)
 {
        struct imx_usbmisc *usbmisc = dev_get_drvdata(data->dev);
        struct usb_phy *usb_phy = data->usb_phy;
+       unsigned long flags;
        int val, bak_val;
 
        /* Pull up DP */
+       spin_lock_irqsave(&usbmisc->lock, flags);
        val = readl(usbmisc->base + MX7D_USBNC_USB_CTRL2);
        bak_val = val;
        val &= ~MX7D_USBNC_USB_CTRL2_DP_DM_MASK;
@@ -731,9 +733,11 @@ static int imx7d_charger_secondary_detection(struct imx_usbmisc_data *data)
        val |= MX7D_USBNC_USB_CTRL2_TERMSEL_OVERRIDE_EN |
                MX7D_USBNC_USB_CTRL2_TERMSEL_OVERRIDE_VAL;
        writel(val, usbmisc->base + MX7D_USBNC_USB_CTRL2);
+       spin_unlock_irqrestore(&usbmisc->lock, flags);
 
        msleep(80);
 
+       spin_lock_irqsave(&usbmisc->lock, flags);
        val = readl(usbmisc->base + MX7D_USB_OTG_PHY_STATUS);
        if (val & MX7D_USB_OTG_PHY_STATUS_LINE_STATE1) {
                dev_dbg(data->dev, "It is a dedicate charging port\n");
@@ -743,6 +747,7 @@ static int imx7d_charger_secondary_detection(struct imx_usbmisc_data *data)
                usb_phy->chg_type = CDP_TYPE;
        }
        writel(bak_val, usbmisc->base + MX7D_USBNC_USB_CTRL2);
+       spin_unlock_irqrestore(&usbmisc->lock, flags);
 
        return 0;
 }