mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-01-15 12:25:41 +01:00
net: lan969x: add match data for lan969x
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>
This commit is contained in:
committed by
Jakub Kicinski
parent
199498490c
commit
7280f01e79
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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/
|
||||
|
||||
5
drivers/net/ethernet/microchip/lan969x/Kconfig
Normal file
5
drivers/net/ethernet/microchip/lan969x/Kconfig
Normal file
@@ -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.
|
||||
12
drivers/net/ethernet/microchip/lan969x/Makefile
Normal file
12
drivers/net/ethernet/microchip/lan969x/Makefile
Normal file
@@ -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
|
||||
104
drivers/net/ethernet/microchip/lan969x/lan969x.c
Normal file
104
drivers/net/ethernet/microchip/lan969x/lan969x.c
Normal file
@@ -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");
|
||||
15
drivers/net/ethernet/microchip/lan969x/lan969x.h
Normal file
15
drivers/net/ethernet/microchip/lan969x/lan969x.h
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user