[U-Boot] [PATCH] armv8: layerscape: Enable EHCI access for LS1012A

York Sun york.sun at nxp.com
Thu Jul 26 17:04:33 UTC 2018


On 07/25/2018 10:27 PM, Ran Wang wrote:
> Hi York,
> 
>> -----Original Message-----
>> From: York Sun
>> Sent: Tuesday, July 24, 2018 23:40
>> To: Ran Wang <ran.wang_1 at nxp.com>; Albert Aribaud
>> <albert.u.boot at aribaud.net>
>> Cc: u-boot at lists.denx.de
>> Subject: Re: [PATCH] armv8: layerscape: Enable EHCI access for LS1012A
>>
>> On 07/10/2018 07:11 PM, Ran Wang wrote:
>>> Hi York,
>>>
>>>> -----Original Message-----
>>>> From: York Sun
>>>> Sent: Wednesday, July 11, 2018 05:06
>>>> To: Ran Wang <ran.wang_1 at nxp.com>; Albert Aribaud
>>>> <albert.u.boot at aribaud.net>
>>>> Cc: u-boot at lists.denx.de
>>>> Subject: Re: [PATCH] armv8: layerscape: Enable EHCI access for
>>>> LS1012A
>>>>
>>>> On 07/02/2018 10:34 PM, Ran Wang wrote:
>>>>> Program Central Security Unit (CSU) to grant access permission for
>>>>> USB
>>>>> 2.0 controller, otherwiase EHCI funciton will down.
>>>>>
>>>>> Signed-off-by: Ran Wang <ran.wang_1 at nxp.com>
>>>>> ---
>>>>>  arch/arm/cpu/armv8/fsl-layerscape/soc.c              | 8 ++++++++
>>>>>  arch/arm/include/asm/arch-fsl-layerscape/ns_access.h | 1 +
>>>>>  2 files changed, 9 insertions(+)
>>>>>
>>>>> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/soc.c
>>>>> b/arch/arm/cpu/armv8/fsl-layerscape/soc.c
>>>>> index 6a56269..2c4cf7f 100644
>>>>> --- a/arch/arm/cpu/armv8/fsl-layerscape/soc.c
>>>>> +++ b/arch/arm/cpu/armv8/fsl-layerscape/soc.c
>>>>> @@ -14,6 +14,7 @@
>>>>>  #include <asm/io.h>
>>>>>  #include <asm/global_data.h>
>>>>>  #include <asm/arch-fsl-layerscape/config.h>
>>>>> +#include <asm/arch-fsl-layerscape/ns_access.h>
>>>>>  #ifdef CONFIG_LAYERSCAPE_NS_ACCESS
>>>>>  #include <fsl_csu.h>
>>>>>  #endif
>>>>> @@ -668,6 +669,13 @@ void fsl_lsch2_early_init_f(void)
>>>>>  			 CCI400_DVM_MESSAGE_REQ_EN |
>>>> CCI400_SNOOP_REQ_EN);
>>>>>  	}
>>>>>
>>>>> +	/*
>>>>> +	 * Program Central Security Unit (CSU) to grant access
>>>>> +	 * permission for USB 2.0 controller
>>>>> +	 */
>>>>> +#if defined(CONFIG_ARCH_LS1012A) &&
>> defined(CONFIG_USB_EHCI_FSL)
>>>>> +	set_devices_ns_access(CSU_CSLX_USB_2, CSU_ALL_RW); #endif
>>>>
>>>> Is this LS1012A specific?
>>>>
>>> For Layerscape platforms, only LS1012A and LS1021A have USB2.0(EHCI)
>>> controller, Others have USB3.0 controller only. For now I can only
>>> verify on LS1012A, so didn't cover LS1021A yet.
>>>
>>
>> Ran,
>>
>> I think calling function set_devices_ns_access() may have an issue. It is not
>> EL2 safe, is it? Please check enable_layerscape_ns_access(). It detects
>> exception level before accessing EL3-only registers.
>>
> Yes, I re-checked the code and the experiments prove your point, I will send v2 patch soon.
> Thanks for reminding.
> 
> BTW, I observed that in function board_late_init(), the return value of current_el() will be different:
> Case 1: Boot with PPA: return 2
>     ...
>     Using SERDES1 Protocol: 13576 (0x3508)
>     PPA Firmware: Version LSDK-1712-TC1-dirty
>     SEC Firmware: 'loadables' present in config
>     loadables: 'trustedOS at 1'
>     ...
>     FPGA: v4 (LS1012QDS_2016_0405_1443), build 100 on Tue Apr 05 09:13:13 2016
>     wangran!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>     current_el():2
> 
> Case 2: without PPA: return 3
>    ...
>    Using SERDES1 Protocol: 13576 (0x3508)
>    SEC Firmware: config-1: no such config
>    SEC Firmware: error (-2)
>    SEC Firmware: Failed to load image
>    ...
>    FPGA: v4 (LS1012QDS_2016_0405_1443), build 100 on Tue Apr 05 09:13:13 2016
>    wangran!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>    current_el():3
> 
> Do you know the reason?
> 

That's exactly what PPA does -- drop to EL2.

York


More information about the U-Boot mailing list