diff mbox series

[22/24] ARM: at91: sama7: introduce sama7 SoC family

Message ID 20210331105908.23027-23-claudiu.beznea@microchip.com (mailing list archive)
State New, archived
Headers show
Series ARM: at91: pm: add support for sama7g5 | expand

Commit Message

Claudiu Beznea March 31, 2021, 10:59 a.m. UTC
From: Eugen Hristev <eugen.hristev@microchip.com>

Introduce new family of SoCs, sama7, and first SoC, sama7g5.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
---
 arch/arm/mach-at91/Makefile |  1 +
 arch/arm/mach-at91/sama7.c  | 48 +++++++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+)
 create mode 100644 arch/arm/mach-at91/sama7.c

Comments

Alexandre Belloni March 31, 2021, 4:01 p.m. UTC | #1
On 31/03/2021 13:59:06+0300, Claudiu Beznea wrote:
> From: Eugen Hristev <eugen.hristev@microchip.com>
> 
> Introduce new family of SoCs, sama7, and first SoC, sama7g5.
> 
> Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
> ---
>  arch/arm/mach-at91/Makefile |  1 +
>  arch/arm/mach-at91/sama7.c  | 48 +++++++++++++++++++++++++++++++++++++
>  2 files changed, 49 insertions(+)
>  create mode 100644 arch/arm/mach-at91/sama7.c
> 
> diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
> index f565490f1b70..6cc6624cddac 100644
> --- a/arch/arm/mach-at91/Makefile
> +++ b/arch/arm/mach-at91/Makefile
> @@ -9,6 +9,7 @@ obj-$(CONFIG_SOC_AT91SAM9)	+= at91sam9.o
>  obj-$(CONFIG_SOC_SAM9X60)	+= sam9x60.o
>  obj-$(CONFIG_SOC_SAMA5)		+= sama5.o
>  obj-$(CONFIG_SOC_SAMV7)		+= samv7.o
> +obj-$(CONFIG_SOC_SAMA7)		+= sama7.o
>  
>  # Power Management
>  obj-$(CONFIG_ATMEL_PM)		+= pm.o pm_suspend.o
> diff --git a/arch/arm/mach-at91/sama7.c b/arch/arm/mach-at91/sama7.c
> new file mode 100644
> index 000000000000..e04cadb569ad
> --- /dev/null
> +++ b/arch/arm/mach-at91/sama7.c
> @@ -0,0 +1,48 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Setup code for SAMA7
> + *
> + * Copyright (C) 2021 Microchip Technology, Inc. and its subsidiaries
> + *
> + */
> +
> +#include <linux/of.h>
> +#include <linux/of_platform.h>
> +
> +#include <asm/mach/arch.h>
> +#include <asm/system_misc.h>
> +
> +#include "generic.h"
> +
> +static void __init sama7_common_init(void)
> +{
> +	of_platform_default_populate(NULL, NULL, NULL);

Is this necessary? This is left as a workaround for the old SoCs using
pinctrl-at91. I guess this will be using pio4 so this has to be removed.

> +}
> +
> +static void __init sama7_dt_device_init(void)
> +{
> +	sama7_common_init();
> +}
> +
> +static const char *const sama7_dt_board_compat[] __initconst = {
> +	"microchip,sama7",
> +	NULL
> +};
> +
> +DT_MACHINE_START(sama7_dt, "Microchip SAMA7")
> +	/* Maintainer: Microchip */
> +	.init_machine	= sama7_dt_device_init,
> +	.dt_compat	= sama7_dt_board_compat,
> +MACHINE_END
> +
> +static const char *const sama7g5_dt_board_compat[] __initconst = {
> +	"microchip,sama7g5",
> +	NULL
> +};
> +
> +DT_MACHINE_START(sama7g5_dt, "Microchip SAMA7G5")
> +	/* Maintainer: Microchip */
> +	.init_machine	= sama7_dt_device_init,
> +	.dt_compat	= sama7g5_dt_board_compat,
> +MACHINE_END
> +
> -- 
> 2.25.1
>
Claudiu Beznea April 1, 2021, 9:38 a.m. UTC | #2
On 31.03.2021 19:01, Alexandre Belloni wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> On 31/03/2021 13:59:06+0300, Claudiu Beznea wrote:
>> From: Eugen Hristev <eugen.hristev@microchip.com>
>>
>> Introduce new family of SoCs, sama7, and first SoC, sama7g5.
>>
>> Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
>> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
>> ---
>>  arch/arm/mach-at91/Makefile |  1 +
>>  arch/arm/mach-at91/sama7.c  | 48 +++++++++++++++++++++++++++++++++++++
>>  2 files changed, 49 insertions(+)
>>  create mode 100644 arch/arm/mach-at91/sama7.c
>>
>> diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
>> index f565490f1b70..6cc6624cddac 100644
>> --- a/arch/arm/mach-at91/Makefile
>> +++ b/arch/arm/mach-at91/Makefile
>> @@ -9,6 +9,7 @@ obj-$(CONFIG_SOC_AT91SAM9)    += at91sam9.o
>>  obj-$(CONFIG_SOC_SAM9X60)    += sam9x60.o
>>  obj-$(CONFIG_SOC_SAMA5)              += sama5.o
>>  obj-$(CONFIG_SOC_SAMV7)              += samv7.o
>> +obj-$(CONFIG_SOC_SAMA7)              += sama7.o
>>
>>  # Power Management
>>  obj-$(CONFIG_ATMEL_PM)               += pm.o pm_suspend.o
>> diff --git a/arch/arm/mach-at91/sama7.c b/arch/arm/mach-at91/sama7.c
>> new file mode 100644
>> index 000000000000..e04cadb569ad
>> --- /dev/null
>> +++ b/arch/arm/mach-at91/sama7.c
>> @@ -0,0 +1,48 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> +/*
>> + * Setup code for SAMA7
>> + *
>> + * Copyright (C) 2021 Microchip Technology, Inc. and its subsidiaries
>> + *
>> + */
>> +
>> +#include <linux/of.h>
>> +#include <linux/of_platform.h>
>> +
>> +#include <asm/mach/arch.h>
>> +#include <asm/system_misc.h>
>> +
>> +#include "generic.h"
>> +
>> +static void __init sama7_common_init(void)
>> +{
>> +     of_platform_default_populate(NULL, NULL, NULL);
> 
> Is this necessary? This is left as a workaround for the old SoCs using
> pinctrl-at91. I guess this will be using pio4 so this has to be removed.

OK, I'll have a look. BTW, SAMA5D2 which is also using PIO4 calls
of_platform_default_populate(NULL, NULL, NULL);

> 
>> +}
>> +
>> +static void __init sama7_dt_device_init(void)
>> +{
>> +     sama7_common_init();
>> +}
>> +
>> +static const char *const sama7_dt_board_compat[] __initconst = {
>> +     "microchip,sama7",
>> +     NULL
>> +};
>> +
>> +DT_MACHINE_START(sama7_dt, "Microchip SAMA7")
>> +     /* Maintainer: Microchip */
>> +     .init_machine   = sama7_dt_device_init,
>> +     .dt_compat      = sama7_dt_board_compat,
>> +MACHINE_END
>> +
>> +static const char *const sama7g5_dt_board_compat[] __initconst = {
>> +     "microchip,sama7g5",
>> +     NULL
>> +};
>> +
>> +DT_MACHINE_START(sama7g5_dt, "Microchip SAMA7G5")
>> +     /* Maintainer: Microchip */
>> +     .init_machine   = sama7_dt_device_init,
>> +     .dt_compat      = sama7g5_dt_board_compat,
>> +MACHINE_END
>> +
>> --
>> 2.25.1
>>
> 
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
Claudiu Beznea April 1, 2021, 10:24 a.m. UTC | #3
On 01.04.2021 12:38, Claudiu Beznea - M18063 wrote:
> On 31.03.2021 19:01, Alexandre Belloni wrote:
>> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>>
>> On 31/03/2021 13:59:06+0300, Claudiu Beznea wrote:
>>> From: Eugen Hristev <eugen.hristev@microchip.com>
>>>
>>> Introduce new family of SoCs, sama7, and first SoC, sama7g5.
>>>
>>> Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
>>> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
>>> ---
>>>  arch/arm/mach-at91/Makefile |  1 +
>>>  arch/arm/mach-at91/sama7.c  | 48 +++++++++++++++++++++++++++++++++++++
>>>  2 files changed, 49 insertions(+)
>>>  create mode 100644 arch/arm/mach-at91/sama7.c
>>>
>>> diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
>>> index f565490f1b70..6cc6624cddac 100644
>>> --- a/arch/arm/mach-at91/Makefile
>>> +++ b/arch/arm/mach-at91/Makefile
>>> @@ -9,6 +9,7 @@ obj-$(CONFIG_SOC_AT91SAM9)    += at91sam9.o
>>>  obj-$(CONFIG_SOC_SAM9X60)    += sam9x60.o
>>>  obj-$(CONFIG_SOC_SAMA5)              += sama5.o
>>>  obj-$(CONFIG_SOC_SAMV7)              += samv7.o
>>> +obj-$(CONFIG_SOC_SAMA7)              += sama7.o
>>>
>>>  # Power Management
>>>  obj-$(CONFIG_ATMEL_PM)               += pm.o pm_suspend.o
>>> diff --git a/arch/arm/mach-at91/sama7.c b/arch/arm/mach-at91/sama7.c
>>> new file mode 100644
>>> index 000000000000..e04cadb569ad
>>> --- /dev/null
>>> +++ b/arch/arm/mach-at91/sama7.c
>>> @@ -0,0 +1,48 @@
>>> +// SPDX-License-Identifier: GPL-2.0-or-later
>>> +/*
>>> + * Setup code for SAMA7
>>> + *
>>> + * Copyright (C) 2021 Microchip Technology, Inc. and its subsidiaries
>>> + *
>>> + */
>>> +
>>> +#include <linux/of.h>
>>> +#include <linux/of_platform.h>
>>> +
>>> +#include <asm/mach/arch.h>
>>> +#include <asm/system_misc.h>
>>> +
>>> +#include "generic.h"
>>> +
>>> +static void __init sama7_common_init(void)
>>> +{
>>> +     of_platform_default_populate(NULL, NULL, NULL);
>>
>> Is this necessary? This is left as a workaround for the old SoCs using
>> pinctrl-at91. I guess this will be using pio4 so this has to be removed.
> 
> OK, I'll have a look. BTW, SAMA5D2 which is also using PIO4 calls
> of_platform_default_populate(NULL, NULL, NULL);

Without this call the PM code (arch/arm/mach-at/pm.c) is not able to locate
proper DT nodes:

[    0.194615] at91_pm_backup_init: failed to find securam device!
[    0.201393] at91_pm_sram_init: failed to find sram device!
[    0.207449] AT91: PM not supported, due to no SRAM allocated

> 
>>
>>> +}
>>> +
>>> +static void __init sama7_dt_device_init(void)
>>> +{
>>> +     sama7_common_init();
>>> +}
>>> +
>>> +static const char *const sama7_dt_board_compat[] __initconst = {
>>> +     "microchip,sama7",
>>> +     NULL
>>> +};
>>> +
>>> +DT_MACHINE_START(sama7_dt, "Microchip SAMA7")
>>> +     /* Maintainer: Microchip */
>>> +     .init_machine   = sama7_dt_device_init,
>>> +     .dt_compat      = sama7_dt_board_compat,
>>> +MACHINE_END
>>> +
>>> +static const char *const sama7g5_dt_board_compat[] __initconst = {
>>> +     "microchip,sama7g5",
>>> +     NULL
>>> +};
>>> +
>>> +DT_MACHINE_START(sama7g5_dt, "Microchip SAMA7G5")
>>> +     /* Maintainer: Microchip */
>>> +     .init_machine   = sama7_dt_device_init,
>>> +     .dt_compat      = sama7g5_dt_board_compat,
>>> +MACHINE_END
>>> +
>>> --
>>> 2.25.1
>>>
>>
>> --
>> Alexandre Belloni, co-owner and COO, Bootlin
>> Embedded Linux and Kernel engineering
>> https://bootlin.com
>>
>
Nicolas Ferre April 8, 2021, 3:24 p.m. UTC | #4
On 01/04/2021 at 12:24, Claudiu Beznea - M18063 wrote:
> On 01.04.2021 12:38, Claudiu Beznea - M18063 wrote:
>> On 31.03.2021 19:01, Alexandre Belloni wrote:
>>> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>>>
>>> On 31/03/2021 13:59:06+0300, Claudiu Beznea wrote:
>>>> From: Eugen Hristev <eugen.hristev@microchip.com>
>>>>
>>>> Introduce new family of SoCs, sama7, and first SoC, sama7g5.
>>>>
>>>> Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
>>>> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
>>>> ---
>>>>   arch/arm/mach-at91/Makefile |  1 +
>>>>   arch/arm/mach-at91/sama7.c  | 48 +++++++++++++++++++++++++++++++++++++
>>>>   2 files changed, 49 insertions(+)
>>>>   create mode 100644 arch/arm/mach-at91/sama7.c
>>>>
>>>> diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
>>>> index f565490f1b70..6cc6624cddac 100644
>>>> --- a/arch/arm/mach-at91/Makefile
>>>> +++ b/arch/arm/mach-at91/Makefile
>>>> @@ -9,6 +9,7 @@ obj-$(CONFIG_SOC_AT91SAM9)    += at91sam9.o
>>>>   obj-$(CONFIG_SOC_SAM9X60)    += sam9x60.o
>>>>   obj-$(CONFIG_SOC_SAMA5)              += sama5.o
>>>>   obj-$(CONFIG_SOC_SAMV7)              += samv7.o
>>>> +obj-$(CONFIG_SOC_SAMA7)              += sama7.o
>>>>
>>>>   # Power Management
>>>>   obj-$(CONFIG_ATMEL_PM)               += pm.o pm_suspend.o
>>>> diff --git a/arch/arm/mach-at91/sama7.c b/arch/arm/mach-at91/sama7.c
>>>> new file mode 100644
>>>> index 000000000000..e04cadb569ad
>>>> --- /dev/null
>>>> +++ b/arch/arm/mach-at91/sama7.c
>>>> @@ -0,0 +1,48 @@
>>>> +// SPDX-License-Identifier: GPL-2.0-or-later
>>>> +/*
>>>> + * Setup code for SAMA7
>>>> + *
>>>> + * Copyright (C) 2021 Microchip Technology, Inc. and its subsidiaries
>>>> + *
>>>> + */
>>>> +
>>>> +#include <linux/of.h>
>>>> +#include <linux/of_platform.h>
>>>> +
>>>> +#include <asm/mach/arch.h>
>>>> +#include <asm/system_misc.h>
>>>> +
>>>> +#include "generic.h"
>>>> +
>>>> +static void __init sama7_common_init(void)
>>>> +{
>>>> +     of_platform_default_populate(NULL, NULL, NULL);
>>>
>>> Is this necessary? This is left as a workaround for the old SoCs using
>>> pinctrl-at91. I guess this will be using pio4 so this has to be removed.
>>
>> OK, I'll have a look. BTW, SAMA5D2 which is also using PIO4 calls
>> of_platform_default_populate(NULL, NULL, NULL);
> 
> Without this call the PM code (arch/arm/mach-at/pm.c) is not able to locate
> proper DT nodes:
> 
> [    0.194615] at91_pm_backup_init: failed to find securam device!
> [    0.201393] at91_pm_sram_init: failed to find sram device!
> [    0.207449] AT91: PM not supported, due to no SRAM allocated

Okay, so we can't afford removing these calls to sama5d2 and upcoming 
sama7g5 right now.

Is it a common pattern to have to reach DT content in the early stages 
that explicit call to of_platform_default_populate() tries to solve?

Best regards,
   Nicolas


>>>> +}
>>>> +
>>>> +static void __init sama7_dt_device_init(void)
>>>> +{
>>>> +     sama7_common_init();
>>>> +}
>>>> +
>>>> +static const char *const sama7_dt_board_compat[] __initconst = {
>>>> +     "microchip,sama7",
>>>> +     NULL
>>>> +};
>>>> +
>>>> +DT_MACHINE_START(sama7_dt, "Microchip SAMA7")
>>>> +     /* Maintainer: Microchip */
>>>> +     .init_machine   = sama7_dt_device_init,
>>>> +     .dt_compat      = sama7_dt_board_compat,
>>>> +MACHINE_END
>>>> +
>>>> +static const char *const sama7g5_dt_board_compat[] __initconst = {
>>>> +     "microchip,sama7g5",
>>>> +     NULL
>>>> +};
>>>> +
>>>> +DT_MACHINE_START(sama7g5_dt, "Microchip SAMA7G5")
>>>> +     /* Maintainer: Microchip */
>>>> +     .init_machine   = sama7_dt_device_init,
>>>> +     .dt_compat      = sama7g5_dt_board_compat,
>>>> +MACHINE_END
>>>> +
>>>> --
>>>> 2.25.1
>>>>
>>>
>>> --
>>> Alexandre Belloni, co-owner and COO, Bootlin
>>> Embedded Linux and Kernel engineering
>>> https://bootlin.com
>>>
>>
>
Nicolas Ferre April 8, 2021, 3:30 p.m. UTC | #5
Hi,

On 31/03/2021 at 12:59, Claudiu Beznea wrote:
> From: Eugen Hristev <eugen.hristev@microchip.com>
> 
> Introduce new family of SoCs, sama7, and first SoC, sama7g5.
> 
> Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
> ---
>   arch/arm/mach-at91/Makefile |  1 +
>   arch/arm/mach-at91/sama7.c  | 48 +++++++++++++++++++++++++++++++++++++
>   2 files changed, 49 insertions(+)
>   create mode 100644 arch/arm/mach-at91/sama7.c
> 
> diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
> index f565490f1b70..6cc6624cddac 100644
> --- a/arch/arm/mach-at91/Makefile
> +++ b/arch/arm/mach-at91/Makefile
> @@ -9,6 +9,7 @@ obj-$(CONFIG_SOC_AT91SAM9)	+= at91sam9.o
>   obj-$(CONFIG_SOC_SAM9X60)	+= sam9x60.o
>   obj-$(CONFIG_SOC_SAMA5)		+= sama5.o
>   obj-$(CONFIG_SOC_SAMV7)		+= samv7.o
> +obj-$(CONFIG_SOC_SAMA7)		+= sama7.o

Nit: alphabetic order tells that it should be before samv7

>   
>   # Power Management
>   obj-$(CONFIG_ATMEL_PM)		+= pm.o pm_suspend.o
> diff --git a/arch/arm/mach-at91/sama7.c b/arch/arm/mach-at91/sama7.c
> new file mode 100644
> index 000000000000..e04cadb569ad
> --- /dev/null
> +++ b/arch/arm/mach-at91/sama7.c
> @@ -0,0 +1,48 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Setup code for SAMA7
> + *
> + * Copyright (C) 2021 Microchip Technology, Inc. and its subsidiaries
> + *
> + */
> +
> +#include <linux/of.h>
> +#include <linux/of_platform.h>
> +
> +#include <asm/mach/arch.h>
> +#include <asm/system_misc.h>
> +
> +#include "generic.h"
> +
> +static void __init sama7_common_init(void)
> +{
> +	of_platform_default_populate(NULL, NULL, NULL);
> +}
> +
> +static void __init sama7_dt_device_init(void)
> +{
> +	sama7_common_init();
> +}
> +
> +static const char *const sama7_dt_board_compat[] __initconst = {
> +	"microchip,sama7",
> +	NULL
> +};
> +
> +DT_MACHINE_START(sama7_dt, "Microchip SAMA7")
> +	/* Maintainer: Microchip */
> +	.init_machine	= sama7_dt_device_init,
> +	.dt_compat	= sama7_dt_board_compat,
> +MACHINE_END
> +
> +static const char *const sama7g5_dt_board_compat[] __initconst = {
> +	"microchip,sama7g5",
> +	NULL
> +};
> +
> +DT_MACHINE_START(sama7g5_dt, "Microchip SAMA7G5")
> +	/* Maintainer: Microchip */
> +	.init_machine	= sama7_dt_device_init,
> +	.dt_compat	= sama7g5_dt_board_compat,
> +MACHINE_END

I'm not sure we need two DT_MACHINE_START() entries and associated 
functions right now. Probably the most generic one is sufficient.
We can add such distinction in the future if the need arises.

Regards,
   Nicolas
Alexandre Belloni April 8, 2021, 5:44 p.m. UTC | #6
On 08/04/2021 17:24:39+0200, Nicolas Ferre wrote:
> On 01/04/2021 at 12:24, Claudiu Beznea - M18063 wrote:
> > On 01.04.2021 12:38, Claudiu Beznea - M18063 wrote:
> > > On 31.03.2021 19:01, Alexandre Belloni wrote:
> > > > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> > > > 
> > > > On 31/03/2021 13:59:06+0300, Claudiu Beznea wrote:
> > > > > From: Eugen Hristev <eugen.hristev@microchip.com>
> > > > > 
> > > > > Introduce new family of SoCs, sama7, and first SoC, sama7g5.
> > > > > 
> > > > > Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
> > > > > Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
> > > > > ---
> > > > >   arch/arm/mach-at91/Makefile |  1 +
> > > > >   arch/arm/mach-at91/sama7.c  | 48 +++++++++++++++++++++++++++++++++++++
> > > > >   2 files changed, 49 insertions(+)
> > > > >   create mode 100644 arch/arm/mach-at91/sama7.c
> > > > > 
> > > > > diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
> > > > > index f565490f1b70..6cc6624cddac 100644
> > > > > --- a/arch/arm/mach-at91/Makefile
> > > > > +++ b/arch/arm/mach-at91/Makefile
> > > > > @@ -9,6 +9,7 @@ obj-$(CONFIG_SOC_AT91SAM9)    += at91sam9.o
> > > > >   obj-$(CONFIG_SOC_SAM9X60)    += sam9x60.o
> > > > >   obj-$(CONFIG_SOC_SAMA5)              += sama5.o
> > > > >   obj-$(CONFIG_SOC_SAMV7)              += samv7.o
> > > > > +obj-$(CONFIG_SOC_SAMA7)              += sama7.o
> > > > > 
> > > > >   # Power Management
> > > > >   obj-$(CONFIG_ATMEL_PM)               += pm.o pm_suspend.o
> > > > > diff --git a/arch/arm/mach-at91/sama7.c b/arch/arm/mach-at91/sama7.c
> > > > > new file mode 100644
> > > > > index 000000000000..e04cadb569ad
> > > > > --- /dev/null
> > > > > +++ b/arch/arm/mach-at91/sama7.c
> > > > > @@ -0,0 +1,48 @@
> > > > > +// SPDX-License-Identifier: GPL-2.0-or-later
> > > > > +/*
> > > > > + * Setup code for SAMA7
> > > > > + *
> > > > > + * Copyright (C) 2021 Microchip Technology, Inc. and its subsidiaries
> > > > > + *
> > > > > + */
> > > > > +
> > > > > +#include <linux/of.h>
> > > > > +#include <linux/of_platform.h>
> > > > > +
> > > > > +#include <asm/mach/arch.h>
> > > > > +#include <asm/system_misc.h>
> > > > > +
> > > > > +#include "generic.h"
> > > > > +
> > > > > +static void __init sama7_common_init(void)
> > > > > +{
> > > > > +     of_platform_default_populate(NULL, NULL, NULL);
> > > > 
> > > > Is this necessary? This is left as a workaround for the old SoCs using
> > > > pinctrl-at91. I guess this will be using pio4 so this has to be removed.
> > > 
> > > OK, I'll have a look. BTW, SAMA5D2 which is also using PIO4 calls
> > > of_platform_default_populate(NULL, NULL, NULL);
> > 
> > Without this call the PM code (arch/arm/mach-at/pm.c) is not able to locate
> > proper DT nodes:
> > 
> > [    0.194615] at91_pm_backup_init: failed to find securam device!
> > [    0.201393] at91_pm_sram_init: failed to find sram device!
> > [    0.207449] AT91: PM not supported, due to no SRAM allocated
> 
> Okay, so we can't afford removing these calls to sama5d2 and upcoming
> sama7g5 right now.
> 
> Is it a common pattern to have to reach DT content in the early stages that
> explicit call to of_platform_default_populate() tries to solve?
> 

That's fine, I didn't remember about that one, we can keep the call.
diff mbox series

Patch

diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index f565490f1b70..6cc6624cddac 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -9,6 +9,7 @@  obj-$(CONFIG_SOC_AT91SAM9)	+= at91sam9.o
 obj-$(CONFIG_SOC_SAM9X60)	+= sam9x60.o
 obj-$(CONFIG_SOC_SAMA5)		+= sama5.o
 obj-$(CONFIG_SOC_SAMV7)		+= samv7.o
+obj-$(CONFIG_SOC_SAMA7)		+= sama7.o
 
 # Power Management
 obj-$(CONFIG_ATMEL_PM)		+= pm.o pm_suspend.o
diff --git a/arch/arm/mach-at91/sama7.c b/arch/arm/mach-at91/sama7.c
new file mode 100644
index 000000000000..e04cadb569ad
--- /dev/null
+++ b/arch/arm/mach-at91/sama7.c
@@ -0,0 +1,48 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Setup code for SAMA7
+ *
+ * Copyright (C) 2021 Microchip Technology, Inc. and its subsidiaries
+ *
+ */
+
+#include <linux/of.h>
+#include <linux/of_platform.h>
+
+#include <asm/mach/arch.h>
+#include <asm/system_misc.h>
+
+#include "generic.h"
+
+static void __init sama7_common_init(void)
+{
+	of_platform_default_populate(NULL, NULL, NULL);
+}
+
+static void __init sama7_dt_device_init(void)
+{
+	sama7_common_init();
+}
+
+static const char *const sama7_dt_board_compat[] __initconst = {
+	"microchip,sama7",
+	NULL
+};
+
+DT_MACHINE_START(sama7_dt, "Microchip SAMA7")
+	/* Maintainer: Microchip */
+	.init_machine	= sama7_dt_device_init,
+	.dt_compat	= sama7_dt_board_compat,
+MACHINE_END
+
+static const char *const sama7g5_dt_board_compat[] __initconst = {
+	"microchip,sama7g5",
+	NULL
+};
+
+DT_MACHINE_START(sama7g5_dt, "Microchip SAMA7G5")
+	/* Maintainer: Microchip */
+	.init_machine	= sama7_dt_device_init,
+	.dt_compat	= sama7g5_dt_board_compat,
+MACHINE_END
+