diff mbox

[07/10] usb: chipidea: usbmisc_imx: add unburst setting for imx6

Message ID 1438137734-27311-8-git-send-email-peter.chen@freescale.com (mailing list archive)
State New, archived
Headers show

Commit Message

Peter Chen July 29, 2015, 2:42 a.m. UTC
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>
---
 drivers/usb/chipidea/usbmisc_imx.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

Comments

Peter Chen July 29, 2015, 7:57 a.m. UTC | #1
On Wed, Jul 29, 2015 at 10:30:22AM +0200, Lothar Waßmann wrote:
> Hi,
> 
> > 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.
> > 
> What is an 'unburst'?
> 

Assume burst size is 8 dword, unburst size 't' < 8.

With this feature, 't' length payload can be taken
as one burst transfer, otherwise, the single transfer
(1 dword) will be used.
Lothar Waßmann July 29, 2015, 8:30 a.m. UTC | #2
Hi,

> 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.
> 
What is an 'unburst'?


Lothar Waßmann
Lothar Waßmann July 29, 2015, 10:19 a.m. UTC | #3
Hi,

> On Wed, Jul 29, 2015 at 10:30:22AM +0200, Lothar Waßmann wrote:
> > Hi,
> > 
> > > 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.
> > > 
> > What is an 'unburst'?
> > 
> 
> Assume burst size is 8 dword, unburst size 't' < 8.
> 
> With this feature, 't' length payload can be taken
> as one burst transfer, otherwise, the single transfer
> (1 dword) will be used.
> 
IMO non-burst would be a better word.


Lothar Waßmann
Peter Chen July 30, 2015, 2:36 a.m. UTC | #4
> > On Wed, Jul 29, 2015 at 10:30:22AM +0200, Lothar Waßmann wrote:

> > > Hi,

> > >

> > > > 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.

> > > >

> > > What is an 'unburst'?

> > >

> >

> > Assume burst size is 8 dword, unburst size 't' < 8.

> >

> > With this feature, 't' length payload can be taken as one burst

> > transfer, otherwise, the single transfer

> > (1 dword) will be used.

> >

> IMO non-burst would be a better word.

> 


Thanks, will change.

Peter
diff mbox

Patch

diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
index 3cefd49..69d39dc 100644
--- a/drivers/usb/chipidea/usbmisc_imx.c
+++ b/drivers/usb/chipidea/usbmisc_imx.c
@@ -54,6 +54,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_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 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;