]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
MLK-9785-5 usb: chipidea: usbmisc_imx: add unburst setting for imx6
authorPeter Chen <peter.chen@freescale.com>
Wed, 5 Nov 2014 06:58:32 +0000 (14:58 +0800)
committerLi Jun <jun.li@freescale.com>
Tue, 27 Jan 2015 01:10:30 +0000 (09:10 +0800)
With this setting and AHBBRST at SBUSCFG as "Incremental burst of
unspecified length", each unburst size can be taken as one single transfer.
It is benefit for unburst size transfer.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
(cherry picked from commit bf1c51efe90898d701b33a4de745680a8ba07554)

drivers/usb/chipidea/usbmisc_imx.c

index 3abe742b3684c7198b6a3661ce10fff5f20cdc51..e9a253637523965f50d53ce1376612a68c2c96c4 100644 (file)
@@ -55,6 +55,7 @@
 #define MX53_USB_PHYCTRL1_PLLDIV_MASK  0x3
 #define MX53_USB_PLL_DIV_24_MHZ                0x01
 
+#define MX6_BM_UNBURST_SETTING         BIT(1)
 #define MX6_BM_OVER_CUR_DIS            BIT(7)
 #define MX6_BM_WAKEUP_ENABLE           BIT(10)
 #define MX6_BM_UTMI_ON_CLOCK           BIT(13)
@@ -321,14 +322,21 @@ static int usbmisc_imx6q_init(struct imx_usbmisc_data *data)
        if (data->index > 3)
                return -EINVAL;
 
+       spin_lock_irqsave(&usbmisc->lock, flags);
+
        if (data->disable_oc) {
-               spin_lock_irqsave(&usbmisc->lock, flags);
                reg = readl(usbmisc->base + data->index * 4);
                writel(reg | MX6_BM_OVER_CUR_DIS,
                        usbmisc->base + data->index * 4);
-               spin_unlock_irqrestore(&usbmisc->lock, flags);
        }
 
+       /* SoC unburst setting */
+       reg = readl(usbmisc->base + data->index * 4);
+       writel(reg | MX6_BM_UNBURST_SETTING,
+                       usbmisc->base + data->index * 4);
+
+       spin_unlock_irqrestore(&usbmisc->lock, flags);
+
        usbmisc_imx6q_set_wakeup(data, false);
 
        return 0;