drivers:usb:fsl: Implement Erratum A-009116 for XHCI controller
Subsystems (2)
PATCH 1/1 drivers:usb:fsl: Implement Erratum A-009116 for XHCI controller
This adjusts (micro)frame length to appropriate value thus avoiding USB devices to time out over a longer run
---
Depends on fsl/usb: Add USB XHCI support
http://patchwork.ozlabs.org/patch/373593/
drivers/usb/host/xhci-fsl.c | 9 +++++++++ include/linux/usb/dwc3.h | 19 +++++++++++++------ include/linux/usb/xhci-fsl.h | 2 ++ 3 files changed, 24 insertions(+), 6 deletions(-)
drivers/usb/host/xhci-fsl.c +9 -0
@@ -29,6 +29,12 @@ inline int __board_usb_init(int index, enum usb_init_type init)int board_usb_init (int index,enum usb_init_type init) __attribute__((weak,alias ("__board_usb_init" ))); +static void dwc3_set_fladj (struct dwc3 *dwc3_reg,u32 val) +{ +setbits_le32 (&dwc3_reg->g_fladj,GFLADJ_30MHZ_REG_SEL | +GFLADJ_30MHZ (val)); +} +static void dwc3_set_mode (struct dwc3 *dwc3_reg,u32 mode) { clrsetbits_le32(&dwc3_reg->g_ctl,
@@ -100,6 +106,9 @@ static int fsl_xhci_core_init(struct fsl_xhci *fsl_xhci)/* We are hard-coding DWC3 core to Host Mode */ dwc3_set_mode (fsl_xhci->dwc3_reg,DWC3_GCTL_PRTCAP_HOST ); +/* Set GFLADJ_30MHZ value as per Erratum A009116 */ +dwc3_set_fladj (fsl_xhci->dwc3_reg,GFLADJ_30MHZ_DEFAULT ); +return ret; }
include/linux/usb/dwc3.h +13 -6
@@ -109,7 +109,11 @@ struct dwc3 { /* offset: 0xC100 */u32 g_hwparams8; -u32 reserved4[63 ]; +u32 reserved4[11 ]; + +u32 g_fladj; + +u32 reserved5[51 ];u32 d_cfg;u32 d_ctl;
@@ -118,15 +122,15 @@ struct dwc3 { /* offset: 0xC100 */u32 d_gcmdpar;u32 d_gcmd; -u32 reserved5[2 ]; +u32 reserved6[2 ];u32 d_alepena; -u32 reserved6[55 ]; +u32 reserved7[55 ];struct d_physical_endpoint d_phy_ep_cmd[32 ]; -u32 reserved7[128 ]; +u32 reserved8[128 ];u32 o_cfg;u32 o_ctl;
@@ -134,7 +138,7 @@ struct dwc3 { /* offset: 0xC100 */u32 o_evten;u32 o_sts; -u32 reserved8[3 ]; +u32 reserved9[3 ];u32 adp_cfg;u32 adp_ctl;
@@ -143,7 +147,7 @@ struct dwc3 { /* offset: 0xC100 */u32 bc_cfg; -u32 reserved9; +u32 reserved10;u32 bc_evt;u32 bc_evten;
@@ -191,4 +195,7 @@ struct dwc3 { /* offset: 0xC100 */#define DWC3_DCTL_CSFTRST (1 << 30)#define DWC3_DCTL_LSFTRST (1 << 29) +/* Global Frame Length Adjustment Register */ +#define GFLADJ_30MHZ_REG_SEL (1 << 7) +#define GFLADJ_30MHZ (n) ((n) & 0x3f)#endif /* __DWC3_H_ */
include/linux/usb/xhci-fsl.h +2 -0
@@ -10,6 +10,8 @@#ifndef _ASM_ARCH_XHCI_FSL_H_#define _ASM_ARCH_XHCI_FSL_H_ +#define GFLADJ_30MHZ_DEFAULT 0x20 +/* USBOTGSS_WRAPPER definitions */ #define USBOTGSS_WRAPRESET (1 << 17)#define USBOTGSS_DMADISABLE (1 << 16)
Signature · 1 line
1.7.11.7
PATCH 1/1 drivers:usb:fsl: Implement Erratum A-009116 for XHCI controller
Quoted 4 lines · Nikhil Badola
This adjusts (micro)frame length to appropriate value thus avoiding USB devices to time out over a longer run
Signed-off-by Nikhil Badola <[email protected]>
Hi,
it seems the XHCI driver from Freescale was never applied, since no maintainer was ever in CC and there was no effort from the author to contact anyone after sending it out. That's rather unfortunate.
I briefly reviewed the driver which you linked and it seems like it is almost exact copy of the xhci-omap.c . We certainly don't want this level of code duplication.
Would it be possible for you to pick up that driver, work your change into it, avoid the code duplication and repost the whole thing please ?
Best regards,
Marek Vasut
PATCH 1/1 drivers:usb:fsl: Implement Erratum A-009116 for XHCI controller
Quoted 12 lines
-----Original Message-----
From: Marek Vasut [mailto:marex at denx.de]
Sent: Thursday, April 02, 2015 10:32 PM
To: Badola Nikhil-B46172
Cc: u-boot at lists.denx.de
Subject: Re: [PATCH] drivers:usb:fsl: Implement Erratum A-009116 for XHCI controllerQuoted 3 lines · Nikhil Badola
This adjusts (micro)frame length to appropriate value thus avoiding USB devices to time out over a longer run
Quoted 7 lines
Quoted 1 line
Signed-off-by Nikhil Badola <[email protected]>Hi,
it seems the XHCI driver from Freescale was never applied, since no maintainer was ever in CC and there was no effort from the author to contact anyone after sending it out. That's rather unfortunate.
Freescale XHCI driver's author is already talking with HW teams to see if there's some PHY shutdown sequence available for FSL socs...hence the delay.
Quoted 5 lines
I briefly reviewed the driver which you linked and it seems like it is almost exact copy of the
xhci-omap.c. We certainly don't want this level of code duplication.
I agree with the fact that code duplication should be minimized. However the driver for same controller would follow same initialization steps...until an effort is made in open-source by someone to write a single driver file with common initialization code, this code will keep getting duplicated.
Quoted 5 lines
Would it be possible for you to pick up that driver, work your change into it, avoid the code duplication and repost the whole thing please ?
Best regards,
Marek Vasut
PATCH 1/1 drivers:usb:fsl: Implement Erratum A-009116 for XHCI controller
Quoted 16 lines · nikhil.badola at freescale.com
Quoted 16 lines
-----Original Message-----
From: Marek Vasut [mailto:marex at denx.de]
Sent: Thursday, April 02, 2015 10:32 PM
To: Badola Nikhil-B46172
Cc: u-boot at lists.denx.de
Subject: Re: [PATCH] drivers:usb:fsl: Implement Erratum A-009116 for XHCI controllerQuoted 4 lines · Nikhil Badola
This adjusts (micro)frame length to appropriate value thus avoiding USB devices to time out over a longer run
Signed-off-by Nikhil Badola <[email protected]>Hi,
Quoted 7 lines
Quoted 3 lines
it seems the XHCI driver from Freescale was never applied, since no maintainer was ever in CC and there was no effort from the author to contact anyone after sending it out. That's rather unfortunate.
Freescale XHCI driver's author is already talking with HW teams to see if there's some PHY shutdown sequence available for FSL socs...hence the delay.
Hi, OK.
Quoted 9 lines
Quoted 3 lines
I briefly reviewed the driver which you linked and it seems like it is almost exact copy of the
xhci-omap.c. We certainly don't want this level of code duplication.I agree with the fact that code duplication should be minimized. However the driver for same controller would follow same initialization steps...until an effort is made in open-source by someone to write a single driver file with common initialization code, this code will keep getting duplicated.
I agree. I won't allow such explicitly duplicated code in, so it's up to you to do the deduplication. Thanks :)
Quoted 5 lines
Quoted 5 lines
Would it be possible for you to pick up that driver, work your change into it, avoid the code duplication and repost the whole thing please ?
Best regards,
Marek Vasut
Best regards,
Marek Vasut