diff mbox series

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

Message ID 1524194806-4821-3-git-send-email-chee.hong.ang@intel.com
State Superseded
Delegated to: Marek Vasut
Headers show
Series Stratix10 FPGA reconfiguration support | expand

Commit Message

Ang, Chee Hong April 20, 2018, 3:26 a.m. UTC
From: Chee Hong Ang <chee.hong.ang@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@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(-)

Comments

Ang, Chee Hong April 26, 2018, 6:15 a.m. UTC | #1
On Fri, 2018-04-20 at 05:42 +0200, Marek Vasut wrote:
> On 04/20/2018 05:26 AM, chee.hong.ang@intel.com wrote:
> > 
> > From: Chee Hong Ang <chee.hong.ang@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@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.
> 
> > 
> > +#endif
> > +
> >  #endif /* _ALTERA_H_ */
> > 
>
Marek Vasut April 26, 2018, 12:38 p.m. UTC | #2
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@intel.com wrote:
>>>
>>> From: Chee Hong Ang <chee.hong.ang@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@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.

>>
>>>
>>> +#endif
>>> +
>>>  #endif /* _ALTERA_H_ */
>>>
Ang, Chee Hong April 27, 2018, 5:31 a.m. UTC | #3
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@intel.com wrote:
> > > > 
> > > > 
> > > > From: Chee Hong Ang <chee.hong.ang@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@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.
> 
> > 
> > > 
> > > 
> > > > 
> > > > 
> > > > +#endif
> > > > +
> > > >  #endif /* _ALTERA_H_ */
> > > > 
>
Marek Vasut April 27, 2018, 7:08 a.m. UTC | #4
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@intel.com wrote:
>>>>>
>>>>>
>>>>> From: Chee Hong Ang <chee.hong.ang@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@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 .
Ang, Chee Hong April 27, 2018, 8:03 a.m. UTC | #5
On Fri, 2018-04-27 at 09:08 +0200, Marek Vasut wrote:
> 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@intel.com wrote:
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > From: Chee Hong Ang <chee.hong.ang@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@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 .
OK. I will move this function declaration to 1/3 in v2 patch.
>
diff mbox series

Patch

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
+		/* 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);
+#endif
+
 #endif /* _ALTERA_H_ */