OpenWrt – Rev 1

Subversion Repositories:
Rev:
From 36e516290611e613aa92996cb4339561452695b4 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@nbd.name>
Date: Fri, 7 Jul 2017 17:24:23 +0200
Subject: net: swconfig: adds openwrt switch layer

Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
 drivers/net/phy/Kconfig   | 83 +++++++++++++++++++++++++++++++++++++++++++++++
 drivers/net/phy/Makefile  | 15 +++++++++
 include/uapi/linux/Kbuild |  1 +
 3 files changed, 99 insertions(+)

--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -198,6 +198,89 @@ config LED_TRIGGER_PHY
                <Speed in megabits>Mbps or <Speed in gigabits>Gbps
 
 
+comment "Switch configuration API + drivers"
+
+config SWCONFIG
+       tristate "Switch configuration API"
+       ---help---
+         Switch configuration API using netlink. This allows
+         you to configure the VLAN features of certain switches.
+
+config SWCONFIG_LEDS
+       bool "Switch LED trigger support"
+       depends on (SWCONFIG && LEDS_TRIGGERS)
+
+config ADM6996_PHY
+       tristate "Driver for ADM6996 switches"
+       select SWCONFIG
+       ---help---
+         Currently supports the ADM6996FC and ADM6996M switches.
+         Support for FC is very limited.
+
+config AR8216_PHY
+       tristate "Driver for Atheros AR8216 switches"
+       select ETHERNET_PACKET_MANGLE
+       select SWCONFIG
+
+config AR8216_PHY_LEDS
+       bool "Atheros AR8216 switch LED support"
+       depends on (AR8216_PHY && LEDS_CLASS)
+
+source "drivers/net/phy/b53/Kconfig"
+
+config IP17XX_PHY
+       tristate "Driver for IC+ IP17xx switches"
+       select SWCONFIG
+
+config MVSWITCH_PHY
+       tristate "Driver for Marvell 88E6060 switches"
+       select ETHERNET_PACKET_MANGLE
+
+config MVSW61XX_PHY
+       tristate "Driver for Marvell 88E6171/6172 switches"
+       select SWCONFIG
+
+config PSB6970_PHY
+       tristate "Lantiq XWAY Tantos (PSB6970) Ethernet switch"
+       select SWCONFIG
+       select ETHERNET_PACKET_MANGLE
+
+config RTL8306_PHY
+       tristate "Driver for Realtek RTL8306S switches"
+       select SWCONFIG
+
+config RTL8366_SMI
+       tristate "Driver for the RTL8366 SMI interface"
+       depends on GPIOLIB
+       ---help---
+         This module implements the SMI interface protocol which is used
+         by some RTL8366 ethernet switch devices via the generic GPIO API.
+
+if RTL8366_SMI
+
+config RTL8366_SMI_DEBUG_FS
+       bool "RTL8366 SMI interface debugfs support"
+        depends on DEBUG_FS
+        default n
+
+config RTL8366S_PHY
+       tristate "Driver for the Realtek RTL8366S switch"
+       select SWCONFIG
+
+config RTL8366RB_PHY
+       tristate "Driver for the Realtek RTL8366RB switch"
+       select SWCONFIG
+
+config RTL8367_PHY
+       tristate "Driver for the Realtek RTL8367R/M switches"
+       select SWCONFIG
+
+config RTL8367B_PHY
+       tristate "Driver fot the Realtek RTL8367R-VB switch"
+       select SWCONFIG
+
+endif # RTL8366_SMI
+
 comment "MII PHY device drivers"
 
 config SFP
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -22,6 +22,21 @@ libphy-$(CONFIG_LED_TRIGGER_PHY)     += phy_
 obj-$(CONFIG_PHYLINK)          += phylink.o
 obj-$(CONFIG_PHYLIB)           += libphy.o
 
+obj-$(CONFIG_SWCONFIG)         += swconfig.o
+obj-$(CONFIG_ADM6996_PHY)      += adm6996.o
+obj-$(CONFIG_AR8216_PHY)       += ar8216.o ar8327.o
+obj-$(CONFIG_SWCONFIG_B53)     += b53/
+obj-$(CONFIG_IP17XX_PHY)       += ip17xx.o
+obj-$(CONFIG_MVSWITCH_PHY)     += mvswitch.o
+obj-$(CONFIG_MVSW61XX_PHY)     += mvsw61xx.o
+obj-$(CONFIG_PSB6970_PHY)      += psb6970.o
+obj-$(CONFIG_RTL8306_PHY)      += rtl8306.o
+obj-$(CONFIG_RTL8366_SMI)      += rtl8366_smi.o
+obj-$(CONFIG_RTL8366S_PHY)     += rtl8366s.o
+obj-$(CONFIG_RTL8366RB_PHY)    += rtl8366rb.o
+obj-$(CONFIG_RTL8367_PHY)      += rtl8367.o
+obj-$(CONFIG_RTL8367B_PHY)     += rtl8367b.o
+
 obj-$(CONFIG_MDIO_BCM_IPROC)   += mdio-bcm-iproc.o
 obj-$(CONFIG_MDIO_BCM_UNIMAC)  += mdio-bcm-unimac.o
 obj-$(CONFIG_MDIO_BITBANG)     += mdio-bitbang.o
--- a/include/linux/platform_data/b53.h
+++ b/include/linux/platform_data/b53.h
@@ -25,6 +25,9 @@ struct b53_platform_data {
        u32 chip_id;
        u16 enabled_ports;
 
+       /* allow to specify an ethX alias */
+       const char *alias;
+
        /* only used by MMAP'd driver */
        unsigned big_endian:1;
        void __iomem *regs;