aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/chipidea
diff options
context:
space:
mode:
authorPeter Chen <peter.chen@freescale.com>2014-11-05 01:58:32 -0500
committerPeter Chen <peter.chen@freescale.com>2015-08-13 22:03:56 -0400
commited6e5eb50f7f07561d6a40f18bc11484736098db (patch)
treedce4741eb70ab31c643693ea16ee5cb34f408668 /drivers/usb/chipidea
parent65668718f2c5b76d5f4513564a3c56672bb07892 (diff)
usb: chipidea: usbmisc_imx: add non-burst setting for imx6
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>
Diffstat (limited to 'drivers/usb/chipidea')
-rw-r--r--drivers/usb/chipidea/usbmisc_imx.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
index 3cefd49ddb00..5ddab30ee240 100644
--- a/drivers/usb/chipidea/usbmisc_imx.c
+++ b/drivers/usb/chipidea/usbmisc_imx.c
@@ -54,6 +54,7 @@
54#define MX53_USB_PHYCTRL1_PLLDIV_MASK 0x3 54#define MX53_USB_PHYCTRL1_PLLDIV_MASK 0x3
55#define MX53_USB_PLL_DIV_24_MHZ 0x01 55#define MX53_USB_PLL_DIV_24_MHZ 0x01
56 56
57#define MX6_BM_NON_BURST_SETTING BIT(1)
57#define MX6_BM_OVER_CUR_DIS BIT(7) 58#define MX6_BM_OVER_CUR_DIS BIT(7)
58#define MX6_BM_WAKEUP_ENABLE BIT(10) 59#define MX6_BM_WAKEUP_ENABLE BIT(10)
59#define MX6_BM_ID_WAKEUP BIT(16) 60#define MX6_BM_ID_WAKEUP BIT(16)
@@ -255,14 +256,21 @@ static int usbmisc_imx6q_init(struct imx_usbmisc_data *data)
255 if (data->index > 3) 256 if (data->index > 3)
256 return -EINVAL; 257 return -EINVAL;
257 258
259 spin_lock_irqsave(&usbmisc->lock, flags);
260
258 if (data->disable_oc) { 261 if (data->disable_oc) {
259 spin_lock_irqsave(&usbmisc->lock, flags);
260 reg = readl(usbmisc->base + data->index * 4); 262 reg = readl(usbmisc->base + data->index * 4);
261 writel(reg | MX6_BM_OVER_CUR_DIS, 263 writel(reg | MX6_BM_OVER_CUR_DIS,
262 usbmisc->base + data->index * 4); 264 usbmisc->base + data->index * 4);
263 spin_unlock_irqrestore(&usbmisc->lock, flags);
264 } 265 }
265 266
267 /* SoC non-burst setting */
268 reg = readl(usbmisc->base + data->index * 4);
269 writel(reg | MX6_BM_NON_BURST_SETTING,
270 usbmisc->base + data->index * 4);
271
272 spin_unlock_irqrestore(&usbmisc->lock, flags);
273
266 usbmisc_imx6q_set_wakeup(data, false); 274 usbmisc_imx6q_set_wakeup(data, false);
267 275
268 return 0; 276 return 0;