diff options
author | Peter Chen <peter.chen@freescale.com> | 2014-11-05 01:58:32 -0500 |
---|---|---|
committer | Peter Chen <peter.chen@freescale.com> | 2015-08-13 22:03:56 -0400 |
commit | ed6e5eb50f7f07561d6a40f18bc11484736098db (patch) | |
tree | dce4741eb70ab31c643693ea16ee5cb34f408668 /drivers/usb/chipidea | |
parent | 65668718f2c5b76d5f4513564a3c56672bb07892 (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.c | 12 |
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; |