diff --git a/package/boot/at91bootstrap/Makefile b/package/boot/at91bootstrap/Makefile index 1b145c8a8b..456f9fa5ff 100644 --- a/package/boot/at91bootstrap/Makefile +++ b/package/boot/at91bootstrap/Makefile @@ -9,9 +9,9 @@ include $(TOPDIR)/rules.mk PKG_NAME:=at91bootstrap -PKG_VERSION:=v4.0.3 -PKG_MIRROR_HASH:=9c1d42337294b549e6c229ae4c9996efd21e00ae5f968bd780d352e054e24cb7 -PKG_SOURCE_VERSION:=1d9e673698d9db4a4f2301559f481274de2e75ae +PKG_VERSION:=v4.0.10 +PKG_SOURCE_VERSION:=c123c68d1f5b13a55a8e164b03be866491ce3049 +PKG_MIRROR_HASH:=0c2d6a8a81a179c29227ad2f880b403f86095d3671f176ff1d2a21ba4e09c858 BINARIES_DIR:=build/binaries PKG_CPE_ID:=cpe:/a:linux4sam:at91bootstrap diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index 16a0a49772..88c99da070 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -8,7 +8,7 @@ PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware/qca-wireless.git PKG_SOURCE_DATE:=2025-02-17 PKG_SOURCE_VERSION:=dd3577ec9f2d9d3ef5e35602d3fe731cb259ff39 -PKG_MIRROR_HASH:=72e749060f53cc1dbe34c56dccded7fc13224701e241c57cff3452cb050f9ce9 +PKG_MIRROR_HASH:=0da921982b33a831dd19e570974a22ad2b1f3324397b1203a8a38d7d044b073a PKG_FLAGS:=nonshared include $(INCLUDE_DIR)/package.mk diff --git a/package/firmware/linux-firmware/intel.mk b/package/firmware/linux-firmware/intel.mk index eb5ac29159..32e1670149 100644 --- a/package/firmware/linux-firmware/intel.mk +++ b/package/firmware/linux-firmware/intel.mk @@ -9,6 +9,15 @@ define Package/ibt-firmware/install endef $(eval $(call BuildPackage,ibt-firmware)) +Package/ice-firmware = $(call Package/firmware-default,Intel ICE firmware) +define Package/ice-firmware/install + $(INSTALL_DIR) $(1)/lib/firmware/intel/ice/ddp + $(CP) \ + $(PKG_BUILD_DIR)/intel/ice/ddp/*.pkg \ + $(1)/lib/firmware/intel/ice/ddp/ice.pkg +endef +$(eval $(call BuildPackage,ice-firmware)) + Package/iwl3945-firmware = $(call Package/firmware-default,Intel IWL3945 firmware) define Package/iwl3945-firmware/install $(INSTALL_DIR) $(1)/lib/firmware diff --git a/package/kernel/linux/modules/netdevices.mk b/package/kernel/linux/modules/netdevices.mk index 5ab36f2290..cddfef25d7 100644 --- a/package/kernel/linux/modules/netdevices.mk +++ b/package/kernel/linux/modules/netdevices.mk @@ -1200,6 +1200,24 @@ endef $(eval $(call KernelPackage,i40e)) +define KernelPackage/ice + SUBMENU:=$(NETWORK_DEVICES_MENU) + TITLE:=Intel(R) Ethernet Controller E810 Series support + DEPENDS:=@PCI_SUPPORT +kmod-ptp + KCONFIG:=CONFIG_ICE \ + CONFIG_ICE_HWTS=n \ + CONFIG_ICE_SWITCHDEV=y + FILES:=$(LINUX_DIR)/drivers/net/ethernet/intel/ice/ice.ko + AUTOLOAD:=$(call AutoProbe,ice) +endef + +define KernelPackage/ice/description + Kernel modules for Intel(R) Ethernet Controller E810 Series +endef + +$(eval $(call KernelPackage,ice)) + + define KernelPackage/iavf SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Intel(R) Ethernet Adaptive Virtual Function support diff --git a/package/libs/libnl-tiny/Makefile b/package/libs/libnl-tiny/Makefile index c211288f8e..d081001693 100644 --- a/package/libs/libnl-tiny/Makefile +++ b/package/libs/libnl-tiny/Makefile @@ -12,9 +12,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/libnl-tiny.git -PKG_SOURCE_DATE:=2023-12-05 -PKG_SOURCE_VERSION:=965c4bf49658342ced0bd6e7cb069571b4a1ddff -PKG_MIRROR_HASH:=4b56499e71f5f10b123e1c7ee13dbfcd970de560bff8d16ab39dc25c9ff743cb +PKG_SOURCE_DATE:=2025-03-19 +PKG_SOURCE_VERSION:=c0df580adbd4d555ecc1962dbe88e91d75b67a4e +PKG_MIRROR_HASH:=1064a27824d99a93cbf8dbc808caf2cb277f1825b378ec6076d2ecfb8866a81f CMAKE_INSTALL:=1 PKG_LICENSE:=LGPL-2.1 diff --git a/target/linux/ath79/dts/ar7240_openmesh_om2p-v1.dts b/target/linux/ath79/dts/ar7240_openmesh_om2p-v1.dts index 673e9b740b..28b764069e 100644 --- a/target/linux/ath79/dts/ar7240_openmesh_om2p-v1.dts +++ b/target/linux/ath79/dts/ar7240_openmesh_om2p-v1.dts @@ -169,7 +169,7 @@ status = "okay"; wifi@0,0 { - compatible = "pci168c,002a"; + compatible = "pci168c,002b"; reg = <0x0000 0 0 0 0>; nvmem-cells = <&calibration_art_1000>; nvmem-cell-names = "calibration"; diff --git a/target/linux/ath79/dts/ar9330.dtsi b/target/linux/ath79/dts/ar9330.dtsi index e13e3fd5aa..e4d78b9251 100644 --- a/target/linux/ath79/dts/ar9330.dtsi +++ b/target/linux/ath79/dts/ar9330.dtsi @@ -121,7 +121,7 @@ interrupts = <3>; resets = <&rst 5>; - phy-names = "usb"; + phy-names = "usb-phy"; phys = <&usb_phy>; status = "disabled"; diff --git a/target/linux/ath79/dts/ar9344_tplink_tl-wdr4300.dtsi b/target/linux/ath79/dts/ar9344_tplink_tl-wdr4300.dtsi index 7aa1989290..8411a9b061 100644 --- a/target/linux/ath79/dts/ar9344_tplink_tl-wdr4300.dtsi +++ b/target/linux/ath79/dts/ar9344_tplink_tl-wdr4300.dtsi @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT #include "ar9344_tplink_tl-wdrxxxx.dtsi" +#include / { aliases { @@ -97,9 +98,9 @@ &mdio0 { status = "okay"; - phy0: ethernet-phy@0 { - reg = <0>; - phy-mode = "rgmii"; + switch@1f { + compatible = "qca,ar8327"; + reg = <0x1f>; qca,ar8327-initvals = < 0x04 0x07600000 /* PORT0 PAD MODE CTRL */ @@ -110,6 +111,47 @@ 0x5c 0x0030c300 /* LED_CTRL3 */ 0x7c 0x0000007e /* PORT0_STATUS */ >; + + leds { + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_WAN; + qca,led-mode = <0>; + }; + + led@3 { + reg = <3>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + qca,led-mode = <0>; + }; + + led@6 { + reg = <6>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <2>; + qca,led-mode = <0>; + }; + + led@9 { + reg = <9>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <3>; + qca,led-mode = <0>; + }; + + led@12 { + reg = <12>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <4>; + qca,led-mode = <0>; + }; + }; }; }; @@ -123,5 +165,9 @@ nvmem-cell-names = "mac-address"; phy-mode = "rgmii"; - phy-handle = <&phy0>; + + fixed-link { + speed = <1000>; + full-duplex; + }; }; diff --git a/target/linux/ath79/dts/qca9558_tplink_archer-c.dtsi b/target/linux/ath79/dts/qca9558_tplink_archer-c.dtsi index 221582e66d..7c84f3e21d 100644 --- a/target/linux/ath79/dts/qca9558_tplink_archer-c.dtsi +++ b/target/linux/ath79/dts/qca9558_tplink_archer-c.dtsi @@ -4,6 +4,7 @@ #include #include +#include / { aliases { @@ -115,8 +116,9 @@ &mdio0 { status = "okay"; - phy0: ethernet-phy@0 { - reg = <0>; + switch@1f { + compatible = "qca,ar8327"; + reg = <0x1f>; qca,ar8327-initvals = < 0x04 0x00080080 /* PORT0 PAD MODE CTRL */ @@ -128,15 +130,60 @@ 0x7c 0x0000007e /* PORT0_STATUS */ 0x94 0x0000007e /* PORT6 STATUS */ >; + + leds { + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_WAN; + qca,led-mode = <0>; + }; + + led@3 { + reg = <3>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + qca,led-mode = <0>; + }; + + led@6 { + reg = <6>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <2>; + qca,led-mode = <0>; + }; + + led@9 { + reg = <9>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <3>; + qca,led-mode = <0>; + }; + + led@12 { + reg = <12>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <4>; + qca,led-mode = <0>; + }; + }; }; }; ð0 { status = "okay"; - phy-handle = <&phy0>; pll-data = <0x56000000 0x00000101 0x00001616>; + fixed-link { + speed = <1000>; + full-duplex; + }; + gmac-config { device = <&gmac>; rgmii-enabled = <1>; diff --git a/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd.dtsi b/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd.dtsi index 49af23bf02..bf7895775d 100644 --- a/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd.dtsi +++ b/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd.dtsi @@ -143,8 +143,10 @@ &mdio0 { status = "okay"; - phy0: ethernet-phy@0 { - reg = <0>; + switch@1f { + compatible = "qca,ar8327"; + reg = <0x1f>; + qca,ar8327-initvals = < 0x04 0x00080080 /* PORT0 PAD MODE CTRL */ 0x0c 0x07600000 /* PORT6 PAD MODE CTRL */ @@ -156,6 +158,47 @@ 0x7c 0x0000007e /* PORT0_STATUS */ 0x94 0x0000007e /* PORT6 STATUS */ >; + + leds { + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <4>; + qca,led-mode = <0>; + }; + + led@3 { + reg = <3>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <3>; + qca,led-mode = <0>; + }; + + led@6 { + reg = <6>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <2>; + qca,led-mode = <0>; + }; + + led@9 { + reg = <9>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + qca,led-mode = <0>; + }; + + led@12 { + reg = <12>; + color = ; + function = LED_FUNCTION_WAN; + qca,led-mode = <0>; + }; + }; }; }; @@ -166,7 +209,11 @@ nvmem-cells = <&macaddr_uboot_1fc00 1>; nvmem-cell-names = "mac-address"; - phy-handle = <&phy0>; + + fixed-link { + speed = <1000>; + full-duplex; + }; }; ð1 { diff --git a/target/linux/generic/backport-6.6/798-v6.10-net-phy-air_en8811h-Add-the-Airoha-EN8811H-PHY-drive.patch b/target/linux/generic/backport-6.6/798-v6.10-01-net-phy-air_en8811h-Add-the-Airoha-EN8811H-PHY-drive.patch similarity index 100% rename from target/linux/generic/backport-6.6/798-v6.10-net-phy-air_en8811h-Add-the-Airoha-EN8811H-PHY-drive.patch rename to target/linux/generic/backport-6.6/798-v6.10-01-net-phy-air_en8811h-Add-the-Airoha-EN8811H-PHY-drive.patch diff --git a/target/linux/generic/backport-6.6/799-v6.10-net-phy-air_en8811h-fix-some-error-codes.patch b/target/linux/generic/backport-6.6/798-v6.10-02-net-phy-air_en8811h-fix-some-error-codes.patch similarity index 100% rename from target/linux/generic/backport-6.6/799-v6.10-net-phy-air_en8811h-fix-some-error-codes.patch rename to target/linux/generic/backport-6.6/798-v6.10-02-net-phy-air_en8811h-fix-some-error-codes.patch diff --git a/target/linux/generic/pending-6.6/742-net-phy-air_en8811h-reset-netdev-rules-when-LED-is-s.patch b/target/linux/generic/backport-6.6/798-v6.10-03-net-phy-air_en8811h-reset-netdev-rules-when-LED-is-s.patch similarity index 100% rename from target/linux/generic/pending-6.6/742-net-phy-air_en8811h-reset-netdev-rules-when-LED-is-s.patch rename to target/linux/generic/backport-6.6/798-v6.10-03-net-phy-air_en8811h-reset-netdev-rules-when-LED-is-s.patch diff --git a/target/linux/generic/files/drivers/net/phy/ar8327.c b/target/linux/generic/files/drivers/net/phy/ar8327.c index 3313149559..cf9c2dc3c1 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8327.c +++ b/target/linux/generic/files/drivers/net/phy/ar8327.c @@ -326,8 +326,7 @@ ar8327_led_set_brightness(struct led_classdev *led_cdev, u8 pattern; bool active; - active = (brightness != LED_OFF); - active ^= aled->active_low; + active = (brightness != LED_OFF) != aled->active_low; pattern = (active) ? AR8327_LED_PATTERN_ON : AR8327_LED_PATTERN_OFF; @@ -393,8 +392,11 @@ static int ar8327_led_register(struct ar8327_led *aled) { int ret; + struct led_init_data init_data = { + .fwnode = aled->fwnode + }; - ret = led_classdev_register(NULL, &aled->cdev); + ret = led_classdev_register_ext(NULL, &aled->cdev, &init_data); if (ret < 0) return ret; @@ -448,6 +450,7 @@ ar8327_led_create(struct ar8xxx_priv *priv, aled->led_num = led_info->led_num; aled->active_low = led_info->active_low; aled->mode = led_info->mode; + aled->fwnode = led_info->fwnode; if (aled->mode == AR8327_LED_MODE_HW) aled->enable_hw_mode = true; @@ -501,7 +504,8 @@ ar8327_leds_init(struct ar8xxx_priv *priv) if (aled->enable_hw_mode) aled->pattern = AR8327_LED_PATTERN_RULE; else - aled->pattern = AR8327_LED_PATTERN_OFF; + aled->pattern = aled->active_low ? + AR8327_LED_PATTERN_ON : AR8327_LED_PATTERN_OFF; ar8327_set_led_pattern(priv, aled->led_num, aled->pattern); } @@ -616,6 +620,7 @@ ar8327_hw_config_of(struct ar8xxx_priv *priv, struct device_node *np) const __be32 *paddr; int len; int i; + struct device_node *leds, *child; paddr = of_get_property(np, "qca,ar8327-initvals", &len); if (!paddr || len < (2 * sizeof(*paddr))) @@ -643,6 +648,39 @@ ar8327_hw_config_of(struct ar8xxx_priv *priv, struct device_node *np) } } + leds = of_get_child_by_name(np, "leds"); + if (!leds) + return 0; + + data->leds = kvcalloc(of_get_child_count(leds), sizeof(void *), + GFP_KERNEL); + if (!data->leds) + return -ENOMEM; + + for_each_available_child_of_node(leds, child) { + u32 reg = 0, mode = 0; + struct ar8327_led_info info; + int ret; + + ret = of_property_read_u32(child, "reg", ®); + if (ret) { + pr_err("ar8327: LED %s is missing reg node\n", child->name); + continue; + } + + of_property_read_u32(child, "qca,led-mode", &mode); + + info = (struct ar8327_led_info) { + .name = of_get_property(child, "label", NULL) ? : child->name, + .fwnode = of_fwnode_handle(child), + .active_low = of_property_read_bool(child, "active-low"), + .led_num = (enum ar8327_led_num) reg, + .mode = (enum ar8327_led_mode) mode + }; + ar8327_led_create(priv, &info); + } + + of_node_put(leds); return 0; } #else diff --git a/target/linux/generic/files/drivers/net/phy/ar8327.h b/target/linux/generic/files/drivers/net/phy/ar8327.h index 088b288618..53a82d1f76 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8327.h +++ b/target/linux/generic/files/drivers/net/phy/ar8327.h @@ -317,6 +317,7 @@ struct ar8327_led { struct work_struct led_work; bool enable_hw_mode; enum ar8327_led_pattern pattern; + struct fwnode_handle *fwnode; }; struct ar8327_data { diff --git a/target/linux/generic/files/include/linux/ar8216_platform.h b/target/linux/generic/files/include/linux/ar8216_platform.h index 24bc442a26..fff05ffb5c 100644 --- a/target/linux/generic/files/include/linux/ar8216_platform.h +++ b/target/linux/generic/files/include/linux/ar8216_platform.h @@ -106,6 +106,7 @@ struct ar8327_led_info { bool active_low; enum ar8327_led_num led_num; enum ar8327_led_mode mode; + struct fwnode_handle *fwnode; }; #define AR8327_LED_INFO(_led, _mode, _name) { \ diff --git a/target/linux/ramips/dts/mt7620a_hongdian_h8922-v30.dts b/target/linux/ramips/dts/mt7620a_hongdian_h8922-v30.dts index d983f5f854..64c19a6012 100644 --- a/target/linux/ramips/dts/mt7620a_hongdian_h8922-v30.dts +++ b/target/linux/ramips/dts/mt7620a_hongdian_h8922-v30.dts @@ -145,7 +145,7 @@ &state_default { gpio { - groups = "wled", "rgmii1", "rgmii2"; + groups = "uartf", "wled", "rgmii1", "rgmii2"; function = "gpio"; }; }; diff --git a/target/linux/ramips/dts/mt7621_asus_4g-ax56.dts b/target/linux/ramips/dts/mt7621_asus_4g-ax56.dts index 159feeb9dc..1d20e1c680 100755 --- a/target/linux/ramips/dts/mt7621_asus_4g-ax56.dts +++ b/target/linux/ramips/dts/mt7621_asus_4g-ax56.dts @@ -31,6 +31,71 @@ function = LED_FUNCTION_POWER; gpios = <&gpio 14 GPIO_ACTIVE_HIGH>; }; + + wlan2g { + color = ; + function = LED_FUNCTION_WLAN_2GHZ; + gpios = <&gpio 13 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "phy0tpt"; + }; + + wlan5g { + color = ; + function = LED_FUNCTION_WLAN_5GHZ; + gpios = <&gpio 16 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "phy1tpt"; + }; + + wan_white { + color = ; + function = LED_FUNCTION_WAN; + gpios = <&gpio 15 GPIO_ACTIVE_HIGH>; + }; + + wan_red { + color = ; + function = LED_FUNCTION_WAN; + gpios = <&gpio 5 GPIO_ACTIVE_HIGH>; + }; + + modem_red { + color = ; + function = LED_FUNCTION_MOBILE; + gpios = <&gpio 0 GPIO_ACTIVE_LOW>; + }; + + modem_yellow { + color = ; + function = LED_FUNCTION_MOBILE; + gpios = <&gpio 3 GPIO_ACTIVE_HIGH>; + }; + + modem_blue { + color = ; + function = LED_FUNCTION_MOBILE; + gpios = <&gpio 7 GPIO_ACTIVE_HIGH>; + }; + + modem_white { + color = ; + function = LED_FUNCTION_MOBILE; + gpios = <&gpio 10 GPIO_ACTIVE_HIGH>; + }; + + rssi_1 { + label = "white:rssi-1"; + gpios = <&gpio 17 GPIO_ACTIVE_HIGH>; + }; + + rssi_2 { + label = "white:rssi-2"; + gpios = <&gpio 11 GPIO_ACTIVE_HIGH>; + }; + + rssi_3 { + label = "white:rssi-3"; + gpios = <&gpio 9 GPIO_ACTIVE_HIGH>; + }; }; keys { @@ -48,6 +113,22 @@ linux,code = ; }; }; + + gpio-export { + compatible = "gpio-export"; + + modem_reboot { + gpio-export,name = "reboot:modem"; + gpio-export,output = <1>; + gpios = <&gpio 12 GPIO_ACTIVE_HIGH>; + }; + + modem_reset { + gpio-export,name = "reset:modem"; + gpio-export,output = <1>; + gpios = <&gpio 18 GPIO_ACTIVE_LOW>; + }; + }; }; &nand {