]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
usb: chipidea: usbmisc_imx: add non-burst setting for imx6
authorPeter Chen <peter.chen@freescale.com>
Wed, 5 Nov 2014 06:58:32 +0000 (14:58 +0800)
committerPeter Chen <peter.chen@freescale.com>
Fri, 14 Aug 2015 02:03:56 +0000 (10:03 +0800)
With this setting and AHBBRST at SBUSCFG as "Incremental burst of
unspecified length", each non-burst size can be taken as single
transfer. It is benefit for non-burst size transfer.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
drivers/usb/chipidea/usbmisc_imx.c

index 3cefd49ddb00facd9e70cc83336e922d3e596eec..5ddab30ee240937d15d54cda0ad6642ea02247b5 100644 (file)
@@ -54,6 +54,7 @@
 #define MX53_USB_PHYCTRL1_PLLDIV_MASK  0x3
 #define MX53_USB_PLL_DIV_24_MHZ                0x01
 
+#define MX6_BM_NON_BURST_SETTING       BIT(1)
 #define MX6_BM_OVER_CUR_DIS            BIT(7)
 #define MX6_BM_WAKEUP_ENABLE           BIT(10)
 #define MX6_BM_ID_WAKEUP               BIT(16)
@@ -255,14 +256,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 non-burst setting */
+       reg = readl(usbmisc->base + data->index * 4);
+       writel(reg | MX6_BM_NON_BURST_SETTING,
+                       usbmisc->base + data->index * 4);
+
+       spin_unlock_irqrestore(&usbmisc->lock, flags);
+
        usbmisc_imx6q_set_wakeup(data, false);
 
        return 0;