[U-Boot] [PATCH v2] drivers: usb: xhci-fsl: Implement Erratum A-010151 for FSL USB3 controller

Sriram Dash sriram.dash at nxp.com
Fri Aug 26 13:21:28 CEST 2016


>From: Marek Vasut [mailto:marex at denx.de]
>On 08/26/2016 12:57 PM, Sriram Dash wrote:
>>> From: Marek Vasut [mailto:marex at denx.de] On 08/26/2016 12:31 PM,
>>> Sriram Dash wrote:
>>>>> From: Marek Vasut [mailto:marex at denx.de] On 08/25/2016 08:47 AM,
>>>>> Sriram Dash wrote:
>>>>>>> From: Marek Vasut [mailto:marex at denx.de] On 08/24/2016 12:39 PM,
>>>>>>> Sriram Dash wrote:
>>>>>>>> Currently the controller by default enables the Receive Detect
>>>>>>>> feature in P3 mode in USB 3.0 PHY. However, USB 3.0 PHY does not
>>>>>>>> reliably support receive detection in P3 mode.
>>>>>>>> Enabling the USB3 controller to configure USB in P2 mode
>>>>>>>> whenever the Receive Detect feature is required.
>>>>>>>>
>>>>>>>> Signed-off-by: Sriram Dash <sriram.dash at nxp.com>
>>>>>>>> Signed-off-by: Rajesh Bhagat <rajesh.bhagat at nxp.com>
>>>>>>>> ---
>>>>>>>> Changes in v2:
>>>>>>>>   - Do Soc ver checking for applying erratum
>>>>>>>>
>>>>>>>>  drivers/usb/common/fsl-errata.c | 26 ++++++++++++++++++++++++++
>>>>>>>>  drivers/usb/host/xhci-dwc3.c    |  5 +++++
>>>>>>>>  drivers/usb/host/xhci-fsl.c     |  8 ++++++++
>>>>>>>>  include/fsl_usb.h               |  1 +
>>>>>>>>  include/linux/usb/dwc3.h        |  2 ++
>>>>>>>>  5 files changed, 42 insertions(+)
>>>>>>>>
>>>>>>>> diff --git a/drivers/usb/common/fsl-errata.c
>>>>>>>> b/drivers/usb/common/fsl-errata.c index 183bf2b..f2bffba 100644
>>>>>>>> --- a/drivers/usb/common/fsl-errata.c
>>>>>>>> +++ b/drivers/usb/common/fsl-errata.c
>>>>>>>> @@ -190,4 +190,30 @@ bool has_erratum_a008751(void)
>>>>>>>>  	return false;
>>>>>>>>  }
>>>>>>>>
>>>>>>>> +bool has_erratum_a010151(void)
>>>>>>>> +{
>>>>>>>> +	u32 svr = get_svr();
>>>>>>>> +	u32 soc = SVR_SOC_VER(svr);
>>>>>>>> +
>>>>>>>> +	switch (soc) {
>>>>>>>> +#ifdef CONFIG_ARM64
>>>>>>>> +	case SVR_LS2080A:
>>>>>>>> +	case SVR_LS2085A:
>>>>>>>> +	case SVR_LS1046A:
>>>>>>>> +	case SVR_LS1012A:
>>>>>>>> +		return IS_SVR_REV(svr, 1, 0);
>>>>>>>> +	case SVR_LS1043A:
>>>>>>>> +		return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1);
>#endif
>>>>>>>> +#ifdef CONFIG_LS102XA
>>>>>>>> +	case SOC_VER_LS1020:
>>>>>>>> +	case SOC_VER_LS1021:
>>>>>>>> +	case SOC_VER_LS1022:
>>>>>>>> +	case SOC_VER_SLS1020:
>>>>>>>> +		return IS_SVR_REV(svr, 2, 0); #endif
>>>>>>>> +	}
>>>>>>>
>>>>>>> Is the ifdef really needed ?
>>>>>>>
>>>>>>
>>>>>> Yes. The SVR (SVR_LS2080A, SOC_VER_LS1020) are defined in
>>>>>> different ARCH specific files. So, we have used the ifdefs.
>>>>>
>>>>> Or you can just include all of the headers and then you don't need the ifdef, no
>?
>>>>>
>>>>
>>>> The headers for the respective ARCHs are included in fsl_errata.h
>>>> file. But, there are some macros/structs/variables which are common
>>>> across the ARCHs, for example: DCFG_DCSR_PORCR1,
>>>> RCW_SB_EN_REG_INDEX, sys_info, etc. So, they are also kept inside the ifdefs.
>>>
>>> I don't understand your argument. What happens if you remove the ifdefs?
>>>
>>
>> The fsl_errata.h file includes the headers asm/processor.h(for PPC),
>> asm/arch-ls102xa/immap_ls102xa.h( for LS1), asm/arch/soc.h(for Layerscape).
>> As some macros/structs are common across the ARCH, if we remove the
>> ifdefs, we may
>
>may or will ?
>

They will cause compilation issues.

>> experience compilation error on redefinition of the macros and structs.
>
>And these are not easy to fix ?
>

There will be many ARCH specific modifications required for carrying
out the changes involving a lot of affected Socs. We will take it up in
the near future.

>> So, the ifdefs are necessary.
>>
>>> --
>>> Best regards,
>>> Marek Vasut
>
>
>--
>Best regards,
>Marek Vasut


More information about the U-Boot mailing list