[U-Boot] [PATCH v1 2/3] arm: socfpga: stratix10: Add Stratix10 FPGA into FPGA device table

Marek Vasut marex at denx.de
Fri Apr 27 07:08:52 UTC 2018


On 04/27/2018 07:31 AM, Ang, Chee Hong wrote:
> On Thu, 2018-04-26 at 14:38 +0200, Marek Vasut wrote:
>> On 04/26/2018 08:15 AM, Ang, Chee Hong wrote:
>>>
>>> On Fri, 2018-04-20 at 05:42 +0200, Marek Vasut wrote:
>>>>
>>>> On 04/20/2018 05:26 AM, chee.hong.ang at intel.com wrote:
>>>>>
>>>>>
>>>>> From: Chee Hong Ang <chee.hong.ang at intel.com>
>>>>>
>>>>> Enable 'fpga' command in u-boot. User will be able to use the
>>>>> fpga command to program the FPGA on Stratix10 SoC.
>>>>>
>>>>> Signed-off-by: Chee Hong Ang <chee.hong.ang at intel.com>
>>>>> ---
>>>>>  arch/arm/mach-socfpga/misc.c     | 20 +++++++++++++++++---
>>>>>  arch/arm/mach-socfpga/misc_s10.c |  4 ++++
>>>>>  drivers/fpga/altera.c            |  6 ++++++
>>>>>  include/altera.h                 |  8 ++++++++
>>>>>  4 files changed, 35 insertions(+), 3 deletions(-)
>>>>>
>>>>> diff --git a/arch/arm/mach-socfpga/misc.c b/arch/arm/mach-
>>>>> socfpga/misc.c
>>>>> index d15cbc7..e36c686 100644
>>>>> --- a/arch/arm/mach-socfpga/misc.c
>>>>> +++ b/arch/arm/mach-socfpga/misc.c
>>>>> @@ -87,11 +87,24 @@ int overwrite_console(void)
>>>>>  #endif
>>>>>  
>>>>>  #ifdef CONFIG_FPGA
>>>>> -/*
>>>>> - * FPGA programming support for SoC FPGA Cyclone V
>>>>> - */
>>>>>  static Altera_desc altera_fpga[] = {
>>>>>  	{
>>>>> +#ifdef CONFIG_FPGA_STRATIX10
>>>> Create a separate structure for each FPGA family.
>>> Will be addressed in v2 patch.
>>>>
>>>>
>>>>>
>>>>>
>>>>> +		/* FPGA programming support for SoC FPGA
>>>>> Stratix
>>>>> 10 */
>>>>> +		/* Family */
>>>>> +		Intel_FPGA_Stratix10,
>>>>> +		/* Interface type */
>>>>> +		secure_device_manager_mailbox,
>>>>> +		/* No limitation as additional data will be
>>>>> ignored */
>>>>> +		-1,
>>>>> +		/* No device function table */
>>>>> +		NULL,
>>>>> +		/* Base interface address specified in driver
>>>>> */
>>>>> +		NULL,
>>>>> +		/* No cookie implementation */
>>>>> +		0
>>>>> +#else
>>>>> +		/* FPGA programming support for SoC FPGA
>>>>> Cyclone V
>>>>> */
>>>>>  		/* Family */
>>>>>  		Altera_SoCFPGA,
>>>>>  		/* Interface type */
>>>>> @@ -104,6 +117,7 @@ static Altera_desc altera_fpga[] = {
>>>>>  		NULL,
>>>>>  		/* No cookie implementation */
>>>>>  		0
>>>>> +#endif
>>>>>  	},
>>>>>  };
>>>>>  
>>>>> diff --git a/arch/arm/mach-socfpga/misc_s10.c b/arch/arm/mach-
>>>>> socfpga/misc_s10.c
>>>>> index b1cc6ca..012d8f6 100644
>>>>> --- a/arch/arm/mach-socfpga/misc_s10.c
>>>>> +++ b/arch/arm/mach-socfpga/misc_s10.c
>>>>> @@ -71,6 +71,10 @@ int arch_misc_init(void)
>>>>>  
>>>>>  int arch_early_init_r(void)
>>>>>  {
>>>>> +#ifdef CONFIG_FPGA
>>>>> +	socfpga_fpga_add();
>>>>> +#endif
>>>>> +
>>>>>  	return 0;
>>>>>  }
>>>>>  
>>>>> diff --git a/drivers/fpga/altera.c b/drivers/fpga/altera.c
>>>>> index 135a357..b662ff5 100644
>>>>> --- a/drivers/fpga/altera.c
>>>>> +++ b/drivers/fpga/altera.c
>>>>> @@ -40,6 +40,9 @@ static const struct altera_fpga {
>>>>>  #if defined(CONFIG_FPGA_STRATIX_V)
>>>>>  	{ Altera_StratixV, "StratixV", stratixv_load, NULL,
>>>>> NULL
>>>>> },
>>>>>  #endif
>>>>> +#if defined(CONFIG_FPGA_STRATIX10)
>>>>> +	{ Intel_FPGA_Stratix10, "Stratix10", stratix10_load,
>>>>> NULL,
>>>>> NULL },
>>>>> +#endif
>>>>>  #if defined(CONFIG_FPGA_SOCFPGA)
>>>>>  	{ Altera_SoCFPGA, "SoC FPGA", socfpga_load, NULL, NULL
>>>>> },
>>>>>  #endif
>>>>> @@ -155,6 +158,9 @@ int altera_info(Altera_desc *desc)
>>>>>  	case fast_passive_parallel_security:
>>>>>  		printf("Fast Passive Parallel with Security
>>>>> (FPPS)\n");
>>>>>  		break;
>>>>> +	case secure_device_manager_mailbox:
>>>>> +		puts("Secure Device Manager (SDM) Mailbox\n");
>>>>> +		break;
>>>>>  		/* Add new interface types here */
>>>>>  	default:
>>>>>  		printf("Unsupported interface type, %d\n",
>>>>> desc-
>>>>>>
>>>>>> iface);
>>>>> diff --git a/include/altera.h b/include/altera.h
>>>>> index 48d3eb7..e9ba47a 100644
>>>>> --- a/include/altera.h
>>>>> +++ b/include/altera.h
>>>>> @@ -40,6 +40,8 @@ enum altera_iface {
>>>>>  	fast_passive_parallel,
>>>>>  	/* fast passive parallel with security (FPPS) */
>>>>>  	fast_passive_parallel_security,
>>>>> +	/* secure device manager (SDM) mailbox */
>>>>> +	secure_device_manager_mailbox,
>>>>>  	/* insert all new types before this */
>>>>>  	max_altera_iface_type,
>>>>>  };
>>>>> @@ -55,6 +57,8 @@ enum altera_family {
>>>>>  	Altera_StratixII,
>>>>>  	/* StratixV Family */
>>>>>  	Altera_StratixV,
>>>>> +	/* Stratix10 Family */
>>>>> +	Intel_FPGA_Stratix10,
>>>>>  	/* SoCFPGA Family */
>>>>>  	Altera_SoCFPGA,
>>>>>  
>>>>> @@ -117,4 +121,8 @@ int socfpga_load(Altera_desc *desc, const
>>>>> void
>>>>> *rbf_data, size_t rbf_size);
>>>>>  int stratixv_load(Altera_desc *desc, const void *rbf_data,
>>>>> size_t
>>>>> rbf_size);
>>>>>  #endif
>>>>>  
>>>>> +#ifdef CONFIG_FPGA_STRATIX10
>>>>> +int stratix10_load(Altera_desc *desc, const void *rbf_data,
>>>>> size_t
>>>>> rbf_size);
>>>> What is this doing here ?
>>> When user issue 'fpga load' command at uboot command prompt to do
>>> FPGA
>>> programming, this call back function will be invoked.
>> I mean, why is it part of this patch ? It's not implemented by this
>> patch.
> It's implemented in 1/3 patch. This callback function is needed in
> drivers/fpga/altera.c to perform device specific FPGA programming. I
> can can move this function declaration into another header file.

If it's added in 1/3 , then this should also be in 1/3 .

-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list