[PATCH v2] ARM: at91: add basic support for new SoC lan966x

Subsystems: arm port, arm/microchip (at91) soc support, the rest

STALE1790d LANDED

Landed in mainline as 3efc44312118 on 2021-10-04.

4 messages, 3 authors, 2021-09-20 · open the first message on its own page

[PATCH v2] ARM: at91: add basic support for new SoC lan966x

From: <hidden>
Date: 2021-08-31 10:21:47

From: Kavyasree Kotagiri <redacted>

This patch introduces Microchip LAN966X ARMv7 based SoC family
of multiport gigabit AVB/TSN-capable ethernet switches.
It supports two SKUs: 4-port LAN9662 with multiprotocol
processing support and 8-port LAN9668 switch.

LAN966X includes copper and serial ethernet interfaces,
peripheral interfaces such as PCIe, USB, TWI, SPI, UART, QSPI,
SD/eMMC, Parallel Interface (PI) as well as synchronization
and trigger inputs/outputs.

Signed-off-by: Kavya Sree Kotagiri <redacted>
---
v1 -> v2:
- Removed lan966x_dt_device_init().
  System boots fine without this function.

 arch/arm/mach-at91/Kconfig   | 13 +++++++++++++
 arch/arm/mach-at91/Makefile  |  1 +
 arch/arm/mach-at91/lan966x.c | 25 +++++++++++++++++++++++++
 3 files changed, 39 insertions(+)
 create mode 100644 arch/arm/mach-at91/lan966x.c
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index ccd7e80ce943..06cb425af761 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -122,6 +122,14 @@ config SOC_SAM9X60
 	help
 	  Select this if you are using Microchip's SAM9X60 SoC
 
+config SOC_LAN966X
+	bool "ARMv7 based Microchip LAN966X SoC family"
+	depends on ARCH_MULTI_V7
+	select SOC_LAN966
+	select DW_APB_TIMER_OF
+	help
+	  This enables support for ARMv7 based Microchip LAN966X SoC family.
+
 comment "Clocksource driver selection"
 
 config ATMEL_CLOCKSOURCE_PIT
@@ -188,6 +196,11 @@ config SOC_SAMA5
 	select SOC_SAM_V7
 	select SRAM if PM
 
+config SOC_LAN966
+	bool
+	select ARM_GIC
+	select MEMORY
+
 config ATMEL_PM
 	bool
 
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index f565490f1b70..93cfd5b4e6d4 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -6,6 +6,7 @@
 # CPU-specific support
 obj-$(CONFIG_SOC_AT91RM9200)	+= at91rm9200.o
 obj-$(CONFIG_SOC_AT91SAM9)	+= at91sam9.o
+obj-$(CONFIG_SOC_LAN966X)	+= lan966x.o
 obj-$(CONFIG_SOC_SAM9X60)	+= sam9x60.o
 obj-$(CONFIG_SOC_SAMA5)		+= sama5.o
 obj-$(CONFIG_SOC_SAMV7)		+= samv7.o
diff --git a/arch/arm/mach-at91/lan966x.c b/arch/arm/mach-at91/lan966x.c
new file mode 100644
index 000000000000..154d616569ae
--- /dev/null
+++ b/arch/arm/mach-at91/lan966x.c
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Setup code for LAN966X
+ *
+ * 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 const char *const lan966x_dt_board_compat[] __initconst = {
+	"microchip,lan966x",
+	NULL
+};
+
+DT_MACHINE_START(lan966x_dt, "Microchip LAN966X")
+	/* Maintainer: Microchip */
+	.dt_compat	= lan966x_dt_board_compat,
+MACHINE_END
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH v2] ARM: at91: add basic support for new SoC lan966x

From: Nicolas Ferre <nicolas.ferre@microchip.com>
Date: 2021-09-17 13:41:09

On 31/08/2021 at 12:21, kavyasree.kotagiri@microchip.com wrote:
From: Kavyasree Kotagiri <redacted>

This patch introduces Microchip LAN966X ARMv7 based SoC family
of multiport gigabit AVB/TSN-capable ethernet switches.
It supports two SKUs: 4-port LAN9662 with multiprotocol
processing support and 8-port LAN9668 switch.

LAN966X includes copper and serial ethernet interfaces,
peripheral interfaces such as PCIe, USB, TWI, SPI, UART, QSPI,
SD/eMMC, Parallel Interface (PI) as well as synchronization
and trigger inputs/outputs.

Signed-off-by: Kavya Sree Kotagiri <redacted>
Your name fixed with your permission and as Rob suggested in a previous 
series.
---
v1 -> v2:
- Removed lan966x_dt_device_init().
   System boots fine without this function.

  arch/arm/mach-at91/Kconfig   | 13 +++++++++++++
  arch/arm/mach-at91/Makefile  |  1 +
Kconfig and Makefile files updated to avoid merge conflict with SAMA7G5 
that was integrated in 5.15-rc1.
  arch/arm/mach-at91/lan966x.c | 25 +++++++++++++++++++++++++
quoted hunk
  3 files changed, 39 insertions(+)
  create mode 100644 arch/arm/mach-at91/lan966x.c
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index ccd7e80ce943..06cb425af761 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -122,6 +122,14 @@ config SOC_SAM9X60
  	help
  	  Select this if you are using Microchip's SAM9X60 SoC
  
+config SOC_LAN966X
+	bool "ARMv7 based Microchip LAN966X SoC family"
+	depends on ARCH_MULTI_V7
+	select SOC_LAN966
+	select DW_APB_TIMER_OF
+	help
+	  This enables support for ARMv7 based Microchip LAN966X SoC family.
+
  comment "Clocksource driver selection"
  
  config ATMEL_CLOCKSOURCE_PIT
@@ -188,6 +196,11 @@ config SOC_SAMA5
  	select SOC_SAM_V7
  	select SRAM if PM
  
+config SOC_LAN966
+	bool
+	select ARM_GIC
+	select MEMORY
+
  config ATMEL_PM
  	bool
  
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index f565490f1b70..93cfd5b4e6d4 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -6,6 +6,7 @@
  # CPU-specific support
  obj-$(CONFIG_SOC_AT91RM9200)	+= at91rm9200.o
  obj-$(CONFIG_SOC_AT91SAM9)	+= at91sam9.o
+obj-$(CONFIG_SOC_LAN966X)	+= lan966x.o
  obj-$(CONFIG_SOC_SAM9X60)	+= sam9x60.o
  obj-$(CONFIG_SOC_SAMA5)		+= sama5.o
  obj-$(CONFIG_SOC_SAMV7)		+= samv7.o
diff --git a/arch/arm/mach-at91/lan966x.c b/arch/arm/mach-at91/lan966x.c
new file mode 100644
index 000000000000..154d616569ae
--- /dev/null
+++ b/arch/arm/mach-at91/lan966x.c
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Setup code for LAN966X
+ *
+ * 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 const char *const lan966x_dt_board_compat[] __initconst = {
+	"microchip,lan966x",
This compatibility string will need to be documented in 
Documentation/arm/microchip.rst
and
Documentation/devicetree/bindings/arm/atmel-at91.yaml (or a similar 
file, as you wish).

You'll add it to your DT patches.
+	NULL
+};
+
+DT_MACHINE_START(lan966x_dt, "Microchip LAN966X")
+	/* Maintainer: Microchip */
+	.dt_compat	= lan966x_dt_board_compat,
+MACHINE_END
All the rest looks good to me: no need to resend. It's queued in 
at91-soc branch targeting 5.16.
You'll see it appearing in linux-next in the next few days.

Best regards,
   Nicolas


-- 
Nicolas Ferre

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Re: [PATCH v2] ARM: at91: add basic support for new SoC lan966x

From: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date: 2021-09-17 14:33:10

Hello,

I wanted to reply earlier but I still have a few comments...

On 17/09/2021 15:41:01+0200, Nicolas Ferre wrote:
On 31/08/2021 at 12:21, kavyasree.kotagiri@microchip.com wrote:
quoted
From: Kavyasree Kotagiri <redacted>

This patch introduces Microchip LAN966X ARMv7 based SoC family
of multiport gigabit AVB/TSN-capable ethernet switches.
It supports two SKUs: 4-port LAN9662 with multiprotocol
processing support and 8-port LAN9668 switch.

LAN966X includes copper and serial ethernet interfaces,
peripheral interfaces such as PCIe, USB, TWI, SPI, UART, QSPI,
SD/eMMC, Parallel Interface (PI) as well as synchronization
and trigger inputs/outputs.

Signed-off-by: Kavya Sree Kotagiri <redacted>
Your name fixed with your permission and as Rob suggested in a previous
series.
quoted
---
v1 -> v2:
- Removed lan966x_dt_device_init().
   System boots fine without this function.

  arch/arm/mach-at91/Kconfig   | 13 +++++++++++++
  arch/arm/mach-at91/Makefile  |  1 +
Kconfig and Makefile files updated to avoid merge conflict with SAMA7G5 that
was integrated in 5.15-rc1.
quoted
  arch/arm/mach-at91/lan966x.c | 25 +++++++++++++++++++++++++
quoted
  3 files changed, 39 insertions(+)
  create mode 100644 arch/arm/mach-at91/lan966x.c
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index ccd7e80ce943..06cb425af761 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -122,6 +122,14 @@ config SOC_SAM9X60
  	help
  	  Select this if you are using Microchip's SAM9X60 SoC
+config SOC_LAN966X
+	bool "ARMv7 based Microchip LAN966X SoC family"
+	depends on ARCH_MULTI_V7
+	select SOC_LAN966
+	select DW_APB_TIMER_OF
+	help
+	  This enables support for ARMv7 based Microchip LAN966X SoC family.
+
I don't think SOC_LAN966X is a good name or said differently as it is
not part specific, I don't get why this isn't merged with SOC_LAN966. I
would have one or the other.
quoted
  comment "Clocksource driver selection"
  config ATMEL_CLOCKSOURCE_PIT
@@ -188,6 +196,11 @@ config SOC_SAMA5
  	select SOC_SAM_V7
  	select SRAM if PM
+config SOC_LAN966
+	bool
+	select ARM_GIC
+	select MEMORY
+
  config ATMEL_PM
  	bool
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index f565490f1b70..93cfd5b4e6d4 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -6,6 +6,7 @@
  # CPU-specific support
  obj-$(CONFIG_SOC_AT91RM9200)	+= at91rm9200.o
  obj-$(CONFIG_SOC_AT91SAM9)	+= at91sam9.o
+obj-$(CONFIG_SOC_LAN966X)	+= lan966x.o
  obj-$(CONFIG_SOC_SAM9X60)	+= sam9x60.o
  obj-$(CONFIG_SOC_SAMA5)		+= sama5.o
  obj-$(CONFIG_SOC_SAMV7)		+= samv7.o
diff --git a/arch/arm/mach-at91/lan966x.c b/arch/arm/mach-at91/lan966x.c
new file mode 100644
index 000000000000..154d616569ae
--- /dev/null
+++ b/arch/arm/mach-at91/lan966x.c
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Setup code for LAN966X
+ *
+ * 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>
+
I'm not sure all those include are actually used.
quoted
+#include "generic.h"
+
+static const char *const lan966x_dt_board_compat[] __initconst = {
+	"microchip,lan966x",
This compatibility string will need to be documented in
Documentation/arm/microchip.rst
and
Documentation/devicetree/bindings/arm/atmel-at91.yaml (or a similar file, as
you wish).

You'll add it to your DT patches.
Yes and you'll have to document lan9662 and lan9668. Really, wildcards
in the compatible strings are usually not a good idea.
quoted
+	NULL
+};
+
+DT_MACHINE_START(lan966x_dt, "Microchip LAN966X")
+	/* Maintainer: Microchip */
+	.dt_compat	= lan966x_dt_board_compat,
+MACHINE_END
All the rest looks good to me: no need to resend. It's queued in at91-soc
branch targeting 5.16.
You'll see it appearing in linux-next in the next few days.
Well, I'm still wondering one thing, is arch/arm/mach-at91/lan966x.c
necessary at all to boot the platform?

-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

RE: [PATCH v2] ARM: at91: add basic support for new SoC lan966x

From: <hidden>
Date: 2021-09-20 10:47:26

-----Original Message-----
From: Alexandre Belloni [mailto:alexandre.belloni@bootlin.com]
Sent: Friday, September 17, 2021 8:03 PM
To: Nicolas Ferre - M43238 <Nicolas.Ferre@microchip.com>
Cc: Kavyasree Kotagiri - I30978 <redacted>; Ludovic
Desroches - M43218 [off-list ref];
linux@armlinux.org.uk; linux-arm-kernel@lists.infradead.org; linux-
kernel@vger.kernel.org; Manohar Puri - I30488
[off-list ref]; Madhuri Sripada - I34878
[off-list ref]
Subject: Re: [PATCH v2] ARM: at91: add basic support for new SoC lan966x

EXTERNAL EMAIL: Do not click links or open attachments unless you know the
content is safe

Hello,

I wanted to reply earlier but I still have a few comments...

On 17/09/2021 15:41:01+0200, Nicolas Ferre wrote:
quoted
On 31/08/2021 at 12:21, kavyasree.kotagiri@microchip.com wrote:
quoted
From: Kavyasree Kotagiri <redacted>

This patch introduces Microchip LAN966X ARMv7 based SoC family
of multiport gigabit AVB/TSN-capable ethernet switches.
It supports two SKUs: 4-port LAN9662 with multiprotocol
processing support and 8-port LAN9668 switch.

LAN966X includes copper and serial ethernet interfaces,
peripheral interfaces such as PCIe, USB, TWI, SPI, UART, QSPI,
SD/eMMC, Parallel Interface (PI) as well as synchronization
and trigger inputs/outputs.

Signed-off-by: Kavya Sree Kotagiri <redacted>
Your name fixed with your permission and as Rob suggested in a previous
series.
quoted
---
v1 -> v2:
- Removed lan966x_dt_device_init().
   System boots fine without this function.

  arch/arm/mach-at91/Kconfig   | 13 +++++++++++++
  arch/arm/mach-at91/Makefile  |  1 +
Kconfig and Makefile files updated to avoid merge conflict with SAMA7G5
that
quoted
was integrated in 5.15-rc1.
quoted
  arch/arm/mach-at91/lan966x.c | 25 +++++++++++++++++++++++++
quoted
  3 files changed, 39 insertions(+)
  create mode 100644 arch/arm/mach-at91/lan966x.c
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index ccd7e80ce943..06cb425af761 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -122,6 +122,14 @@ config SOC_SAM9X60
    help
      Select this if you are using Microchip's SAM9X60 SoC
+config SOC_LAN966X
+   bool "ARMv7 based Microchip LAN966X SoC family"
+   depends on ARCH_MULTI_V7
+   select SOC_LAN966
+   select DW_APB_TIMER_OF
+   help
+     This enables support for ARMv7 based Microchip LAN966X SoC
family.
quoted
quoted
+
I don't think SOC_LAN966X is a good name or said differently as it is
not part specific, I don't get why this isn't merged with SOC_LAN966. I
would have one or the other.
I am using two different names to represent LAN966 as a new SoC family and 
LAN966X as its SKU's - LAN9662 and LAN9668
quoted
quoted
  comment "Clocksource driver selection"
  config ATMEL_CLOCKSOURCE_PIT
@@ -188,6 +196,11 @@ config SOC_SAMA5
    select SOC_SAM_V7
    select SRAM if PM
+config SOC_LAN966
+   bool
+   select ARM_GIC
+   select MEMORY
+
  config ATMEL_PM
    bool
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-
at91/Makefile
quoted
quoted
index f565490f1b70..93cfd5b4e6d4 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -6,6 +6,7 @@
  # CPU-specific support
  obj-$(CONFIG_SOC_AT91RM9200)      += at91rm9200.o
  obj-$(CONFIG_SOC_AT91SAM9)        += at91sam9.o
+obj-$(CONFIG_SOC_LAN966X)  += lan966x.o
  obj-$(CONFIG_SOC_SAM9X60) += sam9x60.o
  obj-$(CONFIG_SOC_SAMA5)           += sama5.o
  obj-$(CONFIG_SOC_SAMV7)           += samv7.o
diff --git a/arch/arm/mach-at91/lan966x.c b/arch/arm/mach-
at91/lan966x.c
quoted
quoted
new file mode 100644
index 000000000000..154d616569ae
--- /dev/null
+++ b/arch/arm/mach-at91/lan966x.c
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Setup code for LAN966X
+ *
+ * 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>
+
I'm not sure all those include are actually used.
quoted
quoted
+#include "generic.h"
+
+static const char *const lan966x_dt_board_compat[] __initconst = {
+   "microchip,lan966x",
This compatibility string will need to be documented in
Documentation/arm/microchip.rst
and
Documentation/devicetree/bindings/arm/atmel-at91.yaml (or a similar file,
as
quoted
you wish).

You'll add it to your DT patches.
Yes and you'll have to document lan9662 and lan9668. Really, wildcards
in the compatible strings are usually not a good idea.
quoted
quoted
+   NULL
+};
+
+DT_MACHINE_START(lan966x_dt, "Microchip LAN966X")
+   /* Maintainer: Microchip */
+   .dt_compat      = lan966x_dt_board_compat,
+MACHINE_END
All the rest looks good to me: no need to resend. It's queued in at91-soc
branch targeting 5.16.
You'll see it appearing in linux-next in the next few days.
Well, I'm still wondering one thing, is arch/arm/mach-at91/lan966x.c
necessary at all to boot the platform?
Yes, it is needed as it introduces new compatible string for new SoC LAN966X.
Could you please let me know if there is a different way to do this?
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help