]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net: lan969x: add match data for lan969x
authorDaniel Machon <daniel.machon@microchip.com>
Wed, 23 Oct 2024 22:01:25 +0000 (00:01 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 31 Oct 2024 01:08:05 +0000 (18:08 -0700)
Add match data for lan969x, with initial fields for iomap, iomap_size
and ioranges. Add new Kconfig symbol CONFIG_LAN969X_CONFIG for compiling
the lan969x driver.

It has been decided to give lan969x its own Kconfig symbol, as a
considerable amount of code is needed, beside the Sparx5 code, to add
full chip support (and more will be added in future series). Also this
makes it possible to compile Sparx5 without lan969x.

Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com>
Signed-off-by: Daniel Machon <daniel.machon@microchip.com>
Link: https://patch.msgid.link/20241024-sparx5-lan969x-switch-driver-2-v2-6-a0b5fae88a0f@microchip.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
MAINTAINERS
drivers/net/ethernet/microchip/Kconfig
drivers/net/ethernet/microchip/Makefile
drivers/net/ethernet/microchip/lan969x/Kconfig [new file with mode: 0644]
drivers/net/ethernet/microchip/lan969x/Makefile [new file with mode: 0644]
drivers/net/ethernet/microchip/lan969x/lan969x.c [new file with mode: 0644]
drivers/net/ethernet/microchip/lan969x/lan969x.h [new file with mode: 0644]

index c08624a073bcc36585c4f7c228d2d3191c519797..c4027397286be699e541c7571631d67a4c4cf6f7 100644 (file)
@@ -15091,6 +15091,13 @@ S:     Maintained
 F:     Documentation/devicetree/bindings/interrupt-controller/microchip,lan966x-oic.yaml
 F:     drivers/irqchip/irq-lan966x-oic.c
 
+MICROCHIP LAN969X ETHERNET DRIVER
+M:     Daniel Machon <daniel.machon@microchip.com>
+M:     UNGLinuxDriver@microchip.com
+L:     netdev@vger.kernel.org
+S:     Maintained
+F:     drivers/net/ethernet/microchip/lan969x/*
+
 MICROCHIP LCDFB DRIVER
 M:     Nicolas Ferre <nicolas.ferre@microchip.com>
 L:     linux-fbdev@vger.kernel.org
index ee046468652c7536934d1066af0ad6bd4b229373..73832fb2bc32fae8ffd019f9848f8581f6bbd8f6 100644 (file)
@@ -59,6 +59,7 @@ config LAN743X
 
 source "drivers/net/ethernet/microchip/lan865x/Kconfig"
 source "drivers/net/ethernet/microchip/lan966x/Kconfig"
+source "drivers/net/ethernet/microchip/lan969x/Kconfig"
 source "drivers/net/ethernet/microchip/sparx5/Kconfig"
 source "drivers/net/ethernet/microchip/vcap/Kconfig"
 source "drivers/net/ethernet/microchip/fdma/Kconfig"
index 3c65baed9fd876267767a309d23338d27e898887..7770df82200f1c17bbd5ff8fbaf2be51e7f82fb1 100644 (file)
@@ -11,6 +11,7 @@ lan743x-objs := lan743x_main.o lan743x_ethtool.o lan743x_ptp.o
 
 obj-$(CONFIG_LAN865X) += lan865x/
 obj-$(CONFIG_LAN966X_SWITCH) += lan966x/
+obj-$(CONFIG_LAN969X_SWITCH) += lan969x/
 obj-$(CONFIG_SPARX5_SWITCH) += sparx5/
 obj-$(CONFIG_VCAP) += vcap/
 obj-$(CONFIG_FDMA) += fdma/
diff --git a/drivers/net/ethernet/microchip/lan969x/Kconfig b/drivers/net/ethernet/microchip/lan969x/Kconfig
new file mode 100644 (file)
index 0000000..728180d
--- /dev/null
@@ -0,0 +1,5 @@
+config LAN969X_SWITCH
+       tristate "Lan969x switch driver"
+       depends on SPARX5_SWITCH
+       help
+         This driver supports the lan969x family of network switch devices.
diff --git a/drivers/net/ethernet/microchip/lan969x/Makefile b/drivers/net/ethernet/microchip/lan969x/Makefile
new file mode 100644 (file)
index 0000000..f3d9dfc
--- /dev/null
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Makefile for the Microchip lan969x network device drivers.
+#
+
+obj-$(CONFIG_LAN969X_SWITCH) += lan969x-switch.o
+
+lan969x-switch-y := lan969x.o
+
+# Provide include files
+ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/fdma
+ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/vcap
diff --git a/drivers/net/ethernet/microchip/lan969x/lan969x.c b/drivers/net/ethernet/microchip/lan969x/lan969x.c
new file mode 100644 (file)
index 0000000..488af2a
--- /dev/null
@@ -0,0 +1,104 @@
+// SPDX-License-Identifier: GPL-2.0+
+/* Microchip lan969x Switch driver
+ *
+ * Copyright (c) 2024 Microchip Technology Inc. and its subsidiaries.
+ */
+
+#include "lan969x.h"
+
+static const struct sparx5_main_io_resource lan969x_main_iomap[] =  {
+       { TARGET_CPU,                   0xc0000, 0 }, /* 0xe00c0000 */
+       { TARGET_FDMA,                  0xc0400, 0 }, /* 0xe00c0400 */
+       { TARGET_GCB,                 0x2010000, 1 }, /* 0xe2010000 */
+       { TARGET_QS,                  0x2030000, 1 }, /* 0xe2030000 */
+       { TARGET_PTP,                 0x2040000, 1 }, /* 0xe2040000 */
+       { TARGET_ANA_ACL,             0x2050000, 1 }, /* 0xe2050000 */
+       { TARGET_LRN,                 0x2060000, 1 }, /* 0xe2060000 */
+       { TARGET_VCAP_SUPER,          0x2080000, 1 }, /* 0xe2080000 */
+       { TARGET_QSYS,                0x20a0000, 1 }, /* 0xe20a0000 */
+       { TARGET_QFWD,                0x20b0000, 1 }, /* 0xe20b0000 */
+       { TARGET_XQS,                 0x20c0000, 1 }, /* 0xe20c0000 */
+       { TARGET_VCAP_ES2,            0x20d0000, 1 }, /* 0xe20d0000 */
+       { TARGET_VCAP_ES0,            0x20e0000, 1 }, /* 0xe20e0000 */
+       { TARGET_ANA_AC_POL,          0x2200000, 1 }, /* 0xe2200000 */
+       { TARGET_QRES,                0x2280000, 1 }, /* 0xe2280000 */
+       { TARGET_EACL,                0x22c0000, 1 }, /* 0xe22c0000 */
+       { TARGET_ANA_CL,              0x2400000, 1 }, /* 0xe2400000 */
+       { TARGET_ANA_L3,              0x2480000, 1 }, /* 0xe2480000 */
+       { TARGET_ANA_AC_SDLB,         0x2500000, 1 }, /* 0xe2500000 */
+       { TARGET_HSCH,                0x2580000, 1 }, /* 0xe2580000 */
+       { TARGET_REW,                 0x2600000, 1 }, /* 0xe2600000 */
+       { TARGET_ANA_L2,              0x2800000, 1 }, /* 0xe2800000 */
+       { TARGET_ANA_AC,              0x2900000, 1 }, /* 0xe2900000 */
+       { TARGET_VOP,                 0x2a00000, 1 }, /* 0xe2a00000 */
+       { TARGET_DEV2G5,              0x3004000, 1 }, /* 0xe3004000 */
+       { TARGET_DEV10G,              0x3008000, 1 }, /* 0xe3008000 */
+       { TARGET_PCS10G_BR,           0x300c000, 1 }, /* 0xe300c000 */
+       { TARGET_DEV2G5 +  1,         0x3010000, 1 }, /* 0xe3010000 */
+       { TARGET_DEV2G5 +  2,         0x3014000, 1 }, /* 0xe3014000 */
+       { TARGET_DEV2G5 +  3,         0x3018000, 1 }, /* 0xe3018000 */
+       { TARGET_DEV2G5 +  4,         0x301c000, 1 }, /* 0xe301c000 */
+       { TARGET_DEV10G +  1,         0x3020000, 1 }, /* 0xe3020000 */
+       { TARGET_PCS10G_BR +  1,      0x3024000, 1 }, /* 0xe3024000 */
+       { TARGET_DEV2G5 +  5,         0x3028000, 1 }, /* 0xe3028000 */
+       { TARGET_DEV2G5 +  6,         0x302c000, 1 }, /* 0xe302c000 */
+       { TARGET_DEV2G5 +  7,         0x3030000, 1 }, /* 0xe3030000 */
+       { TARGET_DEV2G5 +  8,         0x3034000, 1 }, /* 0xe3034000 */
+       { TARGET_DEV10G +  2,         0x3038000, 1 }, /* 0xe3038000 */
+       { TARGET_PCS10G_BR +  2,      0x303c000, 1 }, /* 0xe303c000 */
+       { TARGET_DEV2G5 +  9,         0x3040000, 1 }, /* 0xe3040000 */
+       { TARGET_DEV5G,               0x3044000, 1 }, /* 0xe3044000 */
+       { TARGET_PCS5G_BR,            0x3048000, 1 }, /* 0xe3048000 */
+       { TARGET_DEV2G5 + 10,         0x304c000, 1 }, /* 0xe304c000 */
+       { TARGET_DEV2G5 + 11,         0x3050000, 1 }, /* 0xe3050000 */
+       { TARGET_DEV2G5 + 12,         0x3054000, 1 }, /* 0xe3054000 */
+       { TARGET_DEV10G +  3,         0x3058000, 1 }, /* 0xe3058000 */
+       { TARGET_PCS10G_BR +  3,      0x305c000, 1 }, /* 0xe305c000 */
+       { TARGET_DEV2G5 + 13,         0x3060000, 1 }, /* 0xe3060000 */
+       { TARGET_DEV5G +  1,          0x3064000, 1 }, /* 0xe3064000 */
+       { TARGET_PCS5G_BR +  1,       0x3068000, 1 }, /* 0xe3068000 */
+       { TARGET_DEV2G5 + 14,         0x306c000, 1 }, /* 0xe306c000 */
+       { TARGET_DEV2G5 + 15,         0x3070000, 1 }, /* 0xe3070000 */
+       { TARGET_DEV2G5 + 16,         0x3074000, 1 }, /* 0xe3074000 */
+       { TARGET_DEV10G +  4,         0x3078000, 1 }, /* 0xe3078000 */
+       { TARGET_PCS10G_BR +  4,      0x307c000, 1 }, /* 0xe307c000 */
+       { TARGET_DEV2G5 + 17,         0x3080000, 1 }, /* 0xe3080000 */
+       { TARGET_DEV5G +  2,          0x3084000, 1 }, /* 0xe3084000 */
+       { TARGET_PCS5G_BR +  2,       0x3088000, 1 }, /* 0xe3088000 */
+       { TARGET_DEV2G5 + 18,         0x308c000, 1 }, /* 0xe308c000 */
+       { TARGET_DEV2G5 + 19,         0x3090000, 1 }, /* 0xe3090000 */
+       { TARGET_DEV2G5 + 20,         0x3094000, 1 }, /* 0xe3094000 */
+       { TARGET_DEV10G +  5,         0x3098000, 1 }, /* 0xe3098000 */
+       { TARGET_PCS10G_BR +  5,      0x309c000, 1 }, /* 0xe309c000 */
+       { TARGET_DEV2G5 + 21,         0x30a0000, 1 }, /* 0xe30a0000 */
+       { TARGET_DEV5G +  3,          0x30a4000, 1 }, /* 0xe30a4000 */
+       { TARGET_PCS5G_BR +  3,       0x30a8000, 1 }, /* 0xe30a8000 */
+       { TARGET_DEV2G5 + 22,         0x30ac000, 1 }, /* 0xe30ac000 */
+       { TARGET_DEV2G5 + 23,         0x30b0000, 1 }, /* 0xe30b0000 */
+       { TARGET_DEV2G5 + 24,         0x30b4000, 1 }, /* 0xe30b4000 */
+       { TARGET_DEV10G +  6,         0x30b8000, 1 }, /* 0xe30b8000 */
+       { TARGET_PCS10G_BR +  6,      0x30bc000, 1 }, /* 0xe30bc000 */
+       { TARGET_DEV2G5 + 25,         0x30c0000, 1 }, /* 0xe30c0000 */
+       { TARGET_DEV10G +  7,         0x30c4000, 1 }, /* 0xe30c4000 */
+       { TARGET_PCS10G_BR +  7,      0x30c8000, 1 }, /* 0xe30c8000 */
+       { TARGET_DEV2G5 + 26,         0x30cc000, 1 }, /* 0xe30cc000 */
+       { TARGET_DEV10G +  8,         0x30d0000, 1 }, /* 0xe30d0000 */
+       { TARGET_PCS10G_BR +  8,      0x30d4000, 1 }, /* 0xe30d4000 */
+       { TARGET_DEV2G5 + 27,         0x30d8000, 1 }, /* 0xe30d8000 */
+       { TARGET_DEV10G +  9,         0x30dc000, 1 }, /* 0xe30dc000 */
+       { TARGET_PCS10G_BR +  9,      0x30e0000, 1 }, /* 0xe30e0000 */
+       { TARGET_DSM,                 0x30ec000, 1 }, /* 0xe30ec000 */
+       { TARGET_PORT_CONF,           0x30f0000, 1 }, /* 0xe30f0000 */
+       { TARGET_ASM,                 0x3200000, 1 }, /* 0xe3200000 */
+};
+
+const struct sparx5_match_data lan969x_desc = {
+       .iomap      = lan969x_main_iomap,
+       .iomap_size = ARRAY_SIZE(lan969x_main_iomap),
+       .ioranges   = 2,
+};
+EXPORT_SYMBOL_GPL(lan969x_desc);
+
+MODULE_DESCRIPTION("Microchip lan969x switch driver");
+MODULE_AUTHOR("Daniel Machon <daniel.machon@microchip.com>");
+MODULE_LICENSE("Dual MIT/GPL");
diff --git a/drivers/net/ethernet/microchip/lan969x/lan969x.h b/drivers/net/ethernet/microchip/lan969x/lan969x.h
new file mode 100644 (file)
index 0000000..0507046
--- /dev/null
@@ -0,0 +1,15 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/* Microchip lan969x Switch driver
+ *
+ * Copyright (c) 2024 Microchip Technology Inc. and its subsidiaries.
+ */
+
+#ifndef __LAN969X_H__
+#define __LAN969X_H__
+
+#include "../sparx5/sparx5_main.h"
+
+/* lan969x.c */
+extern const struct sparx5_match_data lan969x_desc;
+
+#endif