From fa764e714bf651c27c1a7d05c894df6385e2f4c3 Mon Sep 17 00:00:00 2001 From: Giulio Date: Wed, 23 Sep 2020 19:07:58 +0200 Subject: [PATCH] First commit for final version of the device --- build-tgr.sh | 4 +- ...00-imx8mm-Add-imx8mm-tgr-device-tree.patch | 142 ++- ...imx8mm-Add-Microchip-USB2422-support.patch | 2 +- ...1002-imx8mm-Add-PCA9450-PMIC-support.patch | 8 +- .../1003-imx8mm-mv88e6071.patch | 1003 +++++++++++++++++ .../1004-imx8mm-custom-devname.patch | 26 + .../1005-imx8mm-dsa-slave-address.patch | 49 + .../tgr/kernel-patches/1006-imx8mm-shut.patch | 322 ++++++ .../1007-imx8mm-phy-speed.patch | 13 + .../1008-imx8mm-clear-stats.patch | 235 ++++ ...009-imx8mm-mv88e6xxx-sysfs-interface.patch | 229 ++++ .../1010-imx8mm-netdev-trigger.patch | 527 +++++++++ buildroot/board/tiesse/tgr/linux.config | 7 +- .../0000-Add-imx8mm-tgr-support.patch | 10 +- conf/etc/network/interfaces | 2 +- conf/lib/modules/4.14.98/extra/qca6174.ko | Bin 5288040 -> 5290088 bytes update/update.sh | 4 +- 17 files changed, 2491 insertions(+), 92 deletions(-) create mode 100644 buildroot/board/tiesse/tgr/kernel-patches/1003-imx8mm-mv88e6071.patch create mode 100644 buildroot/board/tiesse/tgr/kernel-patches/1004-imx8mm-custom-devname.patch create mode 100644 buildroot/board/tiesse/tgr/kernel-patches/1005-imx8mm-dsa-slave-address.patch create mode 100644 buildroot/board/tiesse/tgr/kernel-patches/1006-imx8mm-shut.patch create mode 100644 buildroot/board/tiesse/tgr/kernel-patches/1007-imx8mm-phy-speed.patch create mode 100644 buildroot/board/tiesse/tgr/kernel-patches/1008-imx8mm-clear-stats.patch create mode 100644 buildroot/board/tiesse/tgr/kernel-patches/1009-imx8mm-mv88e6xxx-sysfs-interface.patch create mode 100644 buildroot/board/tiesse/tgr/kernel-patches/1010-imx8mm-netdev-trigger.patch diff --git a/build-tgr.sh b/build-tgr.sh index 01560a3..b7858cb 100755 --- a/build-tgr.sh +++ b/build-tgr.sh @@ -49,8 +49,8 @@ openssl rsa -in target/keys/signingkey.pem -outform PEM -pubout -out target/keys cp target/keys/signingpub.pem target/overlay/pub.pem echo "[+] Generating sample update package" -mkdir -p home/update -echo "sample update" > home/update/sample.txt +mkdir -p home/upgrade +echo "sample update" > home/upgrade/sample.txt tar -cvf update.tar home openssl dgst -sha256 -sign target/keys/signingkey.pem -out update.tar.sig update.tar cat update.tar > update.tar.cc diff --git a/buildroot/board/tiesse/tgr/kernel-patches/1000-imx8mm-Add-imx8mm-tgr-device-tree.patch b/buildroot/board/tiesse/tgr/kernel-patches/1000-imx8mm-Add-imx8mm-tgr-device-tree.patch index b4102f3..32a5f1e 100644 --- a/buildroot/board/tiesse/tgr/kernel-patches/1000-imx8mm-Add-imx8mm-tgr-device-tree.patch +++ b/buildroot/board/tiesse/tgr/kernel-patches/1000-imx8mm-Add-imx8mm-tgr-device-tree.patch @@ -1,8 +1,8 @@ -diff --git arch/arm64/boot/dts/freescale/Makefile arch/arm64/boot/dts/freescale/Makefile -index da7ede2f5744..2a0a0f56b9a8 100644 ---- linux-imx/arch/arm64/boot/dts/freescale/Makefile +Index: arch/arm64/boot/dts/freescale/Makefile +=================================================================== +--- arch/arm64/boot/dts/freescale/Makefile.orig +++ linux-imx/arch/arm64/boot/dts/freescale/Makefile -@@ -116,7 +116,8 @@ dtb-$(CONFIG_ARCH_FSL_IMX8MQ) += fsl-imx8mq-ddr3l-arm2.dtb \ +@@ -116,7 +116,8 @@ dtb-$(CONFIG_ARCH_FSL_IMX8MQ) += fsl-imx fsl-imx8mq-evk-inmate.dtb \ fsl-imx8mq-evk-dp.dtb \ fsl-imx8mq-evk-edp.dtb @@ -12,12 +12,11 @@ index da7ede2f5744..2a0a0f56b9a8 100644 fsl-imx8mm-evk-ak4497.dtb \ fsl-imx8mm-evk-m4.dtb \ fsl-imx8mm-evk-ak5558.dtb \ -diff --git arch/arm64/boot/dts/freescale/fsl-imx8mm-tgr.dts arch/arm64/boot/dts/freescale/fsl-imx8mm-tgr.dts -new file mode 100755 -index 000000000000..411de1c8c620 +Index: arch/arm64/boot/dts/freescale/fsl-imx8mm-tgr.dts +=================================================================== --- /dev/null +++ linux-imx/arch/arm64/boot/dts/freescale/fsl-imx8mm-tgr.dts -@@ -0,0 +1,629 @@ +@@ -0,0 +1,646 @@ +/* + * Copyright 2018 NXP + * @@ -52,30 +51,12 @@ index 000000000000..411de1c8c620 + + pwr { + label = "pwr"; -+ gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>; ++ gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>; + default-state = "on"; + }; + + lte { + label = "lte"; -+ gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ }; -+ -+ ble { -+ label = "ble"; -+ gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ }; -+ -+ wifi { -+ label = "wifi"; -+ gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>; -+ default-state = "off"; -+ }; -+ -+ wan { -+ label = "wan"; + gpios = <&gpio4 4 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; @@ -103,15 +84,6 @@ index 000000000000..411de1c8c620 + }; +}; + -+&memory { -+ reg = <0x0 0x40000000 0 0x40000000>; -+}; -+ -+&linux_cma { -+ size = <0 0x14000000>; -+ alloc-ranges = <0 0x40000000 0 0x30000000>; -+}; -+ +&iomuxc { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_hog>; @@ -130,7 +102,8 @@ index 000000000000..411de1c8c620 + MX8MM_IOMUXC_SAI1_TXFS_GPIO4_IO10 0x80 /* OC HUB USB */ + MX8MM_IOMUXC_SAI1_TXD7_GPIO4_IO19 0x10 /* USB PWR */ + MX8MM_IOMUXC_SAI1_MCLK_GPIO4_IO20 0x80 /* OC USB */ -+ MX8MM_IOMUXC_GPIO1_IO14_GPIO1_IO14 0x10 /* RST HUB */ ++ ++ MX8MM_IOMUXC_GPIO1_IO14_GPIO1_IO14 0x10 + + /* SDIO WIFI */ + MX8MM_IOMUXC_SAI1_TXD1_GPIO4_IO13 0x10 /* SDIO WIFI ENABLE */ @@ -140,6 +113,9 @@ index 000000000000..411de1c8c620 + MX8MM_IOMUXC_SAI1_RXC_GPIO4_IO1 0x10 /* MODEM RST */ + MX8MM_IOMUXC_SAI1_RXD0_GPIO4_IO2 0x10 /* SIM SELECT */ + MX8MM_IOMUXC_SAI1_RXD1_GPIO4_IO3 0x10 /* CMD_POWER */ ++ ++ /* RST BUTTON */ ++ MX8MM_IOMUXC_SAI1_RXD7_GPIO4_IO9 0x1c0 + >; + }; + @@ -519,12 +495,6 @@ index 000000000000..411de1c8c620 + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c3>; + status = "okay"; -+ -+ usb2422@2c { -+ compatible = "microchip,usb2422"; -+ reg = <0x2c>; -+ reset-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>; -+ }; +}; + + @@ -536,26 +506,72 @@ index 000000000000..411de1c8c620 + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_fec1>, <&pinctrl_fec1_gpio>; + phy-mode = "rmii"; -+ phy-handle = <ðphy0>; + fsl,magic-packet; ++ fsl,devname = "ethsw0"; + status = "okay"; + -+ phy-reset-gpios = <&gpio4 17 GPIO_ACTIVE_LOW>; -+ phy-reset-duration = <10>; -+ + assigned-clocks = <&clk IMX8MM_CLK_ENET_REF_SRC>; + assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_50M>; + assigned-clock-rates = <50000000>; + ++ fixed-link { ++ speed = <100>; ++ full-duplex; ++ }; ++ + mdio { + #address-cells = <1>; + #size-cells = <0>; + -+ ethphy0: ethernet-phy@5 { -+ compatible = "ethernet-phy-ieee802.3-c22"; -+ reg = <0x5>; -+ clocks = <&clk IMX8MM_CLK_ENET_REF_SRC>; -+ clock-names = "rmii-ref"; ++ switch0: switch@16 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ compatible = "marvell,mv88e6250"; ++ reg = <0x10>; ++ dsa,member = <0 0>; ++ reset-gpios = <&gpio4 17 GPIO_ACTIVE_LOW>; ++ ++ ports { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ port@5 { ++ reg = <5>; ++ ethernet = <&fec1>; ++ phy-mode = "rmii"; ++ ++ fixed-link { ++ speed = <100>; ++ full-duplex; ++ }; ++ }; ++ ++ port@1 { ++ reg = <1>; ++ label = "eth0"; ++ phy-handle = <&switch0phy1>; ++ }; ++ ++ port@2 { ++ reg = <2>; ++ label = "eth1"; ++ phy-handle = <&switch0phy2>; ++ }; ++ ++ }; ++ ++ mdio { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ switch0phy1: switch0phy1@11 { ++ reg = <0x11>; ++ }; ++ switch0phy2: switch0phy2@12 { ++ reg = <0x12>; ++ }; ++ }; + }; + }; +}; @@ -647,25 +663,3 @@ index 000000000000..411de1c8c620 +&A53_0 { + arm-supply = <&buck2_reg>; +}; -diff --git a/arch/arm64/boot/dts/freescale/fsl-imx8mm.dtsi b/arch/arm64/boot/dts/freescale/fsl-imx8mm.dtsi -index e200219ea8bb..333c9fbaf07f 100644 ---- linux-imx/arch/arm64/boot/dts/freescale/fsl-imx8mm.dtsi -+++ linux-imx/arch/arm64/boot/dts/freescale/fsl-imx8mm.dtsi -@@ -65,7 +65,7 @@ - }; - }; - -- memory@40000000 { -+ memory: memory@40000000 { - device_type = "memory"; - reg = <0x0 0x40000000 0 0x80000000>; - }; -@@ -76,7 +76,7 @@ - ranges; - - /* global autoconfigured region for contiguous allocations */ -- linux,cma { -+ linux_cma: linux,cma { - compatible = "shared-dma-pool"; - reusable; - size = <0 0x28000000>; diff --git a/buildroot/board/tiesse/tgr/kernel-patches/1001-imx8mm-Add-Microchip-USB2422-support.patch b/buildroot/board/tiesse/tgr/kernel-patches/1001-imx8mm-Add-Microchip-USB2422-support.patch index 2823a24..9630c32 100644 --- a/buildroot/board/tiesse/tgr/kernel-patches/1001-imx8mm-Add-Microchip-USB2422-support.patch +++ b/buildroot/board/tiesse/tgr/kernel-patches/1001-imx8mm-Add-Microchip-USB2422-support.patch @@ -1,6 +1,6 @@ diff --git drivers/usb/misc/usb251xb.c drivers/usb/misc/usb251xb.c index 135c91c434bf..a1ca97c07266 100644 ---- linux-imx/drivers/usb/misc/usb251xb.c +--- drivers/usb/misc/usb251xb.c +++ linux-imx/drivers/usb/misc/usb251xb.c @@ -155,6 +155,11 @@ struct usb251xb_data { char product_str[USB251XB_STRING_BUFSIZE / 2]; /* ASCII string */ diff --git a/buildroot/board/tiesse/tgr/kernel-patches/1002-imx8mm-Add-PCA9450-PMIC-support.patch b/buildroot/board/tiesse/tgr/kernel-patches/1002-imx8mm-Add-PCA9450-PMIC-support.patch index 3f08869..acd584c 100644 --- a/buildroot/board/tiesse/tgr/kernel-patches/1002-imx8mm-Add-PCA9450-PMIC-support.patch +++ b/buildroot/board/tiesse/tgr/kernel-patches/1002-imx8mm-Add-PCA9450-PMIC-support.patch @@ -1,6 +1,6 @@ diff --git drivers/mfd/Kconfig drivers/mfd/Kconfig index 997a6172735e..e33bd218301b 100644 ---- linux-imx/drivers/mfd/Kconfig +--- drivers/mfd/Kconfig +++ linux-imx/drivers/mfd/Kconfig @@ -1818,6 +1818,14 @@ config MFD_BD71837 if you say yes here you get support for the BD71837 @@ -19,7 +19,7 @@ index 997a6172735e..e33bd218301b 100644 diff --git drivers/mfd/Makefile drivers/mfd/Makefile index c6755df735ba..962dcc88d99c 100644 ---- linux-imx/drivers/mfd/Makefile +--- drivers/mfd/Makefile +++ linux-imx/drivers/mfd/Makefile @@ -232,3 +232,4 @@ obj-$(CONFIG_MFD_STM32_LPTIMER) += stm32-lptimer.o obj-$(CONFIG_MFD_STM32_TIMERS) += stm32-timers.o @@ -338,7 +338,7 @@ index 000000000000..85ce6e3eef68 +MODULE_LICENSE("GPL"); diff --git drivers/regulator/Kconfig drivers/regulator/Kconfig index 5361947ea726..e5b3c9ffb982 100644 ---- linux-imx/drivers/regulator/Kconfig +--- drivers/regulator/Kconfig +++ linux-imx/drivers/regulator/Kconfig @@ -983,5 +983,11 @@ config REGULATOR_BD71837 help @@ -354,7 +354,7 @@ index 5361947ea726..e5b3c9ffb982 100644 diff --git drivers/regulator/Makefile drivers/regulator/Makefile index 1bddbefbc8e7..0072ad5666f8 100644 ---- linux-imx/drivers/regulator/Makefile +--- drivers/regulator/Makefile +++ linux-imx/drivers/regulator/Makefile @@ -126,6 +126,7 @@ obj-$(CONFIG_REGULATOR_WM8350) += wm8350-regulator.o obj-$(CONFIG_REGULATOR_WM8400) += wm8400-regulator.o diff --git a/buildroot/board/tiesse/tgr/kernel-patches/1003-imx8mm-mv88e6071.patch b/buildroot/board/tiesse/tgr/kernel-patches/1003-imx8mm-mv88e6071.patch new file mode 100644 index 0000000..eb4c59a --- /dev/null +++ b/buildroot/board/tiesse/tgr/kernel-patches/1003-imx8mm-mv88e6071.patch @@ -0,0 +1,1003 @@ +Index: drivers/net/dsa/mv88e6xxx/chip.c +=================================================================== +--- drivers/net/dsa/mv88e6xxx/chip.c ++++ linux-imx/drivers/net/dsa/mv88e6xxx/chip.c +@@ -39,6 +39,7 @@ + #include "phy.h" + #include "port.h" + #include "serdes.h" ++#include "smi.h" + + static void assert_reg_lock(struct mv88e6xxx_chip *chip) + { +@@ -48,149 +49,6 @@ static void assert_reg_lock(struct mv88e + } + } + +-/* The switch ADDR[4:1] configuration pins define the chip SMI device address +- * (ADDR[0] is always zero, thus only even SMI addresses can be strapped). +- * +- * When ADDR is all zero, the chip uses Single-chip Addressing Mode, assuming it +- * is the only device connected to the SMI master. In this mode it responds to +- * all 32 possible SMI addresses, and thus maps directly the internal devices. +- * +- * When ADDR is non-zero, the chip uses Multi-chip Addressing Mode, allowing +- * multiple devices to share the SMI interface. In this mode it responds to only +- * 2 registers, used to indirectly access the internal SMI devices. +- */ +- +-static int mv88e6xxx_smi_read(struct mv88e6xxx_chip *chip, +- int addr, int reg, u16 *val) +-{ +- if (!chip->smi_ops) +- return -EOPNOTSUPP; +- +- return chip->smi_ops->read(chip, addr, reg, val); +-} +- +-static int mv88e6xxx_smi_write(struct mv88e6xxx_chip *chip, +- int addr, int reg, u16 val) +-{ +- if (!chip->smi_ops) +- return -EOPNOTSUPP; +- +- return chip->smi_ops->write(chip, addr, reg, val); +-} +- +-static int mv88e6xxx_smi_single_chip_read(struct mv88e6xxx_chip *chip, +- int addr, int reg, u16 *val) +-{ +- int ret; +- +- ret = mdiobus_read_nested(chip->bus, addr, reg); +- if (ret < 0) +- return ret; +- +- *val = ret & 0xffff; +- +- return 0; +-} +- +-static int mv88e6xxx_smi_single_chip_write(struct mv88e6xxx_chip *chip, +- int addr, int reg, u16 val) +-{ +- int ret; +- +- ret = mdiobus_write_nested(chip->bus, addr, reg, val); +- if (ret < 0) +- return ret; +- +- return 0; +-} +- +-static const struct mv88e6xxx_bus_ops mv88e6xxx_smi_single_chip_ops = { +- .read = mv88e6xxx_smi_single_chip_read, +- .write = mv88e6xxx_smi_single_chip_write, +-}; +- +-static int mv88e6xxx_smi_multi_chip_wait(struct mv88e6xxx_chip *chip) +-{ +- int ret; +- int i; +- +- for (i = 0; i < 16; i++) { +- ret = mdiobus_read_nested(chip->bus, chip->sw_addr, SMI_CMD); +- if (ret < 0) +- return ret; +- +- if ((ret & SMI_CMD_BUSY) == 0) +- return 0; +- } +- +- return -ETIMEDOUT; +-} +- +-static int mv88e6xxx_smi_multi_chip_read(struct mv88e6xxx_chip *chip, +- int addr, int reg, u16 *val) +-{ +- int ret; +- +- /* Wait for the bus to become free. */ +- ret = mv88e6xxx_smi_multi_chip_wait(chip); +- if (ret < 0) +- return ret; +- +- /* Transmit the read command. */ +- ret = mdiobus_write_nested(chip->bus, chip->sw_addr, SMI_CMD, +- SMI_CMD_OP_22_READ | (addr << 5) | reg); +- if (ret < 0) +- return ret; +- +- /* Wait for the read command to complete. */ +- ret = mv88e6xxx_smi_multi_chip_wait(chip); +- if (ret < 0) +- return ret; +- +- /* Read the data. */ +- ret = mdiobus_read_nested(chip->bus, chip->sw_addr, SMI_DATA); +- if (ret < 0) +- return ret; +- +- *val = ret & 0xffff; +- +- return 0; +-} +- +-static int mv88e6xxx_smi_multi_chip_write(struct mv88e6xxx_chip *chip, +- int addr, int reg, u16 val) +-{ +- int ret; +- +- /* Wait for the bus to become free. */ +- ret = mv88e6xxx_smi_multi_chip_wait(chip); +- if (ret < 0) +- return ret; +- +- /* Transmit the data to write. */ +- ret = mdiobus_write_nested(chip->bus, chip->sw_addr, SMI_DATA, val); +- if (ret < 0) +- return ret; +- +- /* Transmit the write command. */ +- ret = mdiobus_write_nested(chip->bus, chip->sw_addr, SMI_CMD, +- SMI_CMD_OP_22_WRITE | (addr << 5) | reg); +- if (ret < 0) +- return ret; +- +- /* Wait for the write command to complete. */ +- ret = mv88e6xxx_smi_multi_chip_wait(chip); +- if (ret < 0) +- return ret; +- +- return 0; +-} +- +-static const struct mv88e6xxx_bus_ops mv88e6xxx_smi_multi_chip_ops = { +- .read = mv88e6xxx_smi_multi_chip_read, +- .write = mv88e6xxx_smi_multi_chip_write, +-}; +- + int mv88e6xxx_read(struct mv88e6xxx_chip *chip, int addr, int reg, u16 *val) + { + int err; +@@ -650,6 +508,12 @@ static void mv88e6095_stats_get_strings( + STATS_TYPE_BANK0 | STATS_TYPE_PORT); + } + ++static void mv88e6250_stats_get_strings(struct mv88e6xxx_chip *chip, ++ uint8_t *data) ++{ ++ mv88e6xxx_stats_get_strings(chip, data, STATS_TYPE_BANK0); ++} ++ + static void mv88e6320_stats_get_strings(struct mv88e6xxx_chip *chip, + uint8_t *data) + { +@@ -686,6 +550,11 @@ static int mv88e6095_stats_get_sset_coun + STATS_TYPE_PORT); + } + ++static int mv88e6250_stats_get_sset_count(struct mv88e6xxx_chip *chip) ++{ ++ return mv88e6xxx_stats_get_sset_count(chip, STATS_TYPE_BANK0); ++} ++ + static int mv88e6320_stats_get_sset_count(struct mv88e6xxx_chip *chip) + { + return mv88e6xxx_stats_get_sset_count(chip, STATS_TYPE_BANK0 | +@@ -728,6 +597,13 @@ static void mv88e6095_stats_get_stats(st + 0, MV88E6XXX_G1_STATS_OP_HIST_RX_TX); + } + ++static void mv88e6250_stats_get_stats(struct mv88e6xxx_chip *chip, int port, ++ uint64_t *data) ++{ ++ mv88e6xxx_stats_get_stats(chip, port, data, STATS_TYPE_BANK0, ++ 0, MV88E6XXX_G1_STATS_OP_HIST_RX_TX); ++} ++ + static void mv88e6320_stats_get_stats(struct mv88e6xxx_chip *chip, int port, + uint64_t *data) + { +@@ -2901,6 +2777,40 @@ static const struct mv88e6xxx_ops mv88e6 + .serdes_power = mv88e6352_serdes_power, + }; + ++static const struct mv88e6xxx_ops mv88e6250_ops = { ++ /* MV88E6XXX_FAMILY_6250 */ ++ .irl_init_all = mv88e6352_g2_irl_init_all, ++ .get_eeprom = mv88e6xxx_g2_get_eeprom16, ++ .set_eeprom = mv88e6xxx_g2_set_eeprom16, ++ .set_switch_mac = mv88e6xxx_g2_set_switch_mac, ++ .phy_read = mv88e6xxx_g2_smi_phy_read, ++ .phy_write = mv88e6xxx_g2_smi_phy_write, ++ .port_set_link = mv88e6xxx_port_set_link, ++ .port_set_duplex = mv88e6xxx_port_set_duplex, ++ .port_set_rgmii_delay = mv88e6352_port_set_rgmii_delay, ++ .port_set_speed = mv88e6250_port_set_speed, ++ .port_tag_remap = mv88e6095_port_tag_remap, ++ .port_set_frame_mode = mv88e6351_port_set_frame_mode, ++ .port_set_egress_floods = mv88e6352_port_set_egress_floods, ++ .port_set_ether_type = mv88e6351_port_set_ether_type, ++ .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, ++ .port_pause_limit = mv88e6097_port_pause_limit, ++ .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, ++ .stats_snapshot = mv88e6320_g1_stats_snapshot, ++ .stats_set_histogram = mv88e6095_g1_stats_set_histogram, ++ .stats_get_sset_count = mv88e6250_stats_get_sset_count, ++ .stats_get_strings = mv88e6250_stats_get_strings, ++ .stats_get_stats = mv88e6250_stats_get_stats, ++ .set_cpu_port = mv88e6095_g1_set_cpu_port, ++ .set_egress_port = mv88e6095_g1_set_egress_port, ++ .watchdog_ops = &mv88e6250_watchdog_ops, ++ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu, ++ .pot_clear = mv88e6xxx_g2_pot_clear, ++ .reset = mv88e6250_g1_reset, ++ .vtu_getnext = mv88e6250_g1_vtu_getnext, ++ .vtu_loadpurge = mv88e6250_g1_vtu_loadpurge, ++}; ++ + static const struct mv88e6xxx_ops mv88e6290_ops = { + /* MV88E6XXX_FAMILY_6390 */ + .setup_errata = mv88e6390_setup_errata, +@@ -3218,6 +3128,25 @@ static const struct mv88e6xxx_ops mv88e6 + }; + + static const struct mv88e6xxx_info mv88e6xxx_table[] = { ++ [MV88E6071] = { ++ .prod_num = MV88E6XXX_PORT_SWITCH_ID_PROD_6071, ++ .family = MV88E6XXX_FAMILY_6250, ++ .name = "Marvell 88E6071", ++ .num_databases = 64, ++ .num_ports = 7, ++ .max_vid = 4095, ++ .port_base_addr = 0x08, ++ .global1_addr = 0x0f, ++ .global2_addr = 0x07, ++ .age_time_coeff = 15000, ++ .g1_irqs = 9, ++ .g2_irqs = 10, ++ .atu_move_port_mask = 0xf, ++ .dual_chip = true, ++ .tag_protocol = DSA_TAG_PROTO_DSA, ++ .ops = &mv88e6250_ops, ++ }, ++ + [MV88E6085] = { + .prod_num = MV88E6XXX_PORT_SWITCH_ID_PROD_6085, + .family = MV88E6XXX_FAMILY_6097, +@@ -3551,6 +3480,25 @@ static const struct mv88e6xxx_info mv88e + .ops = &mv88e6240_ops, + }, + ++ [MV88E6250] = { ++ .prod_num = MV88E6XXX_PORT_SWITCH_ID_PROD_6250, ++ .family = MV88E6XXX_FAMILY_6250, ++ .name = "Marvell 88E6250", ++ .num_databases = 64, ++ .num_ports = 7, ++ .max_vid = 4095, ++ .port_base_addr = 0x08, ++ .global1_addr = 0x0f, ++ .global2_addr = 0x07, ++ .age_time_coeff = 15000, ++ .g1_irqs = 9, ++ .g2_irqs = 10, ++ .atu_move_port_mask = 0xf, ++ .dual_chip = true, ++ .tag_protocol = DSA_TAG_PROTO_DSA, ++ .ops = &mv88e6250_ops, ++ }, ++ + [MV88E6290] = { + .prod_num = MV88E6XXX_PORT_SWITCH_ID_PROD_6290, + .family = MV88E6XXX_FAMILY_6390, +@@ -3786,22 +3734,6 @@ static struct mv88e6xxx_chip *mv88e6xxx_ + return chip; + } + +-static int mv88e6xxx_smi_init(struct mv88e6xxx_chip *chip, +- struct mii_bus *bus, int sw_addr) +-{ +- if (sw_addr == 0) +- chip->smi_ops = &mv88e6xxx_smi_single_chip_ops; +- else if (chip->info->multi_chip) +- chip->smi_ops = &mv88e6xxx_smi_multi_chip_ops; +- else +- return -EINVAL; +- +- chip->bus = bus; +- chip->sw_addr = sw_addr; +- +- return 0; +-} +- + static enum dsa_tag_protocol mv88e6xxx_get_tag_protocol(struct dsa_switch *ds) + { + struct mv88e6xxx_chip *chip = ds->priv; +@@ -3832,6 +3764,7 @@ static const char *mv88e6xxx_drv_probe(s + if (err) + goto free; + ++ mv88e6xxx_hardware_reset(chip); + err = mv88e6xxx_detect(chip); + if (err) + goto free; +@@ -3988,6 +3921,7 @@ static int mv88e6xxx_probe(struct mdio_d + if (IS_ERR(chip->reset)) + return PTR_ERR(chip->reset); + ++ mv88e6xxx_hardware_reset(chip); + err = mv88e6xxx_detect(chip); + if (err) + return err; +@@ -4081,6 +4015,10 @@ static const struct of_device_id mv88e6x + .compatible = "marvell,mv88e6190", + .data = &mv88e6xxx_table[MV88E6190], + }, ++ { ++ .compatible = "marvell,mv88e6250", ++ .data = &mv88e6xxx_table[MV88E6250], ++ }, + { /* sentinel */ }, + }; + +Index: drivers/net/dsa/mv88e6xxx/chip.h +=================================================================== +--- drivers/net/dsa/mv88e6xxx/chip.h ++++ linux-imx/drivers/net/dsa/mv88e6xxx/chip.h +@@ -22,17 +22,6 @@ + #define UINT64_MAX (u64)(~((u64)0)) + #endif + +-#define SMI_CMD 0x00 +-#define SMI_CMD_BUSY BIT(15) +-#define SMI_CMD_CLAUSE_22 BIT(12) +-#define SMI_CMD_OP_22_WRITE ((1 << 10) | SMI_CMD_BUSY | SMI_CMD_CLAUSE_22) +-#define SMI_CMD_OP_22_READ ((2 << 10) | SMI_CMD_BUSY | SMI_CMD_CLAUSE_22) +-#define SMI_CMD_OP_45_WRITE_ADDR ((0 << 10) | SMI_CMD_BUSY) +-#define SMI_CMD_OP_45_WRITE_DATA ((1 << 10) | SMI_CMD_BUSY) +-#define SMI_CMD_OP_45_READ_DATA ((2 << 10) | SMI_CMD_BUSY) +-#define SMI_CMD_OP_45_READ_DATA_INC ((3 << 10) | SMI_CMD_BUSY) +-#define SMI_DATA 0x01 +- + #define MV88E6XXX_N_FID 4096 + + /* PVT limits for 4-bit port and 5-bit switch */ +@@ -55,6 +44,7 @@ enum mv88e6xxx_frame_mode { + + /* List of supported models */ + enum mv88e6xxx_model { ++ MV88E6071, + MV88E6085, + MV88E6095, + MV88E6097, +@@ -72,6 +62,7 @@ enum mv88e6xxx_model { + MV88E6190X, + MV88E6191, + MV88E6240, ++ MV88E6250, + MV88E6290, + MV88E6320, + MV88E6321, +@@ -90,6 +81,7 @@ enum mv88e6xxx_family { + MV88E6XXX_FAMILY_6097, /* 6046 6085 6096 6097 */ + MV88E6XXX_FAMILY_6165, /* 6123 6161 6165 */ + MV88E6XXX_FAMILY_6185, /* 6108 6121 6122 6131 6152 6155 6182 6185 */ ++ MV88E6XXX_FAMILY_6250, /* 6071 6250 */ + MV88E6XXX_FAMILY_6320, /* 6320 6321 */ + MV88E6XXX_FAMILY_6341, /* 6141 6341 */ + MV88E6XXX_FAMILY_6351, /* 6171 6175 6350 6351 */ +@@ -119,6 +111,11 @@ struct mv88e6xxx_info { + * when it is non-zero, and use indirect access to internal registers. + */ + bool multi_chip; ++ /* Dual-chip Addressing Mode ++ * Some chips respond to only half of the 32 SMI addresses, ++ * allowing two to coexist on the same SMI interface. ++ */ ++ bool dual_chip; + enum dsa_tag_protocol tag_protocol; + + /* Mask for FromPort and ToPort value of PortVec used in ATU Move +Index: drivers/net/dsa/mv88e6xxx/global1.c +=================================================================== +--- drivers/net/dsa/mv88e6xxx/global1.c ++++ linux-imx/drivers/net/dsa/mv88e6xxx/global1.c +@@ -31,6 +31,12 @@ int mv88e6xxx_g1_write(struct mv88e6xxx_ + return mv88e6xxx_write(chip, addr, reg, val); + } + ++int mv88e6250_g1_ieee_pri_map(struct mv88e6xxx_chip *chip) ++{ ++ /* Reset the IEEE Tag priorities to defaults */ ++ return mv88e6xxx_g1_write(chip, MV88E6XXX_G1_IEEE_PRI, 0xfa50); ++} ++ + int mv88e6xxx_g1_wait(struct mv88e6xxx_chip *chip, int reg, u16 mask) + { + return mv88e6xxx_wait(chip, chip->info->global1_addr, reg, mask); +@@ -182,6 +188,25 @@ int mv88e6185_g1_reset(struct mv88e6xxx_ + return mv88e6185_g1_wait_ppu_polling(chip); + } + ++int mv88e6250_g1_reset(struct mv88e6xxx_chip *chip) ++{ ++ u16 val; ++ int err; ++ ++ /* Set the SWReset bit 15 */ ++ err = mv88e6xxx_g1_read(chip, MV88E6XXX_G1_CTL1, &val); ++ if (err) ++ return err; ++ ++ val |= MV88E6XXX_G1_CTL1_SW_RESET; ++ ++ err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_CTL1, val); ++ if (err) ++ return err; ++ ++ return mv88e6xxx_g1_wait_init_ready(chip); ++} ++ + int mv88e6352_g1_reset(struct mv88e6xxx_chip *chip) + { + u16 val; +@@ -374,6 +399,22 @@ int mv88e6xxx_g1_stats_wait(struct mv88e + MV88E6XXX_G1_STATS_OP_BUSY); + } + ++int mv88e6095_g1_stats_set_histogram(struct mv88e6xxx_chip *chip) ++{ ++ u16 val; ++ int err; ++ ++ err = mv88e6xxx_g1_read(chip, MV88E6XXX_G1_STATS_OP, &val); ++ if (err) ++ return err; ++ ++ val |= MV88E6XXX_G1_STATS_OP_HIST_RX_TX; ++ ++ err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_STATS_OP, val); ++ ++ return err; ++} ++ + int mv88e6xxx_g1_stats_snapshot(struct mv88e6xxx_chip *chip, int port) + { + int err; +Index: drivers/net/dsa/mv88e6xxx/global1.h +=================================================================== +--- drivers/net/dsa/mv88e6xxx/global1.h ++++ linux-imx/drivers/net/dsa/mv88e6xxx/global1.h +@@ -227,6 +227,7 @@ int mv88e6xxx_g1_set_switch_mac(struct m + + int mv88e6185_g1_reset(struct mv88e6xxx_chip *chip); + int mv88e6352_g1_reset(struct mv88e6xxx_chip *chip); ++int mv88e6250_g1_reset(struct mv88e6xxx_chip *chip); + + int mv88e6185_g1_ppu_enable(struct mv88e6xxx_chip *chip); + int mv88e6185_g1_ppu_disable(struct mv88e6xxx_chip *chip); +@@ -236,6 +237,7 @@ int mv88e6xxx_g1_stats_snapshot(struct m + int mv88e6320_g1_stats_snapshot(struct mv88e6xxx_chip *chip, int port); + int mv88e6390_g1_stats_snapshot(struct mv88e6xxx_chip *chip, int port); + int mv88e6390_g1_stats_set_histogram(struct mv88e6xxx_chip *chip); ++int mv88e6095_g1_stats_set_histogram(struct mv88e6xxx_chip *chip); + void mv88e6xxx_g1_stats_read(struct mv88e6xxx_chip *chip, int stat, u32 *val); + int mv88e6095_g1_set_egress_port(struct mv88e6xxx_chip *chip, int port); + int mv88e6390_g1_set_egress_port(struct mv88e6xxx_chip *chip, int port); +@@ -258,6 +260,12 @@ int mv88e6185_g1_vtu_getnext(struct mv88 + struct mv88e6xxx_vtu_entry *entry); + int mv88e6185_g1_vtu_loadpurge(struct mv88e6xxx_chip *chip, + struct mv88e6xxx_vtu_entry *entry); ++int mv88e6250_g1_vtu_getnext(struct mv88e6xxx_chip *chip, ++ struct mv88e6xxx_vtu_entry *entry); ++int mv88e6250_g1_vtu_loadpurge(struct mv88e6xxx_chip *chip, ++ struct mv88e6xxx_vtu_entry *entry); ++int mv88e6250_g1_ieee_pri_map(struct mv88e6xxx_chip *chip); ++ + int mv88e6352_g1_vtu_getnext(struct mv88e6xxx_chip *chip, + struct mv88e6xxx_vtu_entry *entry); + int mv88e6352_g1_vtu_loadpurge(struct mv88e6xxx_chip *chip, +Index: drivers/net/dsa/mv88e6xxx/port.h +=================================================================== +--- drivers/net/dsa/mv88e6xxx/port.h ++++ linux-imx/drivers/net/dsa/mv88e6xxx/port.h +@@ -23,6 +23,16 @@ + #define MV88E6XXX_PORT_STS_MY_PAUSE 0x4000 + #define MV88E6XXX_PORT_STS_HD_FLOW 0x2000 + #define MV88E6XXX_PORT_STS_PHY_DETECT 0x1000 ++#define MV88E6250_PORT_STS_LINK 0x1000 ++#define MV88E6250_PORT_STS_PORTMODE_MASK 0x0f00 ++#define MV88E6250_PORT_STS_PORTMODE_PHY_10_HALF 0x0800 ++#define MV88E6250_PORT_STS_PORTMODE_PHY_100_HALF 0x0900 ++#define MV88E6250_PORT_STS_PORTMODE_PHY_10_FULL 0x0a00 ++#define MV88E6250_PORT_STS_PORTMODE_PHY_100_FULL 0x0b00 ++#define MV88E6250_PORT_STS_PORTMODE_MII_10_HALF 0x0c00 ++#define MV88E6250_PORT_STS_PORTMODE_MII_100_HALF 0x0d00 ++#define MV88E6250_PORT_STS_PORTMODE_MII_10_FULL 0x0e00 ++#define MV88E6250_PORT_STS_PORTMODE_MII_100_FULL 0x0f00 + #define MV88E6XXX_PORT_STS_LINK 0x0800 + #define MV88E6XXX_PORT_STS_DUPLEX 0x0400 + #define MV88E6XXX_PORT_STS_SPEED_MASK 0x0300 +@@ -79,6 +89,7 @@ + /* Offset 0x03: Switch Identifier Register */ + #define MV88E6XXX_PORT_SWITCH_ID 0x03 + #define MV88E6XXX_PORT_SWITCH_ID_PROD_MASK 0xfff0 ++#define MV88E6XXX_PORT_SWITCH_ID_PROD_6071 0x0710 + #define MV88E6XXX_PORT_SWITCH_ID_PROD_6085 0x04a0 + #define MV88E6XXX_PORT_SWITCH_ID_PROD_6095 0x0950 + #define MV88E6XXX_PORT_SWITCH_ID_PROD_6097 0x0990 +@@ -97,6 +108,7 @@ + #define MV88E6XXX_PORT_SWITCH_ID_PROD_6191 0x1910 + #define MV88E6XXX_PORT_SWITCH_ID_PROD_6185 0x1a70 + #define MV88E6XXX_PORT_SWITCH_ID_PROD_6240 0x2400 ++#define MV88E6XXX_PORT_SWITCH_ID_PROD_6250 0x2500 + #define MV88E6XXX_PORT_SWITCH_ID_PROD_6290 0x2900 + #define MV88E6XXX_PORT_SWITCH_ID_PROD_6321 0x3100 + #define MV88E6XXX_PORT_SWITCH_ID_PROD_6141 0x3400 +@@ -262,6 +274,7 @@ int mv88e6xxx_port_set_duplex(struct mv8 + + int mv88e6065_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); + int mv88e6185_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); ++int mv88e6250_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); + int mv88e6352_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); + int mv88e6390_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); + int mv88e6390x_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); +Index: drivers/net/dsa/mv88e6xxx/port.c +=================================================================== +--- drivers/net/dsa/mv88e6xxx/port.c ++++ linux-imx/drivers/net/dsa/mv88e6xxx/port.c +@@ -266,6 +266,18 @@ int mv88e6185_port_set_speed(struct mv88 + return mv88e6xxx_port_set_speed(chip, port, speed, false, false); + } + ++/* Support 10, 100 Mbps (e.g. 88E6250 family) */ ++int mv88e6250_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed) ++{ ++ if (speed == SPEED_MAX) ++ speed = 100; ++ ++ if (speed > 100) ++ return -EOPNOTSUPP; ++ ++ return mv88e6xxx_port_set_speed(chip, port, speed, false, false); ++} ++ + /* Support 10, 100, 200, 1000 Mbps (e.g. 88E6352 family) */ + int mv88e6352_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed) + { +Index: drivers/net/dsa/mv88e6xxx/global1_atu.c +=================================================================== +--- drivers/net/dsa/mv88e6xxx/global1_atu.c ++++ linux-imx/drivers/net/dsa/mv88e6xxx/global1_atu.c +@@ -92,7 +92,7 @@ static int mv88e6xxx_g1_atu_op(struct mv + if (err) + return err; + } else { +- if (mv88e6xxx_num_databases(chip) > 16) { ++ if (mv88e6xxx_num_databases(chip) > 64) { + /* ATU DBNum[7:4] are located in ATU Control 15:12 */ + err = mv88e6xxx_g1_read(chip, MV88E6XXX_G1_ATU_CTL, + &val); +@@ -104,6 +104,9 @@ static int mv88e6xxx_g1_atu_op(struct mv + val); + if (err) + return err; ++ } else if (mv88e6xxx_num_databases(chip) > 16) { ++ /* ATU DBNum[5:4] are located in ATU Operation 9:8 */ ++ op |= (fid & 0x30) << 4; + } + + /* ATU DBNum[3:0] are located in ATU Operation 3:0 */ +Index: drivers/net/dsa/mv88e6xxx/global1_vtu.c +=================================================================== +--- drivers/net/dsa/mv88e6xxx/global1_vtu.c ++++ linux-imx/drivers/net/dsa/mv88e6xxx/global1_vtu.c +@@ -304,6 +304,35 @@ static int mv88e6xxx_g1_vtu_getnext(stru + return mv88e6xxx_g1_vtu_vid_read(chip, entry); + } + ++int mv88e6250_g1_vtu_getnext(struct mv88e6xxx_chip *chip, ++ struct mv88e6xxx_vtu_entry *entry) ++{ ++ u16 val; ++ int err; ++ ++ err = mv88e6xxx_g1_vtu_getnext(chip, entry); ++ if (err) ++ return err; ++ ++ if (entry->valid) { ++ err = mv88e6185_g1_vtu_data_read(chip, entry); ++ if (err) ++ return err; ++ ++ /* VTU DBNum[3:0] are located in VTU Operation 3:0 ++ * VTU DBNum[5:4] are located in VTU Operation 9:8 ++ */ ++ err = mv88e6xxx_g1_read(chip, MV88E6XXX_G1_VTU_OP, &val); ++ if (err) ++ return err; ++ ++ entry->fid = val & 0x000f; ++ entry->fid |= (val & 0x0300) >> 4; ++ } ++ ++ return 0; ++} ++ + int mv88e6185_g1_vtu_getnext(struct mv88e6xxx_chip *chip, + struct mv88e6xxx_vtu_entry *entry) + { +@@ -393,6 +422,35 @@ int mv88e6390_g1_vtu_getnext(struct mv88 + return 0; + } + ++int mv88e6250_g1_vtu_loadpurge(struct mv88e6xxx_chip *chip, ++ struct mv88e6xxx_vtu_entry *entry) ++{ ++ u16 op = MV88E6XXX_G1_VTU_OP_VTU_LOAD_PURGE; ++ int err; ++ ++ err = mv88e6xxx_g1_vtu_op_wait(chip); ++ if (err) ++ return err; ++ ++ err = mv88e6xxx_g1_vtu_vid_write(chip, entry); ++ if (err) ++ return err; ++ ++ if (entry->valid) { ++ err = mv88e6185_g1_vtu_data_write(chip, entry); ++ if (err) ++ return err; ++ ++ /* VTU DBNum[3:0] are located in VTU Operation 3:0 ++ * VTU DBNum[5:4] are located in VTU Operation 9:8 ++ */ ++ op |= entry->fid & 0x000f; ++ op |= (entry->fid & 0x0030) << 4; ++ } ++ ++ return mv88e6xxx_g1_vtu_op(chip, op); ++} ++ + int mv88e6185_g1_vtu_loadpurge(struct mv88e6xxx_chip *chip, + struct mv88e6xxx_vtu_entry *entry) + { +Index: drivers/net/dsa/mv88e6xxx/global2.c +=================================================================== +--- drivers/net/dsa/mv88e6xxx/global2.c ++++ linux-imx/drivers/net/dsa/mv88e6xxx/global2.c +@@ -835,6 +835,32 @@ const struct mv88e6xxx_irq_ops mv88e6097 + .irq_free = mv88e6097_watchdog_free, + }; + ++static void mv88e6250_watchdog_free(struct mv88e6xxx_chip *chip) ++{ ++ u16 reg; ++ ++ mv88e6xxx_g2_read(chip, MV88E6250_G2_WDOG_CTL, ®); ++ ++ reg &= ~(MV88E6250_G2_WDOG_CTL_EGRESS_ENABLE | ++ MV88E6250_G2_WDOG_CTL_QC_ENABLE); ++ ++ mv88e6xxx_g2_write(chip, MV88E6250_G2_WDOG_CTL, reg); ++} ++ ++static int mv88e6250_watchdog_setup(struct mv88e6xxx_chip *chip) ++{ ++ return mv88e6xxx_g2_write(chip, MV88E6250_G2_WDOG_CTL, ++ MV88E6250_G2_WDOG_CTL_EGRESS_ENABLE | ++ MV88E6250_G2_WDOG_CTL_QC_ENABLE | ++ MV88E6250_G2_WDOG_CTL_SWRESET); ++} ++ ++const struct mv88e6xxx_irq_ops mv88e6250_watchdog_ops = { ++ .irq_action = mv88e6097_watchdog_action, ++ .irq_setup = mv88e6250_watchdog_setup, ++ .irq_free = mv88e6250_watchdog_free, ++}; ++ + static int mv88e6390_watchdog_setup(struct mv88e6xxx_chip *chip) + { + return mv88e6xxx_g2_update(chip, MV88E6390_G2_WDOG_CTL, +Index: drivers/net/dsa/mv88e6xxx/global2.h +=================================================================== +--- drivers/net/dsa/mv88e6xxx/global2.h ++++ linux-imx/drivers/net/dsa/mv88e6xxx/global2.h +@@ -185,6 +185,18 @@ + #define MV88E6XXX_G2_SCRATCH_MISC_DATA_MASK 0x00ff + + /* Offset 0x1B: Watch Dog Control Register */ ++#define MV88E6250_G2_WDOG_CTL 0x1b ++#define MV88E6250_G2_WDOG_CTL_QC_HISTORY 0x0100 ++#define MV88E6250_G2_WDOG_CTL_QC_EVENT 0x0080 ++#define MV88E6250_G2_WDOG_CTL_QC_ENABLE 0x0040 ++#define MV88E6250_G2_WDOG_CTL_EGRESS_HISTORY 0x0020 ++#define MV88E6250_G2_WDOG_CTL_EGRESS_EVENT 0x0010 ++#define MV88E6250_G2_WDOG_CTL_EGRESS_ENABLE 0x0008 ++#define MV88E6250_G2_WDOG_CTL_FORCE_IRQ 0x0004 ++#define MV88E6250_G2_WDOG_CTL_HISTORY 0x0002 ++#define MV88E6250_G2_WDOG_CTL_SWRESET 0x0001 ++ ++/* Offset 0x1B: Watch Dog Control Register */ + #define MV88E6352_G2_WDOG_CTL 0x1b + #define MV88E6352_G2_WDOG_CTL_EGRESS_EVENT 0x0080 + #define MV88E6352_G2_WDOG_CTL_RMU_TIMEOUT 0x0040 +@@ -265,6 +277,7 @@ int mv88e6352_g2_mgmt_rsvd2cpu(struct mv + int mv88e6xxx_g2_pot_clear(struct mv88e6xxx_chip *chip); + + extern const struct mv88e6xxx_irq_ops mv88e6097_watchdog_ops; ++extern const struct mv88e6xxx_irq_ops mv88e6250_watchdog_ops; + extern const struct mv88e6xxx_irq_ops mv88e6390_watchdog_ops; + + #else /* !CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 */ +@@ -380,6 +393,7 @@ static inline int mv88e6xxx_g2_pot_clear + } + + static const struct mv88e6xxx_irq_ops mv88e6097_watchdog_ops = {}; ++static const struct mv88e6xxx_irq_ops mv88e6250_watchdog_ops = {}; + static const struct mv88e6xxx_irq_ops mv88e6390_watchdog_ops = {}; + + #endif /* CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 */ +Index: drivers/net/dsa/mv88e6xxx/Makefile +=================================================================== +--- drivers/net/dsa/mv88e6xxx/Makefile ++++ linux-imx/drivers/net/dsa/mv88e6xxx/Makefile +@@ -8,3 +8,4 @@ mv88e6xxx-$(CONFIG_NET_DSA_MV88E6XXX_GLO + mv88e6xxx-objs += phy.o + mv88e6xxx-objs += port.o + mv88e6xxx-objs += serdes.o ++mv88e6xxx-objs += smi.o +Index: drivers/net/dsa/mv88e6xxx/smi.c +=================================================================== +--- /dev/null ++++ linux-imx/drivers/net/dsa/mv88e6xxx/smi.c +@@ -0,0 +1,181 @@ ++/* ++ * Marvell 88E6xxx System Management Interface (SMI) support ++ * ++ * Copyright (c) 2008 Marvell Semiconductor ++ * ++ * Copyright (c) 2019 Vivien Didelot ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ */ ++ ++#include "chip.h" ++#include "smi.h" ++ ++/* The switch ADDR[4:1] configuration pins define the chip SMI device address ++ * (ADDR[0] is always zero, thus only even SMI addresses can be strapped). ++ * ++ * When ADDR is all zero, the chip uses Single-chip Addressing Mode, assuming it ++ * is the only device connected to the SMI master. In this mode it responds to ++ * all 32 possible SMI addresses, and thus maps directly the internal devices. ++ * ++ * When ADDR is non-zero, the chip uses Multi-chip Addressing Mode, allowing ++ * multiple devices to share the SMI interface. In this mode it responds to only ++ * 2 registers, used to indirectly access the internal SMI devices. ++ * ++ * Some chips use a different scheme: Only the ADDR4 pin is used for ++ * configuration, and the device responds to 16 of the 32 SMI ++ * addresses, allowing two to coexist on the same SMI interface. ++ */ ++ ++static int mv88e6xxx_smi_direct_read(struct mv88e6xxx_chip *chip, ++ int dev, int reg, u16 *data) ++{ ++ int ret; ++ ++ ret = mdiobus_read_nested(chip->bus, dev, reg); ++ if (ret < 0) ++ return ret; ++ ++ *data = ret & 0xffff; ++ ++ return 0; ++} ++ ++static int mv88e6xxx_smi_direct_write(struct mv88e6xxx_chip *chip, ++ int dev, int reg, u16 data) ++{ ++ int ret; ++ ++ ret = mdiobus_write_nested(chip->bus, dev, reg, data); ++ if (ret < 0) ++ return ret; ++ ++ return 0; ++} ++ ++static int mv88e6xxx_smi_direct_wait(struct mv88e6xxx_chip *chip, ++ int dev, int reg, int bit, int val) ++{ ++ u16 data; ++ int err; ++ int i; ++ ++ for (i = 0; i < 16; i++) { ++ err = mv88e6xxx_smi_direct_read(chip, dev, reg, &data); ++ if (err) ++ return err; ++ ++ if (!!(data >> bit) == !!val) ++ return 0; ++ } ++ ++ return -ETIMEDOUT; ++} ++ ++static const struct mv88e6xxx_bus_ops mv88e6xxx_smi_direct_ops = { ++ .read = mv88e6xxx_smi_direct_read, ++ .write = mv88e6xxx_smi_direct_write, ++}; ++ ++static int mv88e6xxx_smi_dual_direct_read(struct mv88e6xxx_chip *chip, ++ int dev, int reg, u16 *data) ++{ ++ return mv88e6xxx_smi_direct_read(chip, chip->sw_addr + dev, reg, data); ++} ++ ++static int mv88e6xxx_smi_dual_direct_write(struct mv88e6xxx_chip *chip, ++ int dev, int reg, u16 data) ++{ ++ return mv88e6xxx_smi_direct_write(chip, chip->sw_addr + dev, reg, data); ++} ++ ++static const struct mv88e6xxx_bus_ops mv88e6xxx_smi_dual_direct_ops = { ++ .read = mv88e6xxx_smi_dual_direct_read, ++ .write = mv88e6xxx_smi_dual_direct_write, ++}; ++ ++/* Offset 0x00: SMI Command Register ++ * Offset 0x01: SMI Data Register ++ */ ++ ++static int mv88e6xxx_smi_indirect_read(struct mv88e6xxx_chip *chip, ++ int dev, int reg, u16 *data) ++{ ++ int err; ++ ++ err = mv88e6xxx_smi_direct_wait(chip, chip->sw_addr, ++ MV88E6XXX_SMI_CMD, 15, 0); ++ if (err) ++ return err; ++ ++ err = mv88e6xxx_smi_direct_write(chip, chip->sw_addr, ++ MV88E6XXX_SMI_CMD, ++ MV88E6XXX_SMI_CMD_BUSY | ++ MV88E6XXX_SMI_CMD_MODE_22 | ++ MV88E6XXX_SMI_CMD_OP_22_READ | ++ (dev << 5) | reg); ++ if (err) ++ return err; ++ ++ err = mv88e6xxx_smi_direct_wait(chip, chip->sw_addr, ++ MV88E6XXX_SMI_CMD, 15, 0); ++ if (err) ++ return err; ++ ++ return mv88e6xxx_smi_direct_read(chip, chip->sw_addr, ++ MV88E6XXX_SMI_DATA, data); ++} ++ ++static int mv88e6xxx_smi_indirect_write(struct mv88e6xxx_chip *chip, ++ int dev, int reg, u16 data) ++{ ++ int err; ++ ++ err = mv88e6xxx_smi_direct_wait(chip, chip->sw_addr, ++ MV88E6XXX_SMI_CMD, 15, 0); ++ if (err) ++ return err; ++ ++ err = mv88e6xxx_smi_direct_write(chip, chip->sw_addr, ++ MV88E6XXX_SMI_DATA, data); ++ if (err) ++ return err; ++ ++ err = mv88e6xxx_smi_direct_write(chip, chip->sw_addr, ++ MV88E6XXX_SMI_CMD, ++ MV88E6XXX_SMI_CMD_BUSY | ++ MV88E6XXX_SMI_CMD_MODE_22 | ++ MV88E6XXX_SMI_CMD_OP_22_WRITE | ++ (dev << 5) | reg); ++ if (err) ++ return err; ++ ++ return mv88e6xxx_smi_direct_wait(chip, chip->sw_addr, ++ MV88E6XXX_SMI_CMD, 15, 0); ++} ++ ++static const struct mv88e6xxx_bus_ops mv88e6xxx_smi_indirect_ops = { ++ .read = mv88e6xxx_smi_indirect_read, ++ .write = mv88e6xxx_smi_indirect_write, ++}; ++ ++int mv88e6xxx_smi_init(struct mv88e6xxx_chip *chip, ++ struct mii_bus *bus, int sw_addr) ++{ ++ if (chip->info->dual_chip) ++ chip->smi_ops = &mv88e6xxx_smi_dual_direct_ops; ++ else if (sw_addr == 0) ++ chip->smi_ops = &mv88e6xxx_smi_direct_ops; ++ else if (chip->info->multi_chip) ++ chip->smi_ops = &mv88e6xxx_smi_indirect_ops; ++ else ++ return -EINVAL; ++ ++ chip->bus = bus; ++ chip->sw_addr = sw_addr; ++ ++ return 0; ++} +Index: drivers/net/dsa/mv88e6xxx/smi.h +=================================================================== +--- /dev/null ++++ linux-imx/drivers/net/dsa/mv88e6xxx/smi.h +@@ -0,0 +1,59 @@ ++/* ++ * Marvell 88E6xxx System Management Interface (SMI) support ++ * ++ * Copyright (c) 2008 Marvell Semiconductor ++ * ++ * Copyright (c) 2019 Vivien Didelot ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ */ ++ ++#ifndef _MV88E6XXX_SMI_H ++#define _MV88E6XXX_SMI_H ++ ++#include "chip.h" ++ ++/* Offset 0x00: SMI Command Register */ ++#define MV88E6XXX_SMI_CMD 0x00 ++#define MV88E6XXX_SMI_CMD_BUSY 0x8000 ++#define MV88E6XXX_SMI_CMD_MODE_MASK 0x1000 ++#define MV88E6XXX_SMI_CMD_MODE_45 0x0000 ++#define MV88E6XXX_SMI_CMD_MODE_22 0x1000 ++#define MV88E6XXX_SMI_CMD_OP_MASK 0x0c00 ++#define MV88E6XXX_SMI_CMD_OP_22_WRITE 0x0400 ++#define MV88E6XXX_SMI_CMD_OP_22_READ 0x0800 ++#define MV88E6XXX_SMI_CMD_OP_45_WRITE_ADDR 0x0000 ++#define MV88E6XXX_SMI_CMD_OP_45_WRITE_DATA 0x0400 ++#define MV88E6XXX_SMI_CMD_OP_45_READ_DATA 0x0800 ++#define MV88E6XXX_SMI_CMD_OP_45_READ_DATA_INC 0x0c00 ++#define MV88E6XXX_SMI_CMD_DEV_ADDR_MASK 0x003e ++#define MV88E6XXX_SMI_CMD_REG_ADDR_MASK 0x001f ++ ++/* Offset 0x01: SMI Data Register */ ++#define MV88E6XXX_SMI_DATA 0x01 ++ ++int mv88e6xxx_smi_init(struct mv88e6xxx_chip *chip, ++ struct mii_bus *bus, int sw_addr); ++ ++static inline int mv88e6xxx_smi_read(struct mv88e6xxx_chip *chip, ++ int dev, int reg, u16 *data) ++{ ++ if (chip->smi_ops && chip->smi_ops->read) ++ return chip->smi_ops->read(chip, dev, reg, data); ++ ++ return -EOPNOTSUPP; ++} ++ ++static inline int mv88e6xxx_smi_write(struct mv88e6xxx_chip *chip, ++ int dev, int reg, u16 data) ++{ ++ if (chip->smi_ops && chip->smi_ops->write) ++ return chip->smi_ops->write(chip, dev, reg, data); ++ ++ return -EOPNOTSUPP; ++} ++ ++#endif /* _MV88E6XXX_SMI_H */ diff --git a/buildroot/board/tiesse/tgr/kernel-patches/1004-imx8mm-custom-devname.patch b/buildroot/board/tiesse/tgr/kernel-patches/1004-imx8mm-custom-devname.patch new file mode 100644 index 0000000..8422ad6 --- /dev/null +++ b/buildroot/board/tiesse/tgr/kernel-patches/1004-imx8mm-custom-devname.patch @@ -0,0 +1,26 @@ +Index: drivers/net/ethernet/freescale/fec_main.c +=================================================================== +--- drivers/net/ethernet/freescale/fec_main.c ++++ linux-imx/drivers/net/ethernet/freescale/fec_main.c +@@ -3630,12 +3630,19 @@ fec_probe(struct platform_device *pdev) + struct device_node *np = pdev->dev.of_node, *phy_node; + int num_tx_qs; + int num_rx_qs; ++ const char *dev_name; + + fec_enet_get_queue_num(pdev, &num_tx_qs, &num_rx_qs); + + /* Init network device */ +- ndev = alloc_etherdev_mqs(sizeof(struct fec_enet_private) + +- FEC_STATS_SIZE, num_tx_qs, num_rx_qs); ++ dev_name = of_get_property(np, "fsl,devname", NULL); ++ if (dev_name) ++ ndev = alloc_netdev_mqs(sizeof(struct fec_enet_private) + ++ FEC_STATS_SIZE, dev_name, NET_NAME_UNKNOWN, ++ ether_setup, num_tx_qs, num_rx_qs); ++ else ++ ndev = alloc_etherdev_mqs(sizeof(struct fec_enet_private) + ++ FEC_STATS_SIZE, num_tx_qs, num_rx_qs); + if (!ndev) + return -ENOMEM; + diff --git a/buildroot/board/tiesse/tgr/kernel-patches/1005-imx8mm-dsa-slave-address.patch b/buildroot/board/tiesse/tgr/kernel-patches/1005-imx8mm-dsa-slave-address.patch new file mode 100644 index 0000000..8283c6f --- /dev/null +++ b/buildroot/board/tiesse/tgr/kernel-patches/1005-imx8mm-dsa-slave-address.patch @@ -0,0 +1,49 @@ +Index: net/dsa/Kconfig +=================================================================== +--- net/dsa/Kconfig ++++ linux-imx/net/dsa/Kconfig +@@ -40,4 +40,9 @@ config NET_DSA_TAG_TRAILER + config NET_DSA_TAG_QCA + bool + ++config NET_DSA_SLAVE_MAC ++ bool "DSA Extension for Tiesse TGR" ++ ---help--- ++ This enables a Tiesse TGR specific mac assignement schema ++ + endif +Index: net/dsa/slave.c +=================================================================== +--- net/dsa/slave.c ++++ linux-imx/net/dsa/slave.c +@@ -27,6 +27,18 @@ + + static bool dsa_slave_dev_check(struct net_device *dev); + ++#ifdef CONFIG_NET_DSA_SLAVE_MAC ++static inline void eth_hw_addr_assign(int port_index, ++ struct net_device *dst, ++ struct net_device *src) ++{ ++ u64 temp = ether_addr_to_u64(src->dev_addr); ++ temp += port_index-1; ++ u64_to_ether_addr(temp, dst->dev_addr); ++ dst->addr_assign_type = src->addr_assign_type; ++} ++#endif ++ + /* slave mii_bus handling ***************************************************/ + static int dsa_slave_phy_read(struct mii_bus *bus, int addr, int reg) + { +@@ -1277,7 +1289,11 @@ int dsa_slave_create(struct dsa_port *po + slave_dev->features = master->vlan_features | NETIF_F_HW_TC; + slave_dev->hw_features |= NETIF_F_HW_TC; + slave_dev->ethtool_ops = &dsa_slave_ethtool_ops; ++#ifdef CONFIG_NET_DSA_SLAVE_MAC ++ eth_hw_addr_assign(port->index, slave_dev, master); ++#else + eth_hw_addr_inherit(slave_dev, master); ++#endif + slave_dev->priv_flags |= IFF_NO_QUEUE; + slave_dev->netdev_ops = &dsa_slave_netdev_ops; + slave_dev->switchdev_ops = &dsa_slave_switchdev_ops; diff --git a/buildroot/board/tiesse/tgr/kernel-patches/1006-imx8mm-shut.patch b/buildroot/board/tiesse/tgr/kernel-patches/1006-imx8mm-shut.patch new file mode 100644 index 0000000..565dc68 --- /dev/null +++ b/buildroot/board/tiesse/tgr/kernel-patches/1006-imx8mm-shut.patch @@ -0,0 +1,322 @@ +Index: drivers/net/phy/phy.c +=================================================================== +--- drivers/net/phy/phy.c ++++ linux-imx/drivers/net/phy/phy.c +@@ -55,6 +55,7 @@ static const char *phy_state_to_str(enum + PHY_STATE_STR(NOLINK) + PHY_STATE_STR(FORCING) + PHY_STATE_STR(CHANGELINK) ++ PHY_STATE_STR(POWERED_DOWN) + PHY_STATE_STR(HALTED) + PHY_STATE_STR(RESUMING) + } +@@ -241,6 +242,33 @@ static void phy_sanitize_settings(struct + } + } + ++static int phy_shut(struct phy_device *phydev) ++{ ++ mutex_lock(&phydev->lock); ++ phydev->power = PHY_POWER_DOWN; ++ if (PHY_HALTED == phydev->state) { ++ mutex_unlock(&phydev->lock); ++ return 0; ++ } ++ phydev->state = PHY_POWERED_DOWN; ++ mutex_unlock(&phydev->lock); ++ return 0; ++} ++ ++static int phy_unshut(struct phy_device *phydev) ++{ ++ mutex_lock(&phydev->lock); ++ phydev->power = PHY_POWER_UP; ++ if (PHY_HALTED == phydev->state) { ++ mutex_unlock(&phydev->lock); ++ return 0; ++ } ++ phy_power_up(phydev); ++ phydev->state = PHY_CHANGELINK; ++ mutex_unlock(&phydev->lock); ++ return 0; ++} ++ + /** + * phy_ethtool_sset - generic ethtool sset function, handles all the details + * @phydev: target phy_device struct +@@ -257,10 +285,28 @@ static void phy_sanitize_settings(struct + int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd) + { + u32 speed = ethtool_cmd_speed(cmd); ++ int ret; + + if (cmd->phy_address != phydev->mdio.addr) + return -EINVAL; + ++ if (PHY_POWERED_DOWN == phydev->state) { ++ if (cmd->power == PHY_POWER_UP) { ++ ret = phy_unshut(phydev); ++ if (ret < 0) ++ return -EIO; ++ phy_trigger_machine(phydev, true); ++ } ++ return 0; ++ } ++ else if (cmd->power == PHY_POWER_DOWN) { ++ ret = phy_shut(phydev); ++ if (ret < 0) ++ return -EIO; ++ phy_trigger_machine(phydev, true); ++ return 0; ++ } ++ + /* We make sure that we don't pass unsupported values in to the PHY */ + cmd->advertising &= phydev->supported; + +@@ -308,10 +354,28 @@ int phy_ethtool_ksettings_set(struct phy + u8 duplex = cmd->base.duplex; + u32 speed = cmd->base.speed; + u32 advertising; ++ int ret; + + if (cmd->base.phy_address != phydev->mdio.addr) + return -EINVAL; + ++ if (PHY_POWERED_DOWN == phydev->state) { ++ if (cmd->base.power == PHY_POWER_UP) { ++ ret = phy_unshut(phydev); ++ if (ret < 0) ++ return -EIO; ++ phy_trigger_machine(phydev, true); ++ } ++ return 0; ++ } ++ else if (cmd->base.power == PHY_POWER_DOWN) { ++ ret = phy_shut(phydev); ++ if (ret < 0) ++ return -EIO; ++ phy_trigger_machine(phydev, true); ++ return 0; ++ } ++ + ethtool_convert_link_mode_to_legacy_u32(&advertising, + cmd->link_modes.advertising); + +@@ -379,6 +443,7 @@ void phy_ethtool_ksettings_get(struct ph + cmd->base.autoneg = phydev->autoneg; + cmd->base.eth_tp_mdix_ctrl = phydev->mdix_ctrl; + cmd->base.eth_tp_mdix = phydev->mdix; ++ cmd->base.power = phydev->power; + } + EXPORT_SYMBOL(phy_ethtool_ksettings_get); + +@@ -881,7 +946,7 @@ void phy_state_machine(struct work_struc + struct delayed_work *dwork = to_delayed_work(work); + struct phy_device *phydev = + container_of(dwork, struct phy_device, state_queue); +- bool needs_aneg = false, do_suspend = false; ++ bool needs_aneg = false, do_suspend = false, do_power_down = false; + enum phy_state old_state; + int err = 0; + int old_link; +@@ -1014,6 +1079,14 @@ void phy_state_machine(struct work_struc + do_suspend = true; + } + break; ++ case PHY_POWERED_DOWN: ++ phy_read_status(phydev); ++ if (phydev->link) { ++ phydev->link = 0; ++ phy_link_down(phydev, true); ++ do_power_down = true; ++ } ++ break; + case PHY_RESUMING: + if (AUTONEG_ENABLE == phydev->autoneg) { + err = phy_aneg_done(phydev); +@@ -1059,8 +1132,14 @@ void phy_state_machine(struct work_struc + + if (needs_aneg) + err = phy_start_aneg_priv(phydev, false); +- else if (do_suspend) +- phy_suspend(phydev); ++ else { ++ if (do_suspend) ++ phy_suspend(phydev); ++ if (do_power_down) { ++ phy_power_down(phydev); ++ phy_read_status(phydev); ++ } ++ } + + if (err < 0) + phy_error(phydev); +Index: drivers/net/phy/phy_device.c +=================================================================== +--- drivers/net/phy/phy_device.c ++++ linux-imx/drivers/net/phy/phy_device.c +@@ -1230,6 +1230,31 @@ out: + } + EXPORT_SYMBOL(phy_loopback); + ++int phy_power_down(struct phy_device *phydev) ++{ ++ struct phy_driver *phydrv = to_phy_driver(phydev->mdio.dev.driver); ++ int ret = 0; ++ ++ if (phydev->drv && phydrv->suspend) ++ ret = phydrv->suspend(phydev); ++ ++ return ret; ++ ++} ++EXPORT_SYMBOL(phy_power_down); ++ ++int phy_power_up(struct phy_device *phydev) ++{ ++ struct phy_driver *phydrv = to_phy_driver(phydev->mdio.dev.driver); ++ int ret = 0; ++ ++ if (phydev->drv && phydrv->resume) ++ ret = phydrv->resume(phydev); ++ ++ return ret; ++} ++EXPORT_SYMBOL(phy_power_up); ++ + /* Generic PHY support and helper functions */ + + /** +@@ -1501,6 +1526,7 @@ EXPORT_SYMBOL(genphy_update_link); + */ + int genphy_read_status(struct phy_device *phydev) + { ++ int bmcr; + int adv; + int err; + int lpa; +@@ -1513,6 +1539,10 @@ int genphy_read_status(struct phy_device + if (err) + return err; + ++ bmcr = phy_read(phydev, MII_BMCR); ++ if (bmcr < 0) ++ return bmcr; ++ + phydev->lp_advertising = 0; + + if (AUTONEG_ENABLE == phydev->autoneg) { +@@ -1567,11 +1597,6 @@ int genphy_read_status(struct phy_device + phydev->asym_pause = lpa & LPA_PAUSE_ASYM ? 1 : 0; + } + } else { +- int bmcr = phy_read(phydev, MII_BMCR); +- +- if (bmcr < 0) +- return bmcr; +- + if (bmcr & BMCR_FULLDPLX) + phydev->duplex = DUPLEX_FULL; + else +@@ -1588,6 +1613,11 @@ int genphy_read_status(struct phy_device + phydev->asym_pause = 0; + } + ++ if (bmcr & BMCR_PDOWN) ++ phydev->power = PHY_POWER_DOWN; ++ else ++ phydev->power = PHY_POWER_UP; ++ + return 0; + } + EXPORT_SYMBOL(genphy_read_status); +Index: include/linux/phy.h +=================================================================== +--- include/linux/phy.h ++++ linux-imx/include/linux/phy.h +@@ -348,6 +348,7 @@ enum phy_state { + PHY_NOLINK, + PHY_FORCING, + PHY_CHANGELINK, ++ PHY_POWERED_DOWN, + PHY_HALTED, + PHY_RESUMING + }; +@@ -447,6 +448,8 @@ struct phy_device { + + int link_timeout; + ++ int power; ++ + #ifdef CONFIG_LED_TRIGGER_PHY + struct phy_led_trigger *phy_led_triggers; + unsigned int phy_num_led_triggers; +@@ -819,6 +822,8 @@ int phy_suspend(struct phy_device *phyde + int phy_resume(struct phy_device *phydev); + int __phy_resume(struct phy_device *phydev); + int phy_loopback(struct phy_device *phydev, bool enable); ++int phy_power_up(struct phy_device *phydev); ++int phy_power_down(struct phy_device *phydev); + struct phy_device *phy_attach(struct net_device *dev, const char *bus_id, + phy_interface_t interface); + struct phy_device *phy_find_first(struct mii_bus *bus); +Index: include/uapi/linux/ethtool.h +=================================================================== +--- include/uapi/linux/ethtool.h ++++ linux-imx/include/uapi/linux/ethtool.h +@@ -114,7 +114,10 @@ struct ethtool_cmd { + __u8 eth_tp_mdix; + __u8 eth_tp_mdix_ctrl; + __u32 lp_advertising; +- __u32 reserved[2]; ++ __u8 power; ++ __u8 reserved2; ++ __u16 reserved3; ++ __u32 reserved[1]; + }; + + static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep, +@@ -1664,6 +1667,11 @@ static inline int ethtool_validate_duple + #define ETH_MODULE_SFF_8436 0x4 + #define ETH_MODULE_SFF_8436_LEN 256 + ++/* TIESSE Power, up or down. */ ++#define PHY_POWER_IGNORE 0x0 ++#define PHY_POWER_DOWN 0x1 ++#define PHY_POWER_UP 0x2 ++ + /* Reset flags */ + /* The reset() operation must clear the flags for the components which + * were actually reset. On successful return, the flags indicate the +@@ -1808,7 +1816,8 @@ struct ethtool_link_settings { + __u8 eth_tp_mdix_ctrl; + __s8 link_mode_masks_nwords; + __u8 transceiver; +- __u8 reserved1[3]; ++ __u8 power; ++ __u8 reserved1[2]; + __u32 reserved[7]; + __u32 link_mode_masks[0]; + /* layout of link_mode_masks fields: +Index: net/core/ethtool.c +=================================================================== +--- net/core/ethtool.c ++++ linux-imx/net/core/ethtool.c +@@ -480,6 +480,8 @@ convert_legacy_settings_to_link_ksetting + = legacy_settings->eth_tp_mdix; + link_ksettings->base.eth_tp_mdix_ctrl + = legacy_settings->eth_tp_mdix_ctrl; ++ link_ksettings->base.power ++ = legacy_settings->power; + return retval; + } + +@@ -526,6 +528,8 @@ convert_link_ksettings_to_legacy_setting + = link_ksettings->base.eth_tp_mdix_ctrl; + legacy_settings->transceiver + = link_ksettings->base.transceiver; ++ legacy_settings->power ++ = link_ksettings->base.power; + return retval; + } + diff --git a/buildroot/board/tiesse/tgr/kernel-patches/1007-imx8mm-phy-speed.patch b/buildroot/board/tiesse/tgr/kernel-patches/1007-imx8mm-phy-speed.patch new file mode 100644 index 0000000..57a22f0 --- /dev/null +++ b/buildroot/board/tiesse/tgr/kernel-patches/1007-imx8mm-phy-speed.patch @@ -0,0 +1,13 @@ +Index: drivers/net/phy/phy_device.c +=================================================================== +--- drivers/net/phy/phy_device.c ++++ linux-imx/drivers/net/phy/phy_device.c +@@ -1389,6 +1389,8 @@ int genphy_setup_forced(struct phy_devic + if (DUPLEX_FULL == phydev->duplex) + ctl |= BMCR_FULLDPLX; + ++ ctl |= BMCR_RESET; ++ + return phy_write(phydev, MII_BMCR, ctl); + } + EXPORT_SYMBOL(genphy_setup_forced); diff --git a/buildroot/board/tiesse/tgr/kernel-patches/1008-imx8mm-clear-stats.patch b/buildroot/board/tiesse/tgr/kernel-patches/1008-imx8mm-clear-stats.patch new file mode 100644 index 0000000..e47a331 --- /dev/null +++ b/buildroot/board/tiesse/tgr/kernel-patches/1008-imx8mm-clear-stats.patch @@ -0,0 +1,235 @@ +Index: include/uapi/linux/ethtool.h +=================================================================== +--- include/uapi/linux/ethtool.h ++++ linux-imx/include/uapi/linux/ethtool.h +@@ -1377,6 +1377,7 @@ enum ethtool_fec_config_bits { + #define ETHTOOL_PHY_STUNABLE 0x0000004f /* Set PHY tunable configuration */ + #define ETHTOOL_GFECPARAM 0x00000050 /* Get FEC settings */ + #define ETHTOOL_SFECPARAM 0x00000051 /* Set FEC settings */ ++#define ETHTOOL_CSTATS 0x00000052 /* Clear statistics */ + + /* compatibility with older code */ + #define SPARC_ETH_GSET ETHTOOL_GSET +Index: net/core/ethtool.c +=================================================================== +--- net/core/ethtool.c ++++ linux-imx/net/core/ethtool.c +@@ -1938,6 +1938,15 @@ static int ethtool_get_stats(struct net_ + return ret; + } + ++static int ethtool_clear_stats(struct net_device *dev) ++{ ++ if (!dev->ethtool_ops->clear_ethtool_stats) ++ return -EOPNOTSUPP; ++ ++ dev->ethtool_ops->clear_ethtool_stats(dev); ++ return 0; ++} ++ + static int ethtool_get_phy_stats(struct net_device *dev, void __user *useraddr) + { + struct ethtool_stats stats; +@@ -2577,6 +2586,7 @@ int dev_ethtool(struct net *net, struct + case ETHTOOL_GSSET_INFO: + case ETHTOOL_GSTRINGS: + case ETHTOOL_GSTATS: ++ case ETHTOOL_CSTATS: + case ETHTOOL_GPHYSTATS: + case ETHTOOL_GTSO: + case ETHTOOL_GPERMADDR: +@@ -2688,6 +2698,9 @@ int dev_ethtool(struct net *net, struct + case ETHTOOL_GSTATS: + rc = ethtool_get_stats(dev, useraddr); + break; ++ case ETHTOOL_CSTATS: ++ rc = ethtool_clear_stats(dev); ++ break; + case ETHTOOL_GPERMADDR: + rc = ethtool_get_perm_addr(dev, useraddr); + break; +Index: include/linux/ethtool.h +=================================================================== +--- include/linux/ethtool.h ++++ linux-imx/include/linux/ethtool.h +@@ -347,6 +347,7 @@ struct ethtool_ops { + int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state); + void (*get_ethtool_stats)(struct net_device *, + struct ethtool_stats *, u64 *); ++ void (*clear_ethtool_stats)(struct net_device *); + int (*begin)(struct net_device *); + void (*complete)(struct net_device *); + u32 (*get_priv_flags)(struct net_device *); +Index: net/dsa/slave.c +=================================================================== +--- net/dsa/slave.c ++++ linux-imx/net/dsa/slave.c +@@ -1019,6 +1019,30 @@ static int dsa_slave_set_rxnfc(struct ne + return ds->ops->set_rxnfc(ds, p->dp->index, nfc); + } + ++static void dsa_slave_clear_ethtool_stats(struct net_device *dev) ++{ ++ struct dsa_slave_priv *p = netdev_priv(dev); ++ struct dsa_switch *ds = p->dp->ds; ++ struct pcpu_sw_netstats *s; ++ unsigned int start; ++ int i; ++ ++ memset(&dev->stats, 0, sizeof(struct net_device_stats)); ++ for_each_possible_cpu(i) { ++ s = per_cpu_ptr(p->stats64, i); ++ do { ++ start = u64_stats_fetch_begin_irq(&s->syncp); ++ s->tx_packets = 0L; ++ s->tx_bytes = 0L; ++ s->rx_packets = 0L; ++ s->rx_bytes = 0L; ++ } while (u64_stats_fetch_retry_irq(&s->syncp, start)); ++ } ++ ++ if (ds->ops->clear_ethtool_stats) ++ ds->ops->clear_ethtool_stats(ds, p->dp->index); ++} ++ + static const struct ethtool_ops dsa_slave_ethtool_ops = { + .get_drvinfo = dsa_slave_get_drvinfo, + .get_regs_len = dsa_slave_get_regs_len, +@@ -1039,6 +1063,7 @@ static const struct ethtool_ops dsa_slav + .set_link_ksettings = dsa_slave_set_link_ksettings, + .get_rxnfc = dsa_slave_get_rxnfc, + .set_rxnfc = dsa_slave_set_rxnfc, ++ .clear_ethtool_stats = dsa_slave_clear_ethtool_stats, + }; + + static const struct net_device_ops dsa_slave_netdev_ops = { +Index: drivers/net/dsa/mv88e6xxx/chip.h +=================================================================== +--- drivers/net/dsa/mv88e6xxx/chip.h ++++ linux-imx/drivers/net/dsa/mv88e6xxx/chip.h +@@ -330,6 +330,7 @@ struct mv88e6xxx_ops { + void (*stats_get_strings)(struct mv88e6xxx_chip *chip, uint8_t *data); + void (*stats_get_stats)(struct mv88e6xxx_chip *chip, int port, + uint64_t *data); ++ void (*stats_clear_stats)(struct mv88e6xxx_chip *chip, int port); + int (*set_cpu_port)(struct mv88e6xxx_chip *chip, int port); + int (*set_egress_port)(struct mv88e6xxx_chip *chip, int port); + const struct mv88e6xxx_irq_ops *watchdog_ops; +Index: include/net/dsa.h +=================================================================== +--- include/net/dsa.h ++++ linux-imx/include/net/dsa.h +@@ -320,6 +320,7 @@ struct dsa_switch_ops { + void (*get_ethtool_stats)(struct dsa_switch *ds, + int port, uint64_t *data); + int (*get_sset_count)(struct dsa_switch *ds); ++ void (*clear_ethtool_stats)(struct dsa_switch *ds, int port); + + /* + * ethtool Wake-on-LAN +Index: drivers/net/dsa/mv88e6xxx/chip.c +=================================================================== +--- drivers/net/dsa/mv88e6xxx/chip.c ++++ linux-imx/drivers/net/dsa/mv88e6xxx/chip.c +@@ -648,6 +648,46 @@ static void mv88e6xxx_get_ethtool_stats( + mutex_unlock(&chip->reg_lock); + } + ++static void mv88e6xxx_stats_clear_stats(struct mv88e6xxx_chip *chip, int port) ++{ ++ u16 histogram = 0; ++ int err; ++ ++ err = mv88e6xxx_g1_read(chip, MV88E6XXX_G1_STATS_OP, &histogram); ++ if (err) ++ return; ++ ++ histogram &= 0xC00; ++ /* Clear the statistics counters for given port */ ++ err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_STATS_OP, ++ MV88E6XXX_G1_STATS_OP_BUSY | ++ MV88E6XXX_G1_STATS_OP_FLUSH_PORT | ++ (port +1) << 5 | ++ histogram); ++} ++ ++static void mv88e6250_stats_clear_stats(struct mv88e6xxx_chip *chip, int port) ++{ ++ mv88e6xxx_stats_clear_stats(chip, port); ++} ++ ++static void mv88e6xxx_clear_stats(struct mv88e6xxx_chip *chip, int port) ++{ ++ if (chip->info->ops->stats_clear_stats) ++ chip->info->ops->stats_clear_stats(chip, port); ++} ++ ++static void mv88e6xxx_clear_ethtool_stats(struct dsa_switch *ds, int port) ++{ ++ struct mv88e6xxx_chip *chip = ds->priv; ++ ++ mutex_lock(&chip->reg_lock); ++ ++ mv88e6xxx_clear_stats(chip, port); ++ ++ mutex_unlock(&chip->reg_lock); ++} ++ + static int mv88e6xxx_stats_set_histogram(struct mv88e6xxx_chip *chip) + { + if (chip->info->ops->stats_set_histogram) +@@ -2801,6 +2841,7 @@ static const struct mv88e6xxx_ops mv88e6 + .stats_get_sset_count = mv88e6250_stats_get_sset_count, + .stats_get_strings = mv88e6250_stats_get_strings, + .stats_get_stats = mv88e6250_stats_get_stats, ++ .stats_clear_stats = mv88e6250_stats_clear_stats, + .set_cpu_port = mv88e6095_g1_set_cpu_port, + .set_egress_port = mv88e6095_g1_set_egress_port, + .watchdog_ops = &mv88e6250_watchdog_ops, +@@ -3837,6 +3878,7 @@ static const struct dsa_switch_ops mv88e + .adjust_link = mv88e6xxx_adjust_link, + .get_strings = mv88e6xxx_get_strings, + .get_ethtool_stats = mv88e6xxx_get_ethtool_stats, ++ .clear_ethtool_stats = mv88e6xxx_clear_ethtool_stats, + .get_sset_count = mv88e6xxx_get_sset_count, + .port_enable = mv88e6xxx_port_enable, + .port_disable = mv88e6xxx_port_disable, +Index: net/8021q/vlan_dev.c +=================================================================== +--- net/8021q/vlan_dev.c ++++ linux-imx/net/8021q/vlan_dev.c +@@ -681,6 +681,26 @@ static int vlan_ethtool_get_ts_info(stru + return 0; + } + ++static void vlan_clear_ethtool_stats(struct net_device *dev) ++{ ++ struct vlan_pcpu_stats *p; ++ unsigned int start; ++ int i; ++ ++ memset(&dev->stats, 0, sizeof(struct net_device_stats)); ++ for_each_possible_cpu(i) { ++ p = per_cpu_ptr(vlan_dev_priv(dev)->vlan_pcpu_stats, i); ++ do { ++ start = u64_stats_fetch_begin_irq(&p->syncp); ++ p->rx_packets = 0L; ++ p->rx_bytes = 0L; ++ p->rx_multicast = 0L; ++ p->tx_packets = 0L; ++ p->tx_bytes = 0L; ++ } while (u64_stats_fetch_retry_irq(&p->syncp, start)); ++ } ++} ++ + static void vlan_dev_get_stats64(struct net_device *dev, + struct rtnl_link_stats64 *stats) + { +@@ -771,6 +791,7 @@ static const struct ethtool_ops vlan_eth + .get_drvinfo = vlan_ethtool_get_drvinfo, + .get_link = ethtool_op_get_link, + .get_ts_info = vlan_ethtool_get_ts_info, ++ .clear_ethtool_stats = vlan_clear_ethtool_stats, + }; + + static const struct net_device_ops vlan_netdev_ops = { diff --git a/buildroot/board/tiesse/tgr/kernel-patches/1009-imx8mm-mv88e6xxx-sysfs-interface.patch b/buildroot/board/tiesse/tgr/kernel-patches/1009-imx8mm-mv88e6xxx-sysfs-interface.patch new file mode 100644 index 0000000..e78d084 --- /dev/null +++ b/buildroot/board/tiesse/tgr/kernel-patches/1009-imx8mm-mv88e6xxx-sysfs-interface.patch @@ -0,0 +1,229 @@ +Index: drivers/net/dsa/mv88e6xxx/chip.c +=================================================================== +--- drivers/net/dsa/mv88e6xxx/chip.c ++++ linux-imx/drivers/net/dsa/mv88e6xxx/chip.c +@@ -3936,6 +3936,212 @@ static void mv88e6xxx_unregister_switch( + dsa_unregister_switch(chip->ds); + } + ++/* ++ * Marvell switch mv88e6xxx sysfs interface ++ */ ++static int mv88e6xxx_port; ++static u16 mv88e6xxx_reg; ++static ssize_t sysfs_reg_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ return scnprintf(buf, PAGE_SIZE, "0x%x", mv88e6xxx_reg); ++} ++ ++static ssize_t sysfs_reg_store(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ if (kstrtou16(buf, 0, &mv88e6xxx_reg)) { ++ dev_err(dev, "Invalid reg\n"); ++ return -EINVAL; ++ } ++ return (ssize_t)count; ++} ++ ++static ssize_t sysfs_port_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ return scnprintf(buf, PAGE_SIZE, "0x%x", mv88e6xxx_port); ++} ++ ++static ssize_t sysfs_port_store(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ if (kstrtoint(buf, 0, &mv88e6xxx_port)) { ++ dev_err(dev, "Invalid port \n"); ++ return -EINVAL; ++ } ++ return (ssize_t)count; ++} ++ ++/* ++ * Read the specified register of a specified port ++ */ ++static ssize_t sysfs_port_reg_val_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct dsa_switch *ds = (struct dsa_switch *)dev_get_drvdata(dev); ++ struct mv88e6xxx_chip *chip = ds->priv; ++ u16 reg; ++ int err; ++ ++ mutex_lock(&chip->reg_lock); ++ err = mv88e6xxx_port_read(chip, mv88e6xxx_port, mv88e6xxx_reg, ®); ++ mutex_unlock(&chip->reg_lock); ++ ++ if (err) { ++ dev_err(dev, "Port %d register %x failed\n", mv88e6xxx_port, mv88e6xxx_reg); ++ return -EIO; ++ } ++ ++ return scnprintf(buf, PAGE_SIZE, "0x%x\n", reg); ++} ++ ++/* ++ * Purge the switch ATU cache ++ */ ++static ssize_t sysfs_atu_flush(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ struct dsa_switch *ds = (struct dsa_switch *)dev_get_drvdata(dev); ++ struct mv88e6xxx_chip *chip = ds->priv; ++ int err; ++ ++ mutex_lock(&chip->reg_lock); ++ err = mv88e6xxx_g1_atu_flush(chip, 0, true); ++ mutex_unlock(&chip->reg_lock); ++ ++ if (err) { ++ dev_err(dev, "ATU flush failed\n"); ++ return -EIO; ++ } ++ ++ return (ssize_t)count; ++} ++ ++/* ++ * Returns the ATU cache content ++ */ ++static ssize_t sysfs_atu_dump(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct dsa_switch *ds = (struct dsa_switch *)dev_get_drvdata(dev); ++ struct mv88e6xxx_chip *chip = ds->priv; ++ struct mv88e6xxx_atu_entry addr; ++ u16 fid = 0; ++ ssize_t n = 0; ++ int err; ++ ++ addr.state = MV88E6XXX_G1_ATU_DATA_STATE_UNUSED; ++ eth_broadcast_addr(addr.mac); ++ ++ n += scnprintf(buf + n, PAGE_SIZE - n, ++ "\nATU List:\n"); ++ ++ mutex_lock(&chip->reg_lock); ++ while (1) { ++ err = mv88e6xxx_g1_atu_getnext(chip, fid, &addr); ++ if (err) ++ break; ++ ++ if (addr.state == MV88E6XXX_G1_ATU_DATA_STATE_UNUSED) ++ break; ++ n += scnprintf(buf + n, PAGE_SIZE - n, ++ "(%02x:%02x:%02x:%02x:%02x:%02x), PortVec %#x, State %#x\n", ++ addr.mac[0], addr.mac[1], addr.mac[2], ++ addr.mac[3], addr.mac[4], addr.mac[5], ++ addr.portvec, ++ addr.state); ++ } ++ mutex_unlock(&chip->reg_lock); ++ n += scnprintf(buf + n, PAGE_SIZE - n,"\n"); ++ if (err) ++ return 0; ++ else ++ return n; ++} ++ ++static ssize_t sysfs_atu_uc_static_entry_store(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ struct dsa_switch *ds = (struct dsa_switch *)dev_get_drvdata(dev); ++ struct mv88e6xxx_chip *chip = ds->priv; ++ const char *name = attr->attr.name; ++ struct mv88e6xxx_atu_entry entry; ++ u8 mac[ETH_ALEN]; ++ u8 state; ++ int values[ETH_ALEN], dpv; ++ int i, err; ++ ++ if(7 != sscanf(buf, "%x:%x:%x:%x:%x:%x %x%*c", ++ &values[0], &values[1], &values[2], ++ &values[3], &values[4], &values[5], ++ &dpv)) { ++ dev_err(dev, "Invalid input %s\n", buf); ++ return -EINVAL; ++ } ++ ++ for (i = 0; i 255) { ++ dev_err(dev, "Invalid mac %s\n", buf); ++ return -EINVAL; ++ } ++ mac[i] = (u8)values[i]; ++ } ++ ++ if (!strcmp(name, "atu_uc_static_entry_add")) ++ state = MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC; ++ else ++ state = MV88E6XXX_G1_ATU_DATA_STATE_UNUSED; ++ ++ memset(&entry, 0, sizeof(entry)); ++ ether_addr_copy(entry.mac, mac); ++ entry.portvec = dpv; ++ entry.state = state; ++ ++ mutex_lock(&chip->reg_lock); ++ err = mv88e6xxx_g1_atu_loadpurge(chip, 0, &entry); ++ mutex_unlock(&chip->reg_lock); ++ ++ if (err) { ++ dev_err(dev, "Load static entry failed\n"); ++ return -EIO; ++ } ++ ++ return (ssize_t)count; ++} ++ ++static DEVICE_ATTR(reg, S_IWUSR | S_IRUSR, ++ sysfs_reg_show, sysfs_reg_store); ++static DEVICE_ATTR(port, S_IWUSR | S_IRUSR, ++ sysfs_port_show, sysfs_port_store); ++static DEVICE_ATTR(port_reg_val, S_IWUSR | S_IRUSR, ++ sysfs_port_reg_val_show, NULL); ++static DEVICE_ATTR(atu, S_IWUSR | S_IRUSR, ++ sysfs_atu_dump, sysfs_atu_flush); ++static DEVICE_ATTR(atu_uc_static_entry_add, S_IWUSR | S_IRUSR, ++ NULL, sysfs_atu_uc_static_entry_store); ++static DEVICE_ATTR(atu_uc_static_entry_del, S_IWUSR | S_IRUSR, ++ NULL, sysfs_atu_uc_static_entry_store); ++ ++static struct attribute *mv88e6xxx_sysfs_entries[] = { ++ &dev_attr_reg.attr, ++ &dev_attr_port.attr, ++ &dev_attr_port_reg_val.attr, ++ &dev_attr_atu.attr, ++ &dev_attr_atu_uc_static_entry_add.attr, ++ &dev_attr_atu_uc_static_entry_del.attr, ++ NULL ++}; ++ ++static struct attribute_group mv88e6xxx_attribute_group = { ++ .name = "config", ++ .attrs = mv88e6xxx_sysfs_entries, ++}; ++ + static int mv88e6xxx_probe(struct mdio_device *mdiodev) + { + struct device *dev = &mdiodev->dev; +@@ -4013,6 +4219,11 @@ static int mv88e6xxx_probe(struct mdio_d + if (err) + goto out_mdio; + ++ /* register sysfs files */ ++ err = sysfs_create_group(&dev->kobj, &mv88e6xxx_attribute_group); ++ if (err) ++ dev_err(chip->dev, "sysfs_create_group failed\n"); ++ + return 0; + + out_mdio: diff --git a/buildroot/board/tiesse/tgr/kernel-patches/1010-imx8mm-netdev-trigger.patch b/buildroot/board/tiesse/tgr/kernel-patches/1010-imx8mm-netdev-trigger.patch new file mode 100644 index 0000000..664d61f --- /dev/null +++ b/buildroot/board/tiesse/tgr/kernel-patches/1010-imx8mm-netdev-trigger.patch @@ -0,0 +1,527 @@ +Index: drivers/leds/trigger/Kconfig +=================================================================== +--- drivers/leds/trigger/Kconfig ++++ linux-imx/drivers/leds/trigger/Kconfig +@@ -126,4 +126,11 @@ config LEDS_TRIGGER_PANIC + a different trigger. + If unsure, say Y. + ++config LEDS_TRIGGER_NETDEV ++ tristate "LED Netdev Trigger" ++ depends on NET ++ help ++ This allows LEDs to be controlled by network device activity. ++ If unsure, say Y. ++ + endif # LEDS_TRIGGERS +Index: drivers/leds/trigger/Makefile +=================================================================== +--- drivers/leds/trigger/Makefile ++++ linux-imx/drivers/leds/trigger/Makefile +@@ -11,3 +11,4 @@ obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += + obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o + obj-$(CONFIG_LEDS_TRIGGER_CAMERA) += ledtrig-camera.o + obj-$(CONFIG_LEDS_TRIGGER_PANIC) += ledtrig-panic.o ++obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o +Index: drivers/leds/trigger/ledtrig-netdev.c +=================================================================== +--- /dev/null ++++ linux-imx/drivers/leds/trigger/ledtrig-netdev.c +@@ -0,0 +1,497 @@ ++// SPDX-License-Identifier: GPL-2.0 ++// Copyright 2017 Ben Whitten ++// Copyright 2007 Oliver Jowett ++// ++// LED Kernel Netdev Trigger ++// ++// Toggles the LED to reflect the link and traffic state of a named net device ++// ++// Derived from ledtrig-timer.c which is: ++// Copyright 2005-2006 Openedhand Ltd. ++// Author: Richard Purdie ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "../leds.h" ++ ++/* ++ * Configurable sysfs attributes: ++ * ++ * device_name - network device name to monitor ++ * interval - duration of LED blink, in milliseconds ++ * link - LED's normal state reflects whether the link is up ++ * (has carrier) or not ++ * tx - LED blinks on transmitted data ++ * rx - LED blinks on receive data ++ * ++ */ ++ ++struct led_netdev_data { ++ spinlock_t lock; ++ ++ struct delayed_work work; ++ struct notifier_block notifier; ++ ++ struct led_classdev *led_cdev; ++ struct net_device *net_dev; ++ ++ char device_name[IFNAMSIZ]; ++ atomic_t interval; ++ unsigned int last_activity; ++ ++ unsigned long mode; ++#define NETDEV_LED_LINK 0 ++#define NETDEV_LED_TX 1 ++#define NETDEV_LED_RX 2 ++#define NETDEV_LED_MODE_LINKUP 3 ++}; ++ ++enum netdev_led_attr { ++ NETDEV_ATTR_LINK, ++ NETDEV_ATTR_TX, ++ NETDEV_ATTR_RX ++}; ++ ++static void set_baseline_state(struct led_netdev_data *trigger_data) ++{ ++ int current_brightness; ++ struct led_classdev *led_cdev = trigger_data->led_cdev; ++ ++ current_brightness = led_cdev->brightness; ++ if (current_brightness) ++ led_cdev->blink_brightness = current_brightness; ++ if (!led_cdev->blink_brightness) ++ led_cdev->blink_brightness = led_cdev->max_brightness; ++ ++ if (!test_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode)) ++ led_set_brightness(led_cdev, LED_OFF); ++ else { ++ if (test_bit(NETDEV_LED_LINK, &trigger_data->mode)) ++ led_set_brightness(led_cdev, ++ led_cdev->blink_brightness); ++ else ++ led_set_brightness(led_cdev, LED_OFF); ++ ++ /* If we are looking for RX/TX start periodically ++ * checking stats ++ */ ++ if (test_bit(NETDEV_LED_TX, &trigger_data->mode) || ++ test_bit(NETDEV_LED_RX, &trigger_data->mode)) ++ schedule_delayed_work(&trigger_data->work, 0); ++ } ++} ++ ++static ssize_t device_name_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct led_classdev *led_cdev = dev_get_drvdata(dev); ++ struct led_netdev_data *trigger_data = led_cdev->trigger_data; ++ ssize_t len; ++ ++ spin_lock_bh(&trigger_data->lock); ++ len = sprintf(buf, "%s\n", trigger_data->device_name); ++ spin_unlock_bh(&trigger_data->lock); ++ ++ return len; ++} ++ ++static ssize_t device_name_store(struct device *dev, ++ struct device_attribute *attr, const char *buf, ++ size_t size) ++{ ++ struct led_classdev *led_cdev = dev_get_drvdata(dev); ++ struct led_netdev_data *trigger_data = led_cdev->trigger_data; ++ ++ if (size >= IFNAMSIZ) ++ return -EINVAL; ++ ++ cancel_delayed_work_sync(&trigger_data->work); ++ ++ spin_lock_bh(&trigger_data->lock); ++ ++ if (trigger_data->net_dev) { ++ dev_put(trigger_data->net_dev); ++ trigger_data->net_dev = NULL; ++ } ++ ++ memcpy(trigger_data->device_name, buf, size); ++ trigger_data->device_name[size] = 0; ++ if (size > 0 && trigger_data->device_name[size - 1] == '\n') ++ trigger_data->device_name[size - 1] = 0; ++ ++ if (trigger_data->device_name[0] != 0) ++ trigger_data->net_dev = ++ dev_get_by_name(&init_net, trigger_data->device_name); ++ ++ clear_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode); ++ if (trigger_data->net_dev != NULL) ++ if (netif_carrier_ok(trigger_data->net_dev)) ++ set_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode); ++ ++ trigger_data->last_activity = 0; ++ ++ set_baseline_state(trigger_data); ++ spin_unlock_bh(&trigger_data->lock); ++ ++ return size; ++} ++ ++static DEVICE_ATTR_RW(device_name); ++ ++static ssize_t netdev_led_attr_show(struct device *dev, char *buf, ++ enum netdev_led_attr attr) ++{ ++ struct led_classdev *led_cdev = dev_get_drvdata(dev); ++ struct led_netdev_data *trigger_data = led_cdev->trigger_data; ++ int bit; ++ ++ switch (attr) { ++ case NETDEV_ATTR_LINK: ++ bit = NETDEV_LED_LINK; ++ break; ++ case NETDEV_ATTR_TX: ++ bit = NETDEV_LED_TX; ++ break; ++ case NETDEV_ATTR_RX: ++ bit = NETDEV_LED_RX; ++ break; ++ default: ++ return -EINVAL; ++ } ++ ++ return sprintf(buf, "%u\n", test_bit(bit, &trigger_data->mode)); ++} ++ ++static ssize_t netdev_led_attr_store(struct device *dev, const char *buf, ++ size_t size, enum netdev_led_attr attr) ++{ ++ struct led_classdev *led_cdev = dev_get_drvdata(dev); ++ struct led_netdev_data *trigger_data = led_cdev->trigger_data; ++ unsigned long state; ++ int ret; ++ int bit; ++ ++ ret = kstrtoul(buf, 0, &state); ++ if (ret) ++ return ret; ++ ++ switch (attr) { ++ case NETDEV_ATTR_LINK: ++ bit = NETDEV_LED_LINK; ++ break; ++ case NETDEV_ATTR_TX: ++ bit = NETDEV_LED_TX; ++ break; ++ case NETDEV_ATTR_RX: ++ bit = NETDEV_LED_RX; ++ break; ++ default: ++ return -EINVAL; ++ } ++ ++ cancel_delayed_work_sync(&trigger_data->work); ++ ++ if (state) ++ set_bit(bit, &trigger_data->mode); ++ else ++ clear_bit(bit, &trigger_data->mode); ++ ++ set_baseline_state(trigger_data); ++ ++ return size; ++} ++ ++static ssize_t link_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ return netdev_led_attr_show(dev, buf, NETDEV_ATTR_LINK); ++} ++ ++static ssize_t link_store(struct device *dev, ++ struct device_attribute *attr, const char *buf, size_t size) ++{ ++ return netdev_led_attr_store(dev, buf, size, NETDEV_ATTR_LINK); ++} ++ ++static DEVICE_ATTR_RW(link); ++ ++static ssize_t tx_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ return netdev_led_attr_show(dev, buf, NETDEV_ATTR_TX); ++} ++ ++static ssize_t tx_store(struct device *dev, ++ struct device_attribute *attr, const char *buf, size_t size) ++{ ++ return netdev_led_attr_store(dev, buf, size, NETDEV_ATTR_TX); ++} ++ ++static DEVICE_ATTR_RW(tx); ++ ++static ssize_t rx_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ return netdev_led_attr_show(dev, buf, NETDEV_ATTR_RX); ++} ++ ++static ssize_t rx_store(struct device *dev, ++ struct device_attribute *attr, const char *buf, size_t size) ++{ ++ return netdev_led_attr_store(dev, buf, size, NETDEV_ATTR_RX); ++} ++ ++static DEVICE_ATTR_RW(rx); ++ ++static ssize_t interval_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct led_classdev *led_cdev = dev_get_drvdata(dev); ++ struct led_netdev_data *trigger_data = led_cdev->trigger_data; ++ ++ return sprintf(buf, "%u\n", ++ jiffies_to_msecs(atomic_read(&trigger_data->interval))); ++} ++ ++static ssize_t interval_store(struct device *dev, ++ struct device_attribute *attr, const char *buf, ++ size_t size) ++{ ++ struct led_classdev *led_cdev = dev_get_drvdata(dev); ++ struct led_netdev_data *trigger_data = led_cdev->trigger_data; ++ unsigned long value; ++ int ret; ++ ++ ret = kstrtoul(buf, 0, &value); ++ if (ret) ++ return ret; ++ ++ /* impose some basic bounds on the timer interval */ ++ if (value >= 5 && value <= 10000) { ++ cancel_delayed_work_sync(&trigger_data->work); ++ ++ atomic_set(&trigger_data->interval, msecs_to_jiffies(value)); ++ set_baseline_state(trigger_data); /* resets timer */ ++ } ++ ++ return size; ++} ++ ++static DEVICE_ATTR_RW(interval); ++ ++static int netdev_trig_notify(struct notifier_block *nb, ++ unsigned long evt, void *dv) ++{ ++ struct net_device *dev = ++ netdev_notifier_info_to_dev((struct netdev_notifier_info *)dv); ++ struct led_netdev_data *trigger_data = container_of(nb, ++ struct ++ led_netdev_data, ++ notifier); ++ ++ if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE ++ && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER ++ && evt != NETDEV_CHANGENAME) ++ return NOTIFY_DONE; ++ ++ if (!(dev == trigger_data->net_dev || ++ (evt == NETDEV_CHANGENAME && !strcmp(dev->name, trigger_data->device_name)) || ++ (evt == NETDEV_REGISTER && !strcmp(dev->name, trigger_data->device_name)))) ++ return NOTIFY_DONE; ++ ++ cancel_delayed_work_sync(&trigger_data->work); ++ ++ spin_lock_bh(&trigger_data->lock); ++ ++ clear_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode); ++ switch (evt) { ++ case NETDEV_CHANGENAME: ++ case NETDEV_REGISTER: ++ if (trigger_data->net_dev) ++ dev_put(trigger_data->net_dev); ++ dev_hold(dev); ++ trigger_data->net_dev = dev; ++ break; ++ case NETDEV_UNREGISTER: ++ dev_put(trigger_data->net_dev); ++ trigger_data->net_dev = NULL; ++ break; ++ case NETDEV_UP: ++ case NETDEV_CHANGE: ++ if (netif_carrier_ok(dev)) ++ set_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode); ++ break; ++ } ++ ++ set_baseline_state(trigger_data); ++ ++ spin_unlock_bh(&trigger_data->lock); ++ ++ return NOTIFY_DONE; ++} ++ ++/* here's the real work! */ ++static void netdev_trig_work(struct work_struct *work) ++{ ++ struct led_netdev_data *trigger_data = container_of(work, ++ struct ++ led_netdev_data, ++ work.work); ++ struct rtnl_link_stats64 *dev_stats; ++ unsigned int new_activity; ++ struct rtnl_link_stats64 temp; ++ unsigned long interval; ++ int invert; ++ ++ /* If we dont have a device, insure we are off */ ++ if (!trigger_data->net_dev) { ++ led_set_brightness(trigger_data->led_cdev, LED_OFF); ++ return; ++ } ++ ++ /* If we are not looking for RX/TX then return */ ++ if (!test_bit(NETDEV_LED_TX, &trigger_data->mode) && ++ !test_bit(NETDEV_LED_RX, &trigger_data->mode)) ++ return; ++ ++ dev_stats = dev_get_stats(trigger_data->net_dev, &temp); ++ new_activity = ++ (test_bit(NETDEV_LED_TX, &trigger_data->mode) ? ++ dev_stats->tx_packets : 0) + ++ (test_bit(NETDEV_LED_RX, &trigger_data->mode) ? ++ dev_stats->rx_packets : 0); ++ ++ if (trigger_data->last_activity != new_activity) { ++ led_stop_software_blink(trigger_data->led_cdev); ++ ++ invert = test_bit(NETDEV_LED_LINK, &trigger_data->mode); ++ interval = jiffies_to_msecs( ++ atomic_read(&trigger_data->interval)); ++ /* base state is ON (link present) */ ++ led_blink_set_oneshot(trigger_data->led_cdev, ++ &interval, ++ &interval, ++ invert); ++ trigger_data->last_activity = new_activity; ++ } ++ ++ schedule_delayed_work(&trigger_data->work, ++ (atomic_read(&trigger_data->interval)*2)); ++} ++ ++static void netdev_trig_activate(struct led_classdev *led_cdev) ++{ ++ struct led_netdev_data *trigger_data; ++ int rc; ++ ++ trigger_data = kzalloc(sizeof(struct led_netdev_data), GFP_KERNEL); ++ if (!trigger_data) ++ return; ++ ++ spin_lock_init(&trigger_data->lock); ++ ++ trigger_data->notifier.notifier_call = netdev_trig_notify; ++ trigger_data->notifier.priority = 10; ++ ++ INIT_DELAYED_WORK(&trigger_data->work, netdev_trig_work); ++ ++ trigger_data->led_cdev = led_cdev; ++ trigger_data->net_dev = NULL; ++ trigger_data->device_name[0] = 0; ++ ++ trigger_data->mode = 0; ++ atomic_set(&trigger_data->interval, msecs_to_jiffies(50)); ++ trigger_data->last_activity = 0; ++ ++ led_cdev->trigger_data = trigger_data; ++ ++ rc = device_create_file(led_cdev->dev, &dev_attr_device_name); ++ if (rc) ++ goto err_out; ++ rc = device_create_file(led_cdev->dev, &dev_attr_link); ++ if (rc) ++ goto err_out_device_name; ++ rc = device_create_file(led_cdev->dev, &dev_attr_rx); ++ if (rc) ++ goto err_out_link; ++ rc = device_create_file(led_cdev->dev, &dev_attr_tx); ++ if (rc) ++ goto err_out_rx; ++ rc = device_create_file(led_cdev->dev, &dev_attr_interval); ++ if (rc) ++ goto err_out_tx; ++ rc = register_netdevice_notifier(&trigger_data->notifier); ++ if (rc) ++ goto err_out_interval; ++ return; ++ ++err_out_interval: ++ device_remove_file(led_cdev->dev, &dev_attr_interval); ++err_out_tx: ++ device_remove_file(led_cdev->dev, &dev_attr_tx); ++err_out_rx: ++ device_remove_file(led_cdev->dev, &dev_attr_rx); ++err_out_link: ++ device_remove_file(led_cdev->dev, &dev_attr_link); ++err_out_device_name: ++ device_remove_file(led_cdev->dev, &dev_attr_device_name); ++err_out: ++ led_cdev->trigger_data = NULL; ++ kfree(trigger_data); ++} ++ ++static void netdev_trig_deactivate(struct led_classdev *led_cdev) ++{ ++ struct led_netdev_data *trigger_data = led_cdev->trigger_data; ++ ++ if (trigger_data) { ++ unregister_netdevice_notifier(&trigger_data->notifier); ++ ++ device_remove_file(led_cdev->dev, &dev_attr_device_name); ++ device_remove_file(led_cdev->dev, &dev_attr_link); ++ device_remove_file(led_cdev->dev, &dev_attr_rx); ++ device_remove_file(led_cdev->dev, &dev_attr_tx); ++ device_remove_file(led_cdev->dev, &dev_attr_interval); ++ ++ cancel_delayed_work_sync(&trigger_data->work); ++ ++ if (trigger_data->net_dev) ++ dev_put(trigger_data->net_dev); ++ ++ kfree(trigger_data); ++ } ++} ++ ++static struct led_trigger netdev_led_trigger = { ++ .name = "netdev", ++ .activate = netdev_trig_activate, ++ .deactivate = netdev_trig_deactivate, ++}; ++ ++static int __init netdev_trig_init(void) ++{ ++ return led_trigger_register(&netdev_led_trigger); ++} ++ ++static void __exit netdev_trig_exit(void) ++{ ++ led_trigger_unregister(&netdev_led_trigger); ++} ++ ++module_init(netdev_trig_init); ++module_exit(netdev_trig_exit); ++ ++MODULE_AUTHOR("Ben Whitten "); ++MODULE_AUTHOR("Oliver Jowett "); ++MODULE_DESCRIPTION("Netdev LED trigger"); ++MODULE_LICENSE("GPL v2"); diff --git a/buildroot/board/tiesse/tgr/linux.config b/buildroot/board/tiesse/tgr/linux.config index 2b01b87..758808d 100644 --- a/buildroot/board/tiesse/tgr/linux.config +++ b/buildroot/board/tiesse/tgr/linux.config @@ -158,6 +158,8 @@ CONFIG_IP6_NF_NAT=m CONFIG_IP6_NF_TARGET_MASQUERADE=m CONFIG_BRIDGE=m CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_NET_DSA=y +CONFIG_NET_DSA_SLAVE_MAC=y CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y CONFIG_VLAN_8021Q_MVRP=y @@ -269,6 +271,7 @@ CONFIG_VXLAN=m CONFIG_TUN=y CONFIG_VETH=m CONFIG_VIRTIO_NET=y +CONFIG_NET_DSA_MV88E6XXX=m CONFIG_AMD_XGBE=y CONFIG_NET_XGENE=y CONFIG_MACB=y @@ -290,7 +293,6 @@ CONFIG_AT803X_PHY=y CONFIG_MARVELL_PHY=m CONFIG_MESON_GXL_PHY=m CONFIG_MICREL_PHY=y -CONFIG_NXP_TJA110X_PHY=y CONFIG_REALTEK_PHY=m CONFIG_ROCKCHIP_PHY=y CONFIG_PPP=y @@ -314,7 +316,6 @@ CONFIG_USB_NET_QMI_WWAN=m CONFIG_BRCMFMAC=m CONFIG_BRCMFMAC_PCIE=y CONFIG_HOSTAP=y -CONFIG_RFKILL=y CONFIG_RTL_CARDS=m # CONFIG_WLAN_VENDOR_TI is not set CONFIG_XEN_NETDEV_BACKEND=m @@ -618,7 +619,6 @@ CONFIG_USB_SERIAL=y CONFIG_USB_SERIAL_OPTION=y CONFIG_USB_TEST=m CONFIG_USB_EHSET_TEST_FIXTURE=y -CONFIG_USB_HUB_USB251XB=y CONFIG_USB_HSIC_USB3503=y CONFIG_NOP_USB_XCEIV=y CONFIG_USB_GPIO_VBUS=y @@ -687,6 +687,7 @@ CONFIG_LEDS_SYSCON=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_CPU=y CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_LEDS_TRIGGER_NETDEV=y CONFIG_EDAC=y CONFIG_RTC_CLASS=y CONFIG_RTC_DRV_MAX77686=y diff --git a/buildroot/board/tiesse/tgr/uboot-patches/0000-Add-imx8mm-tgr-support.patch b/buildroot/board/tiesse/tgr/uboot-patches/0000-Add-imx8mm-tgr-support.patch index c5c7bbb..30870db 100644 --- a/buildroot/board/tiesse/tgr/uboot-patches/0000-Add-imx8mm-tgr-support.patch +++ b/buildroot/board/tiesse/tgr/uboot-patches/0000-Add-imx8mm-tgr-support.patch @@ -69,7 +69,7 @@ Index: u-boot-imx/arch/arm/dts/fsl-imx8mm-tgr.dts + MX8MM_IOMUXC_SAI1_RXD5_GPIO4_IO7 0x10 + MX8MM_IOMUXC_SAI1_RXD6_GPIO4_IO8 0x10 + MX8MM_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x10 -+ MX8MM_IOMUXC_SAI1_RXD7_GPIO4_IO9 0x80 ++ MX8MM_IOMUXC_SAI1_RXD7_GPIO4_IO9 0x1c0 + MX8MM_IOMUXC_SAI1_RXD1_GPIO4_IO3 0x10 + >; + }; @@ -4125,7 +4125,7 @@ Index: u-boot-imx/board/tiesse/tgr/spl.c +#endif + +static iomux_v3_cfg_t btn_pads[] = { -+ IMX8MM_PAD_SAI1_RXD7_GPIO4_IO9 | MUX_PAD_CTRL(PAD_CTL_HYS), ++ IMX8MM_PAD_SAI1_RXD7_GPIO4_IO9 | MUX_PAD_CTRL(PAD_CTL_HYS | PAD_CTL_PUE | PAD_CTL_PE ), +}; + +#define RST_BTN IMX_GPIO_NR(4, 9) @@ -4141,8 +4141,8 @@ Index: u-boot-imx/board/tiesse/tgr/spl.c + IMX8MM_PAD_SAI1_RXD6_GPIO4_IO8 | MUX_PAD_CTRL(NO_PAD_CTRL), +}; + -+#define LED_MODEM IMX_GPIO_NR(4, 7) -+#define LED_PWR IMX_GPIO_NR(4, 8) ++#define LED_MODEM IMX_GPIO_NR(4, 4) ++#define LED_PWR IMX_GPIO_NR(4, 5) +static void leds_init(void) +{ + imx_iomux_v3_setup_multiple_pads(led_pads, ARRAY_SIZE(led_pads)); @@ -4720,7 +4720,7 @@ Index: u-boot-imx/include/configs/tgr.h + +#define CONFIG_SYS_SDRAM_BASE 0x40000000 +#define PHYS_SDRAM 0x40000000 -+#define PHYS_SDRAM_SIZE SZ_1G /* 1GB DDR */ ++#define PHYS_SDRAM_SIZE SZ_2G /* 1GB DDR */ +#define CONFIG_NR_DRAM_BANKS 1 + +#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM diff --git a/conf/etc/network/interfaces b/conf/etc/network/interfaces index 193c0a0..81ef206 100644 --- a/conf/etc/network/interfaces +++ b/conf/etc/network/interfaces @@ -2,8 +2,8 @@ auto lo iface lo inet loopback auto eth0 - pre-up sleep 10 iface eth0 inet dhcp + pre-up sleep 20 auto ap0 iface ap0 inet static diff --git a/conf/lib/modules/4.14.98/extra/qca6174.ko b/conf/lib/modules/4.14.98/extra/qca6174.ko index 485118a55cc4a247874a2466acdfdd338a68580f..5edc203b2c1a1bc6eee0d99a708451b58f03d78b 100644 GIT binary patch delta 264582 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û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 UuuT2i_@% delta 262324 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