From ef4df2b5e9d66a6461982a0a81f928abb0f6a074 Mon Sep 17 00:00:00 2001 From: Chuanhong Guo Date: Sat, 2 Nov 2024 22:24:21 +0800 Subject: [PATCH 1/7] kernel: can: package driver for Geschwister Schneider interface Package gs_usb CAN driver, which is for Geschwister Schneider and bytewerk.org candleLight compatible USB/CAN interfaces. Signed-off-by: Chuanhong Guo --- package/kernel/linux/modules/can.mk | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/package/kernel/linux/modules/can.mk b/package/kernel/linux/modules/can.mk index c86d02d8de..1a4c81cc31 100644 --- a/package/kernel/linux/modules/can.mk +++ b/package/kernel/linux/modules/can.mk @@ -245,6 +245,25 @@ endef $(eval $(call KernelPackage,can-usb-esd)) +define KernelPackage/can-usb-gs + TITLE:=Geschwister Schneider UG interfaces + KCONFIG:=CONFIG_CAN_GS_USB + FILES:= \ + $(LINUX_DIR)/drivers/net/can/usb/gs_usb.ko + AUTOLOAD:=$(call AutoProbe,gs_usb) + $(call AddDepends/can,+kmod-usb-core) +endef + +define KernelPackage/can-usb-gsr/description + This driver supports the Geschwister Schneider and + bytewerk.org candleLight compatible + (https://github.com/candle-usb/candleLight_fw) USB/CAN + interfaces. +endef + +$(eval $(call KernelPackage,can-usb-gs)) + + define KernelPackage/can-usb-kvaser TITLE:=Kvaser CAN/USB interface KCONFIG:=CONFIG_CAN_KVASER_USB From e612900ae0fd6c4624fa661e004536216409107f Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Thu, 24 Oct 2024 14:51:29 -0700 Subject: [PATCH 2/7] ramips: mt7621: convert usb power to regulators These things are regulators. Should silence dmesg messages about using dummy regulators. Signed-off-by: Rosen Penev Link: https://github.com/openwrt/openwrt/pull/16804 Signed-off-by: Robert Marko --- .../ramips/dts/mt7621_d-team_newifi-d2.dts | 20 ++++++++-------- target/linux/ramips/dts/mt7621_humax_e10.dts | 23 +++++++++++-------- .../dts/mt7621_mikrotik_routerboard-7xx.dtsi | 19 ++++++++++----- .../dts/mt7621_zbtlink_zbt-wg1602-v04.dtsi | 19 ++++++++++----- .../ramips/dts/mt7621_zbtlink_zbt-wg1602.dtsi | 19 ++++++++++----- .../ramips/dts/mt7621_zyxel_lte3301-plus.dts | 19 +++++++-------- .../ramips/dts/mt7621_zyxel_lte5398-m904.dts | 19 ++++++++++----- 7 files changed, 86 insertions(+), 52 deletions(-) diff --git a/target/linux/ramips/dts/mt7621_d-team_newifi-d2.dts b/target/linux/ramips/dts/mt7621_d-team_newifi-d2.dts index 9d426fb17d..00ff80e3ca 100644 --- a/target/linux/ramips/dts/mt7621_d-team_newifi-d2.dts +++ b/target/linux/ramips/dts/mt7621_d-team_newifi-d2.dts @@ -80,15 +80,13 @@ }; }; - gpio_export { - compatible = "gpio-export"; - #size-cells = <0>; - - power_usb3 { - gpio-export,name = "power_usb3"; - gpio-export,output = <1>; - gpios = <&gpio 11 GPIO_ACTIVE_HIGH>; - }; + reg_power_usb3: regulator { + compatible = "regulator-fixed"; + regulator-name = "power_usb3"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpios = <&gpio 11 GPIO_ACTIVE_HIGH>; + enable-active-high; }; }; @@ -155,6 +153,10 @@ }; }; +&xhci { + vbus-supply = <®_power_usb3>; +}; + &pcie { status = "okay"; }; diff --git a/target/linux/ramips/dts/mt7621_humax_e10.dts b/target/linux/ramips/dts/mt7621_humax_e10.dts index 39eac32d53..7ba772d5e5 100644 --- a/target/linux/ramips/dts/mt7621_humax_e10.dts +++ b/target/linux/ramips/dts/mt7621_humax_e10.dts @@ -19,16 +19,6 @@ label-mac-device = &gmac1; }; - gpio-export { - compatible = "gpio-export"; - - gpio-usb-power { - gpio-export,name = "power:usb"; - gpio-export,output = <1>; - gpios = <&gpio 8 GPIO_ACTIVE_HIGH>; - }; - }; - leds { compatible = "gpio-leds"; @@ -65,6 +55,15 @@ linux,code = ; }; }; + + reg_power_usb: regulator { + compatible = "regulator-fixed"; + regulator-name = "power:usb"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpios = <&gpio 8 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; }; &spi0 { @@ -131,6 +130,10 @@ }; }; +&xhci { + vbus-supply = <®_power_usb>; +}; + &pcie { status = "okay"; }; diff --git a/target/linux/ramips/dts/mt7621_mikrotik_routerboard-7xx.dtsi b/target/linux/ramips/dts/mt7621_mikrotik_routerboard-7xx.dtsi index cdca47f8b8..4a3de8cfba 100644 --- a/target/linux/ramips/dts/mt7621_mikrotik_routerboard-7xx.dtsi +++ b/target/linux/ramips/dts/mt7621_mikrotik_routerboard-7xx.dtsi @@ -13,13 +13,20 @@ gpio-export,output = <0>; gpios = <&gpio 15 GPIO_ACTIVE_HIGH>; }; - - usb_power { - gpio-export,name = "usb_power"; - gpio-export,output = <1>; - gpios = <&gpio 12 GPIO_ACTIVE_HIGH>; - }; }; + + reg_usb_power: regulator { + compatible = "regulator-fixed"; + regulator-name = "usb_power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpios = <&gpio 12 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; +}; + +&xhci { + vbus-supply = <®_usb_power>; }; &keys { diff --git a/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602-v04.dtsi b/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602-v04.dtsi index c3712fea7b..c70b3330e9 100644 --- a/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602-v04.dtsi +++ b/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602-v04.dtsi @@ -48,6 +48,15 @@ }; }; + reg_power_usb: regulator { + compatible = "regulator-fixed"; + regulator-name = "power_usb"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpios = <&gpio 6 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + watchdog { compatible = "linux,wdt-gpio"; gpios = <&gpio 3 GPIO_ACTIVE_HIGH>; @@ -72,15 +81,13 @@ gpio-export,output = <1>; gpios = <&gpio 7 GPIO_ACTIVE_HIGH>; }; - - ext-usb { - gpio-export,name = "ext-usb"; - gpio-export,output = <1>; - gpios = <&gpio 6 GPIO_ACTIVE_LOW>; - }; }; }; +&xhci { + vbus-supply = <®_power_usb>; +}; + &sdhci { status = "okay"; }; diff --git a/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602.dtsi b/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602.dtsi index dcad7b26d2..3e2a593ae7 100644 --- a/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602.dtsi +++ b/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602.dtsi @@ -47,6 +47,15 @@ }; }; + reg_power_usb: regulator { + compatible = "regulator-fixed"; + regulator-name = "power_usb"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpios = <&gpio 6 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + watchdog { compatible = "linux,wdt-gpio"; gpios = <&gpio 3 GPIO_ACTIVE_HIGH>; @@ -71,15 +80,13 @@ gpio-export,output = <1>; gpios = <&gpio 7 GPIO_ACTIVE_HIGH>; }; - - ext-usb { - gpio-export,name = "ext-usb"; - gpio-export,output = <1>; - gpios = <&gpio 6 GPIO_ACTIVE_LOW>; - }; }; }; +&xhci { + vbus-supply = <®_power_usb>; +}; + &sdhci { status = "okay"; }; diff --git a/target/linux/ramips/dts/mt7621_zyxel_lte3301-plus.dts b/target/linux/ramips/dts/mt7621_zyxel_lte3301-plus.dts index 9eed123157..88894325b5 100644 --- a/target/linux/ramips/dts/mt7621_zyxel_lte3301-plus.dts +++ b/target/linux/ramips/dts/mt7621_zyxel_lte3301-plus.dts @@ -96,17 +96,18 @@ }; + reg_power_usb: regulator { + compatible = "regulator-fixed"; + regulator-name = "power_usb"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpios = <&gpio 7 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; }; -&gpio { - status = "okay"; - - enable_usb_power { - gpio-hog; - line-name = "enable USB power"; - gpios = <7 GPIO_ACTIVE_HIGH>; - output-high; - }; +&xhci { + vbus-supply = <®_power_usb>; }; &nand { diff --git a/target/linux/ramips/dts/mt7621_zyxel_lte5398-m904.dts b/target/linux/ramips/dts/mt7621_zyxel_lte5398-m904.dts index e121077b0a..e6ff5ecf6a 100644 --- a/target/linux/ramips/dts/mt7621_zyxel_lte5398-m904.dts +++ b/target/linux/ramips/dts/mt7621_zyxel_lte5398-m904.dts @@ -92,13 +92,20 @@ gpio-export,output = <0>; gpios = <&gpio 27 GPIO_ACTIVE_LOW>; }; - - usb_power { - gpio-export,name = "usb_power"; - gpio-export,output = <1>; - gpios = <&gpio 0 GPIO_ACTIVE_HIGH>; - }; }; + + reg_usb_power: regulator { + compatible = "regulator-fixed"; + reglator-name = "usb_power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpios = <&gpio 0 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; +}; + +&xhci { + vbus-supply = <®_usb_power>; }; &nand { From 6d2ed484fa2f62e355893f5e1fe3734c88201bfc Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sat, 19 Oct 2024 15:49:42 -0700 Subject: [PATCH 3/7] ath79: gpio-latch-miktorik: use gpiochip_get_data Oversight from devm conversion. No need for a custom static inline function. Signed-off-by: Rosen Penev Link: https://github.com/openwrt/openwrt/pull/16747 Signed-off-by: Robert Marko --- .../ath79/files/drivers/gpio/gpio-latch-mikrotik.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/target/linux/ath79/files/drivers/gpio/gpio-latch-mikrotik.c b/target/linux/ath79/files/drivers/gpio/gpio-latch-mikrotik.c index 6e3f0f9690..4baed52e57 100644 --- a/target/linux/ath79/files/drivers/gpio/gpio-latch-mikrotik.c +++ b/target/linux/ath79/files/drivers/gpio/gpio-latch-mikrotik.c @@ -28,11 +28,6 @@ struct gpio_latch_chip { struct gpio_desc *gpios[GPIO_LATCH_LINES]; }; -static inline struct gpio_latch_chip *to_gpio_latch_chip(struct gpio_chip *gc) -{ - return container_of(gc, struct gpio_latch_chip, gc); -} - static void gpio_latch_lock(struct gpio_latch_chip *glc, bool enable) { mutex_lock(&glc->mutex); @@ -58,7 +53,7 @@ static void gpio_latch_unlock(struct gpio_latch_chip *glc, bool disable) static int gpio_latch_get(struct gpio_chip *gc, unsigned offset) { - struct gpio_latch_chip *glc = to_gpio_latch_chip(gc); + struct gpio_latch_chip *glc = gpiochip_get_data(gc); int ret; gpio_latch_lock(glc, false); @@ -71,7 +66,7 @@ gpio_latch_get(struct gpio_chip *gc, unsigned offset) static void gpio_latch_set(struct gpio_chip *gc, unsigned offset, int value) { - struct gpio_latch_chip *glc = to_gpio_latch_chip(gc); + struct gpio_latch_chip *glc = gpiochip_get_data(gc); bool enable_latch = false; bool disable_latch = false; @@ -88,7 +83,7 @@ gpio_latch_set(struct gpio_chip *gc, unsigned offset, int value) static int gpio_latch_direction_output(struct gpio_chip *gc, unsigned offset, int value) { - struct gpio_latch_chip *glc = to_gpio_latch_chip(gc); + struct gpio_latch_chip *glc = gpiochip_get_data(gc); bool enable_latch = false; bool disable_latch = false; int ret; From e99b5832e801fdf2ec366419797360e09c2348c6 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sat, 19 Oct 2024 15:51:51 -0700 Subject: [PATCH 4/7] ath79: gpio-rb91x-key: use gpiochip_get_data No need for a custom function that does the same thing. Oversight from devm conversion. Signed-off-by: Rosen Penev Link: https://github.com/openwrt/openwrt/pull/16748 Signed-off-by: Robert Marko --- target/linux/ath79/files/drivers/gpio/gpio-rb91x-key.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/target/linux/ath79/files/drivers/gpio/gpio-rb91x-key.c b/target/linux/ath79/files/drivers/gpio/gpio-rb91x-key.c index b2c8e63305..02639cf011 100644 --- a/target/linux/ath79/files/drivers/gpio/gpio-rb91x-key.c +++ b/target/linux/ath79/files/drivers/gpio/gpio-rb91x-key.c @@ -41,14 +41,9 @@ struct gpio_rb91x_key { struct gpio_desc *gpio; }; -static inline struct gpio_rb91x_key *to_gpio_rb91x_key(struct gpio_chip *gc) -{ - return container_of(gc, struct gpio_rb91x_key, gc); -} - static int gpio_rb91x_key_get(struct gpio_chip *gc, unsigned offset) { - struct gpio_rb91x_key *drvdata = to_gpio_rb91x_key(gc); + struct gpio_rb91x_key *drvdata = gpiochip_get_data(gc); struct gpio_desc *gpio = drvdata->gpio; int val, bak_val; @@ -97,7 +92,7 @@ static int gpio_rb91x_key_direction_input(struct gpio_chip *gc, unsigned offset) static void gpio_rb91x_key_set(struct gpio_chip *gc, unsigned offset, int value) { - struct gpio_rb91x_key *drvdata = to_gpio_rb91x_key(gc); + struct gpio_rb91x_key *drvdata = gpiochip_get_data(gc); struct gpio_desc *gpio = drvdata->gpio; mutex_lock(&drvdata->mutex); From d64e1ed4214ebcc845389979be18f3cdc19bc08a Mon Sep 17 00:00:00 2001 From: "Leon M. Busch-George" Date: Sat, 2 Nov 2024 12:28:51 +0100 Subject: [PATCH 5/7] mediatek: YunCore AX835: fix voltage regulator Specifying GPIO_ACTIVE_HIGH on the GPIO for the voltage regulator doesn't suffice. The regulator itself requires enable-active-high to be set. Fixes: #16292 Signed-off-by: Leon M. Busch-George Link: https://github.com/openwrt/openwrt/pull/16839 Signed-off-by: Robert Marko --- target/linux/mediatek/dts/mt7981b-yuncore-ax835.dts | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/mediatek/dts/mt7981b-yuncore-ax835.dts b/target/linux/mediatek/dts/mt7981b-yuncore-ax835.dts index 5f98e6178a..b5de1c34b4 100644 --- a/target/linux/mediatek/dts/mt7981b-yuncore-ax835.dts +++ b/target/linux/mediatek/dts/mt7981b-yuncore-ax835.dts @@ -35,6 +35,7 @@ regulator-name = "led_vbus"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; + enable-active-high; regulator-always-on; gpios = <&pio 5 GPIO_ACTIVE_HIGH>; }; From 7da9d6bfe017bc243ac70b83dde1761dad3d3a02 Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Sun, 3 Nov 2024 09:34:31 +0100 Subject: [PATCH 6/7] mtd: Add backported Winbond fix Upstream stable is slow at picking this up and several systems are regressing. Add the patch locally in OpenWrt. Signed-off-by: Linus Walleij --- ...i-nor-winbond-fix-w25q128-regression.patch | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 target/linux/generic/backport-6.6/409-mtd-spi-nor-winbond-fix-w25q128-regression.patch diff --git a/target/linux/generic/backport-6.6/409-mtd-spi-nor-winbond-fix-w25q128-regression.patch b/target/linux/generic/backport-6.6/409-mtd-spi-nor-winbond-fix-w25q128-regression.patch new file mode 100644 index 0000000000..de79328138 --- /dev/null +++ b/target/linux/generic/backport-6.6/409-mtd-spi-nor-winbond-fix-w25q128-regression.patch @@ -0,0 +1,59 @@ +From 342672bbdf713654316a0ff73c7f2ecf7ea6693d Mon Sep 17 00:00:00 2001 +From: Michael Walle +Date: Fri, 21 Jun 2024 14:09:29 +0200 +Subject: [PATCH] mtd: spi-nor: winbond: fix w25q128 regression + +Upstream commit d35df77707bf5ae1221b5ba1c8a88cf4fcdd4901 + +("mtd: spi-nor: winbond: fix w25q128 regression") +however the code has changed a lot after v6.6 so the patch did +not apply to v6.6 or v6.1 which still has the problem. + +This patch fixes the issue in the way of the old API and has +been tested on hardware. Please apply it for v6.1 and v6.6. + +Commit 83e824a4a595 ("mtd: spi-nor: Correct flags for Winbond w25q128") +removed the flags for non-SFDP devices. It was assumed that it wasn't in +use anymore. This wasn't true. Add the no_sfdp_flags as well as the size +again. + +We add the additional flags for dual and quad read because they have +been reported to work properly by Hartmut using both older and newer +versions of this flash, the similar flashes with 64Mbit and 256Mbit +already have these flags and because it will (luckily) trigger our +legacy SFDP parsing, so newer versions with SFDP support will still get +the parameters from the SFDP tables. + +Reported-by: Hartmut Birr +Closes: https://lore.kernel.org/r/CALxbwRo_-9CaJmt7r7ELgu+vOcgk=xZcGHobnKf=oT2=u4d4aA@mail.gmail.com/ +Fixes: 83e824a4a595 ("mtd: spi-nor: Correct flags for Winbond w25q128") +Reviewed-by: Linus Walleij +Signed-off-by: Michael Walle +Acked-by: Tudor Ambarus +Reviewed-by: Esben Haabendal +Reviewed-by: Pratyush Yadav +Signed-off-by: Pratyush Yadav +Link: https://lore.kernel.org/r/20240621120929.2670185-1-mwalle@kernel.org +[Backported to v6.6 - vastly different due to upstream changes] +Reviewed-by: Tudor Ambarus +Signed-off-by: Linus Walleij +--- + drivers/mtd/spi-nor/winbond.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +--- a/drivers/mtd/spi-nor/winbond.c ++++ b/drivers/mtd/spi-nor/winbond.c +@@ -120,9 +120,10 @@ static const struct flash_info winbond_n + NO_SFDP_FLAGS(SECT_4K) }, + { "w25q80bl", INFO(0xef4014, 0, 64 * 1024, 16) + NO_SFDP_FLAGS(SECT_4K) }, +- { "w25q128", INFO(0xef4018, 0, 0, 0) +- PARSE_SFDP +- FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) }, ++ { "w25q128", INFO(0xef4018, 0, 64 * 1024, 256) ++ FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) ++ NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ | ++ SPI_NOR_QUAD_READ) }, + { "w25q256", INFO(0xef4019, 0, 64 * 1024, 512) + NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) + .fixups = &w25q256_fixups }, From 37784c48e93c663dafc99454c24bebf4e258556f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C5=A0tetiar?= Date: Mon, 4 Nov 2024 07:33:37 +0000 Subject: [PATCH 7/7] openwrt-keyring: fix missing 24.10 usign key by installing it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @KA2107 reported that opkg is not able to verify the artifact signatures produced by buildbot using the usign 24.10 release keys. So lets fix it by actually adding the 24.10 usign key with d310c6f2833e97f7 fingerprint into the openwrt-keyring package. Fixes: #16850 Reported-by: @KA2107 Fixes: a535cfc09e1c ("openwrt-keyring: add OpenWrt 24.10 release build usign key") Signed-off-by: Petr Štetiar --- package/system/openwrt-keyring/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package/system/openwrt-keyring/Makefile b/package/system/openwrt-keyring/Makefile index 029463817b..e499fc0beb 100644 --- a/package/system/openwrt-keyring/Makefile +++ b/package/system/openwrt-keyring/Makefile @@ -3,7 +3,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=openwrt-keyring -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/keyring.git @@ -40,6 +40,8 @@ define Package/openwrt-keyring/install $(INSTALL_DIR) $(1)/etc/opkg/keys/ # Public usign key for unattended snapshot builds $(INSTALL_DATA) $(PKG_BUILD_DIR)/usign/b5043e70f9a75cde $(1)/etc/opkg/keys/ + # Public usign key for 24.10 release builds + $(INSTALL_DATA) $(PKG_BUILD_DIR)/usign/d310c6f2833e97f7 $(1)/etc/opkg/keys/ endef endif