diff --git a/include/kernel-6.6 b/include/kernel-6.6 index 1f0bd75a08..485ec8eef5 100644 --- a/include/kernel-6.6 +++ b/include/kernel-6.6 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.6 = .50 -LINUX_KERNEL_HASH-6.6.50 = c065e36daf28210060c91a37ef3e92ac5814784e634577e04e406297ead2e86e +LINUX_VERSION-6.6 = .51 +LINUX_KERNEL_HASH-6.6.51 = 1c0c9a14650879c4913efdbac428ba31a540c3d987155ddf34d33e11eca008b3 diff --git a/target/linux/apm821xx/base-files/etc/board.d/01_leds b/target/linux/apm821xx/base-files/etc/board.d/01_leds index c384d24a30..f83888deeb 100644 --- a/target/linux/apm821xx/base-files/etc/board.d/01_leds +++ b/target/linux/apm821xx/base-files/etc/board.d/01_leds @@ -14,14 +14,6 @@ meraki,mr24) ucidef_set_led_wlan "wlan2g_0" "WIFI 2.4GHz-0" "green:wlan-3" "phy0radio" ;; -meraki,mx60) - ucidef_set_led_switch "wan" "WAN" "green:wan" "switch0" "0x20" - ucidef_set_led_switch "lan1" "LAN1" "green:lan-0" "switch0" "0x10" - ucidef_set_led_switch "lan2" "LAN2" "green:lan-1" "switch0" "0x08" - ucidef_set_led_switch "lan3" "LAN3" "green:lan-2" "switch0" "0x04" - ucidef_set_led_switch "lan4" "LAN4" "green:lan-3" "switch0" "0x02" - ;; - netgear,wndap620) ucidef_set_led_switch "lan_act" "LAN (Activity)" "green:activity" "switch0" "0x04" "0x0f" "rx tx" ucidef_set_led_switch "lan_100" "LAN 100Mbps" "amber:lan" "switch0" "0x04" "0x04" "link" @@ -39,8 +31,8 @@ netgear,wndap660) ;; netgear,wndr4700) - ucidef_set_led_switch "wan_green" "WAN (green)" "green:wan" "switch0" "0x20" - ucidef_set_led_netdev "wan_yellow" "WAN (yellow)" "yellow:wan" "eth0.2" "tx rx" + ucidef_set_led_netdev "wan_green" "WAN (green)" "green:wan" "wan" "link" + ucidef_set_led_netdev "wan_yellow" "WAN (yellow)" "yellow:wan" "wan" "tx rx" ;; esac diff --git a/target/linux/apm821xx/base-files/etc/board.d/02_network b/target/linux/apm821xx/base-files/etc/board.d/02_network index 756ea348b4..dfcf4be8b9 100644 --- a/target/linux/apm821xx/base-files/etc/board.d/02_network +++ b/target/linux/apm821xx/base-files/etc/board.d/02_network @@ -20,8 +20,7 @@ netgear,wndap660) ;; meraki,mx60|\ netgear,wndr4700) - ucidef_add_switch "switch0" \ - "0@eth0" "4:lan" "3:lan" "2:lan" "1:lan" "5:wan" + ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan" ;; *) diff --git a/target/linux/apm821xx/base-files/etc/uci-defaults/05_fix-compat-version b/target/linux/apm821xx/base-files/etc/uci-defaults/05_fix-compat-version index d34b4051be..00d3954e5f 100644 --- a/target/linux/apm821xx/base-files/etc/uci-defaults/05_fix-compat-version +++ b/target/linux/apm821xx/base-files/etc/uci-defaults/05_fix-compat-version @@ -5,7 +5,7 @@ meraki,mx60|\ netgear,wndap620|\ netgear,wndap660|\ netgear,wndr4700) - uci set system.@system[0].compat_version="2.0" + uci set system.@system[0].compat_version="3.0" uci commit system ;; esac diff --git a/target/linux/apm821xx/base-files/lib/preinit/05_set_iface_mac_apm821xx b/target/linux/apm821xx/base-files/lib/preinit/05_set_iface_mac_apm821xx deleted file mode 100644 index 5f92c01931..0000000000 --- a/target/linux/apm821xx/base-files/lib/preinit/05_set_iface_mac_apm821xx +++ /dev/null @@ -1,13 +0,0 @@ -preinit_set_mac_address() { - . /lib/functions.sh - - case $(board_name) in - meraki,mr24|\ - meraki,mx60) - mac_lan=$(mtd_get_mac_binary_ubi board-config 0x66) - [ -n "$mac_lan" ] && ip link set eth0 address "$mac_lan" - ;; - esac -} - -boot_hook_add preinit_main preinit_set_mac_address diff --git a/target/linux/apm821xx/dts/meraki-mr24.dts b/target/linux/apm821xx/dts/meraki-mr24.dts index a49a4de13f..24ae3dd13f 100644 --- a/target/linux/apm821xx/dts/meraki-mr24.dts +++ b/target/linux/apm821xx/dts/meraki-mr24.dts @@ -86,8 +86,25 @@ }; partition@180000 { + compatible = "linux,ubi"; label = "ubi"; reg = <0x00180000 0x01e80000>; + + volumes { + ubi-volume-board-config { + volume = "board-config"; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_board_66: macaddr@66 { + reg = <0x66 0x6>; + }; + }; + }; + }; }; }; }; @@ -110,6 +127,9 @@ &EMAC0 { status = "okay"; + nvmem-cells = <&macaddr_board_66>; + nvmem-cell-names = "mac-address"; + phy-mode = "rgmii-id"; phy-map = <0x2>; phy-address = <0x1>; diff --git a/target/linux/apm821xx/dts/meraki-mx60.dts b/target/linux/apm821xx/dts/meraki-mx60.dts index d9568d9263..10ced9fc09 100644 --- a/target/linux/apm821xx/dts/meraki-mx60.dts +++ b/target/linux/apm821xx/dts/meraki-mx60.dts @@ -71,8 +71,27 @@ }; partition@240000 { + compatible = "linux,ubi"; label = "ubi"; reg = <0x00240000 0x3fdc0000>; + + volumes { + ubi-volume-board-config { + volume = "board-config"; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_board_66: macaddr@66 { + compatible = "mac-base"; + reg = <0x66 0x6>; + #nvmem-cell-cells = <1>; + }; + }; + }; + }; }; }; }; @@ -92,23 +111,246 @@ &EMAC0 { status = "okay"; - phy-handle = <&phy0>; + + nvmem-cells = <&macaddr_board_66 0>; + nvmem-cell-names = "mac-address"; + + fixed-link { + speed = <1000>; + full-duplex; + }; mdio { #address-cells = <1>; #size-cells = <0>; - phy0: ethernet-phy@0 { + + phy_port1: phy@0 { compatible = "ethernet-phy-id004d.d034"; reg = <0>; - qca,mib-poll-interval = <500>; + }; - qca,ar8327-initvals = < - 0x0010 0x40000000 - 0x0624 0x007f7f7f - 0x0004 0x07a00000 /* PAD0_MODE */ - 0x000c 0x01000000 /* PAD6_MODE */ - 0x007c 0x0000007e /* PORT0_STATUS */ - >; + phy_port2: phy@1 { + compatible = "ethernet-phy-id004d.d034"; + reg = <1>; + }; + + phy_port3: phy@2 { + compatible = "ethernet-phy-id004d.d034"; + reg = <2>; + }; + + phy_port4: phy@3 { + compatible = "ethernet-phy-id004d.d034"; + reg = <3>; + }; + + phy_port5: phy@4 { + compatible = "ethernet-phy-id004d.d034"; + reg = <4>; + }; + + switch0@10 { + compatible = "qca,qca8327"; + reg = <0x10>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + ethernet = <&EMAC0>; + phy-mode = "rgmii-id"; + tx-internal-delay-ps = <2000>; + + fixed-link { + speed = <1000>; + full-duplex; + }; + }; + + port@1 { + reg = <1>; + label = "lan4"; + phy-mode = "internal"; + phy-handle = <&phy_port1>; + + leds { + #address-cells = <1>; + #size-cells = <0>; + + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <0>; + default-state = "keep"; + }; + + led@1 { + reg = <1>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + default-state = "keep"; + }; + + led@2 { + reg = <2>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <2>; + default-state = "keep"; + }; + }; + }; + + port@2 { + reg = <2>; + label = "lan3"; + phy-mode = "internal"; + phy-handle = <&phy_port2>; + + leds { + #address-cells = <1>; + #size-cells = <0>; + + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <0>; + default-state = "keep"; + }; + + led@1 { + reg = <1>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + default-state = "keep"; + }; + + led@2 { + reg = <2>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <2>; + default-state = "keep"; + }; + }; + }; + + port@3 { + reg = <3>; + label = "lan2"; + phy-mode = "internal"; + phy-handle = <&phy_port3>; + + leds { + #address-cells = <1>; + #size-cells = <0>; + + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <0>; + default-state = "keep"; + }; + + led@1 { + reg = <1>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + default-state = "keep"; + }; + + led@2 { + reg = <2>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <2>; + default-state = "keep"; + }; + }; + }; + + port@4 { + reg = <4>; + label = "lan1"; + phy-mode = "internal"; + phy-handle = <&phy_port4>; + + leds { + #address-cells = <1>; + #size-cells = <0>; + + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <0>; + default-state = "keep"; + }; + + led@1 { + reg = <1>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + default-state = "keep"; + }; + + led@2 { + reg = <2>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <2>; + default-state = "keep"; + }; + }; + }; + + port@5 { + reg = <5>; + label = "wan"; + phy-mode = "internal"; + phy-handle = <&phy_port5>; + nvmem-cells = <&macaddr_board_66 1>; + nvmem-cell-names = "mac-address"; + + leds { + #address-cells = <1>; + #size-cells = <0>; + + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_WAN; + function-enumerator = <0>; + default-state = "keep"; + }; + + led@1 { + reg = <1>; + color = ; + function = LED_FUNCTION_WAN; + function-enumerator = <1>; + default-state = "keep"; + }; + + led@2 { + reg = <2>; + color = ; + function = LED_FUNCTION_WAN; + function-enumerator = <2>; + default-state = "keep"; + }; + }; + }; + }; }; }; }; diff --git a/target/linux/apm821xx/dts/netgear-wndr4700.dts b/target/linux/apm821xx/dts/netgear-wndr4700.dts index 851a3192b3..4ef05937d3 100644 --- a/target/linux/apm821xx/dts/netgear-wndr4700.dts +++ b/target/linux/apm821xx/dts/netgear-wndr4700.dts @@ -350,24 +350,93 @@ &EMAC0 { status = "okay"; - phy-handle = <&phy0>; fifo-entry-size = <10>; + fixed-link { + speed = <1000>; + full-duplex; + }; + mdio { #address-cells = <1>; #size-cells = <0>; - phy0: ethernet-phy@0 { - device_type = "ethernet-phy"; - reg = <0>; - qca,mib-poll-interval = <500>; - qca,ar8327-initvals = < - 0x0010 0x40000000 - 0x0624 0x007f7f7f - 0x0004 0x07a00000 /* PAD0_MODE */ - 0x000c 0x01000000 /* PAD6_MODE */ - 0x007c 0x0000007e /* PORT0_STATUS */ - >; + phy_port1: phy@0 { + reg = <0>; + }; + + phy_port2: phy@1 { + reg = <1>; + }; + + phy_port3: phy@2 { + reg = <2>; + }; + + phy_port4: phy@3 { + reg = <3>; + }; + + phy_port5: phy@4 { + reg = <4>; + }; + + switch0@10 { + compatible = "qca,qca8327"; + reg = <0x10>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + label = "cpu"; + ethernet = <&EMAC0>; + phy-mode = "rgmii-id"; + tx-internal-delay-ps = <2000>; + + fixed-link { + speed = <1000>; + full-duplex; + }; + }; + + port@1 { + reg = <1>; + label = "lan4"; + phy-mode = "internal"; + phy-handle = <&phy_port1>; + }; + + port@2 { + reg = <2>; + label = "lan3"; + phy-mode = "internal"; + phy-handle = <&phy_port2>; + }; + + port@3 { + reg = <3>; + label = "lan2"; + phy-mode = "internal"; + phy-handle = <&phy_port3>; + }; + + port@4 { + reg = <4>; + label = "lan1"; + phy-mode = "internal"; + phy-handle = <&phy_port4>; + }; + + port@5 { + reg = <5>; + label = "wan"; + phy-mode = "internal"; + phy-handle = <&phy_port5>; + }; + }; }; }; }; diff --git a/target/linux/apm821xx/image/nand.mk b/target/linux/apm821xx/image/nand.mk index 69eb386126..92bdaa87d0 100644 --- a/target/linux/apm821xx/image/nand.mk +++ b/target/linux/apm821xx/image/nand.mk @@ -50,8 +50,9 @@ define Device/meraki_mx60 KERNEL := kernel-bin | libdeflate-gzip | MuImage-initramfs gzip IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata UBINIZE_OPTS := -E 5 - DEVICE_COMPAT_VERSION := 2.0 + DEVICE_COMPAT_VERSION := 3.0 DEVICE_COMPAT_MESSAGE := uboot's bootcmd has to be updated to support standard multi-image uImages. \ + Network swconfig configuration cannot be upgraded to DSA. \ Upgrade via sysupgrade mechanism is not possible. endef TARGET_DEVICES += meraki_mx60 @@ -88,6 +89,9 @@ endef TARGET_DEVICES += netgear_wndap660 define Device/netgear_wndr4700 + DEVICE_COMPAT_VERSION := 3.0 + DEVICE_COMPAT_MESSAGE := Network swconfig configuration cannot be upgraded to DSA. \ + Upgrade via sysupgrade mechanism is not possible. DEVICE_VENDOR := NETGEAR DEVICE_MODEL := Centria N900 WNDR4700 DEVICE_ALT0_VENDOR := NETGEAR diff --git a/target/linux/apm821xx/nand/config-default b/target/linux/apm821xx/nand/config-default index 7070b34b93..ab7d790870 100644 --- a/target/linux/apm821xx/nand/config-default +++ b/target/linux/apm821xx/nand/config-default @@ -1,5 +1,3 @@ -CONFIG_AT803X_PHY=y -CONFIG_AR8216_PHY=y # CONFIG_SATA_DWC_OLD_DMA is not set CONFIG_IKAREM=y # CONFIG_PCI_DISABLE_COMMON_QUIRKS is not set @@ -26,6 +24,15 @@ CONFIG_MTD_UBI=y CONFIG_MTD_UBI_BEB_LIMIT=20 CONFIG_MTD_UBI_BLOCK=y CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_NET_DEVLINK=y +CONFIG_NET_DSA=y +CONFIG_NET_DSA_QCA8K=y +CONFIG_NET_DSA_QCA8K_LEDS_SUPPORT=y +CONFIG_NET_DSA_TAG_QCA=y +CONFIG_NET_SWITCHDEV=y +CONFIG_PHYLINK=y +CONFIG_QCA83XX_PHY=y +CONFIG_QCOM_NET_PHYLIB=y CONFIG_UBIFS_FS=y CONFIG_RTL8366_SMI=y CONFIG_RTL8367B_PHY=y @@ -33,4 +40,3 @@ CONFIG_SENSORS_LM90=y CONFIG_SENSORS_TC654=y CONFIG_SWCONFIG=y CONFIG_SWCONFIG_LEDS=y - diff --git a/target/linux/bcm27xx/patches-6.6/950-0058-Revert-Bluetooth-Always-request-for-user-confirmatio.patch b/target/linux/bcm27xx/patches-6.6/950-0058-Revert-Bluetooth-Always-request-for-user-confirmatio.patch index e72c69bb39..5e3446d6f1 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0058-Revert-Bluetooth-Always-request-for-user-confirmatio.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0058-Revert-Bluetooth-Always-request-for-user-confirmatio.patch @@ -24,7 +24,7 @@ Signed-off-by: Phil Elwell --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c -@@ -2222,7 +2222,7 @@ mackey_and_ltk: +@@ -2215,7 +2215,7 @@ mackey_and_ltk: if (err) return SMP_UNSPECIFIED; @@ -33,7 +33,7 @@ Signed-off-by: Phil Elwell if (test_bit(SMP_FLAG_INITIATOR, &smp->flags)) { sc_dhkey_check(smp); SMP_ALLOW_CMD(smp, SMP_CMD_DHKEY_CHECK); -@@ -2237,9 +2237,6 @@ mackey_and_ltk: +@@ -2230,9 +2230,6 @@ mackey_and_ltk: confirm_hint = 0; confirm: diff --git a/target/linux/bcm27xx/patches-6.6/950-0092-MMC-added-alternative-MMC-driver.patch b/target/linux/bcm27xx/patches-6.6/950-0092-MMC-added-alternative-MMC-driver.patch index 499b2a7da3..48baa90403 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0092-MMC-added-alternative-MMC-driver.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0092-MMC-added-alternative-MMC-driver.patch @@ -344,7 +344,7 @@ Signed-off-by: Phil Elwell } --- a/drivers/mmc/core/quirks.h +++ b/drivers/mmc/core/quirks.h -@@ -130,6 +130,14 @@ static const struct mmc_fixup __maybe_un +@@ -134,6 +134,14 @@ static const struct mmc_fixup __maybe_un MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd, MMC_QUIRK_BROKEN_SD_DISCARD), diff --git a/target/linux/bcm27xx/patches-6.6/950-0441-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch b/target/linux/bcm27xx/patches-6.6/950-0441-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch index 51ba7c697c..0e404906be 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0441-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0441-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch @@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4707,6 +4707,7 @@ static const struct { +@@ -4861,6 +4861,7 @@ static const struct { */ static int hci_dev_setup_sync(struct hci_dev *hdev) { @@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell int ret = 0; bool invalid_bdaddr; size_t i; -@@ -4735,7 +4736,8 @@ static int hci_dev_setup_sync(struct hci +@@ -4889,7 +4890,8 @@ static int hci_dev_setup_sync(struct hci test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks); if (!ret) { if (test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks) && diff --git a/target/linux/bcm27xx/patches-6.6/950-0519-usb-dwc3-Set-DMA-and-coherent-masks-early.patch b/target/linux/bcm27xx/patches-6.6/950-0519-usb-dwc3-Set-DMA-and-coherent-masks-early.patch index 78cdcc7139..f771fc8750 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0519-usb-dwc3-Set-DMA-and-coherent-masks-early.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0519-usb-dwc3-Set-DMA-and-coherent-masks-early.patch @@ -246,7 +246,7 @@ Signed-off-by: Jonathan Bell ret = dwc3_phy_power_on(dwc); if (ret) goto err_exit_phy; -@@ -1341,6 +1361,24 @@ static int dwc3_core_init(struct dwc3 *d +@@ -1356,6 +1376,24 @@ static int dwc3_core_init(struct dwc3 *d dwc3_config_threshold(dwc); @@ -271,7 +271,7 @@ Signed-off-by: Jonathan Bell return 0; err_power_off_phy: -@@ -1484,6 +1522,7 @@ static void dwc3_get_properties(struct d +@@ -1499,6 +1537,7 @@ static void dwc3_get_properties(struct d u8 tx_thr_num_pkt_prd = 0; u8 tx_max_burst_prd = 0; u8 tx_fifo_resize_max_num; @@ -279,7 +279,7 @@ Signed-off-by: Jonathan Bell const char *usb_psy_name; int ret; -@@ -1506,6 +1545,9 @@ static void dwc3_get_properties(struct d +@@ -1521,6 +1560,9 @@ static void dwc3_get_properties(struct d */ tx_fifo_resize_max_num = 6; @@ -289,7 +289,7 @@ Signed-off-by: Jonathan Bell dwc->maximum_speed = usb_get_maximum_speed(dev); dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev); dwc->dr_mode = usb_get_dr_mode(dev); -@@ -1627,6 +1669,9 @@ static void dwc3_get_properties(struct d +@@ -1642,6 +1684,9 @@ static void dwc3_get_properties(struct d dwc->dis_split_quirk = device_property_read_bool(dev, "snps,dis-split-quirk"); @@ -299,7 +299,7 @@ Signed-off-by: Jonathan Bell dwc->lpm_nyet_threshold = lpm_nyet_threshold; dwc->tx_de_emphasis = tx_de_emphasis; -@@ -1644,6 +1689,8 @@ static void dwc3_get_properties(struct d +@@ -1659,6 +1704,8 @@ static void dwc3_get_properties(struct d dwc->tx_thr_num_pkt_prd = tx_thr_num_pkt_prd; dwc->tx_max_burst_prd = tx_max_burst_prd; @@ -308,7 +308,7 @@ Signed-off-by: Jonathan Bell dwc->imod_interval = 0; dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num; -@@ -1919,6 +1966,12 @@ static int dwc3_probe(struct platform_de +@@ -1934,6 +1981,12 @@ static int dwc3_probe(struct platform_de dwc3_get_properties(dwc); @@ -333,7 +333,7 @@ Signed-off-by: Jonathan Bell /* Global Debug LSP MUX Select */ #define DWC3_GDBGLSPMUX_ENDBC BIT(15) /* Host only */ #define DWC3_GDBGLSPMUX_HOSTSELECT(n) ((n) & 0x3fff) -@@ -1060,6 +1063,7 @@ struct dwc3_scratchpad_array { +@@ -1061,6 +1064,7 @@ struct dwc3_scratchpad_array { * @tx_max_burst_prd: max periodic ESS transmit burst size * @tx_fifo_resize_max_num: max number of fifos allocated during txfifo resize * @clear_stall_protocol: endpoint number that requires a delayed status phase @@ -341,7 +341,7 @@ Signed-off-by: Jonathan Bell * @hsphy_interface: "utmi" or "ulpi" * @connected: true when we're connected to a host, false otherwise * @softconnect: true when gadget connect is called, false when disconnect runs -@@ -1294,6 +1298,7 @@ struct dwc3 { +@@ -1296,6 +1300,7 @@ struct dwc3 { u8 tx_max_burst_prd; u8 tx_fifo_resize_max_num; u8 clear_stall_protocol; diff --git a/target/linux/bcm27xx/patches-6.6/950-0853-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch b/target/linux/bcm27xx/patches-6.6/950-0853-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch index d91a989526..e089be3f37 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0853-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0853-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch @@ -16,7 +16,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c -@@ -1351,6 +1351,9 @@ static int dwc3_core_init(struct dwc3 *d +@@ -1366,6 +1366,9 @@ static int dwc3_core_init(struct dwc3 *d if (dwc->parkmode_disable_hs_quirk) reg |= DWC3_GUCTL1_PARKMODE_DISABLE_HS; @@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell if (DWC3_VER_IS_WITHIN(DWC3, 290A, ANY) && (dwc->maximum_speed == USB_SPEED_HIGH || dwc->maximum_speed == USB_SPEED_FULL)) -@@ -1649,6 +1652,8 @@ static void dwc3_get_properties(struct d +@@ -1664,6 +1667,8 @@ static void dwc3_get_properties(struct d "snps,parkmode-disable-ss-quirk"); dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev, "snps,parkmode-disable-hs-quirk"); @@ -45,7 +45,7 @@ Signed-off-by: Jonathan Bell #define DWC3_GUCTL1_RESUME_OPMODE_HS_HOST BIT(10) /* Global Status Register */ -@@ -1115,10 +1116,12 @@ struct dwc3_scratchpad_array { +@@ -1116,10 +1117,12 @@ struct dwc3_scratchpad_array { * generation after resume from suspend. * @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin * VBUS with an external supply. @@ -62,7 +62,7 @@ Signed-off-by: Jonathan Bell * @tx_de_emphasis_quirk: set if we enable Tx de-emphasis quirk * @tx_de_emphasis: Tx de-emphasis value * 0 - -6dB de-emphasis -@@ -1342,6 +1345,7 @@ struct dwc3 { +@@ -1344,6 +1347,7 @@ struct dwc3 { unsigned ulpi_ext_vbus_drv:1; unsigned parkmode_disable_ss_quirk:1; unsigned parkmode_disable_hs_quirk:1; diff --git a/target/linux/bcm27xx/patches-6.6/950-0980-drivers-mmc-add-SD-support-for-Command-Queueing.patch b/target/linux/bcm27xx/patches-6.6/950-0980-drivers-mmc-add-SD-support-for-Command-Queueing.patch index fa22327131..14eb62cfac 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0980-drivers-mmc-add-SD-support-for-Command-Queueing.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0980-drivers-mmc-add-SD-support-for-Command-Queueing.patch @@ -91,7 +91,7 @@ Signed-off-by: Jonathan Bell cmd.flags &= ~MMC_RSP_CRC; /* Ignore CRC */ --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c -@@ -1015,8 +1015,8 @@ static bool mmc_sd_card_using_v18(struct +@@ -1016,8 +1016,8 @@ static bool mmc_sd_card_using_v18(struct (SD_MODE_UHS_SDR50 | SD_MODE_UHS_SDR104 | SD_MODE_UHS_DDR50); } @@ -102,7 +102,7 @@ Signed-off-by: Jonathan Bell { struct mmc_host *host = card->host; struct mmc_request mrq = {}; -@@ -1174,8 +1174,14 @@ static int sd_parse_ext_reg_perf(struct +@@ -1175,8 +1175,14 @@ static int sd_parse_ext_reg_perf(struct card->ext_perf.feature_support |= SD_EXT_PERF_CACHE; /* Command queue support indicated via queue depth bits (0 to 4). */ @@ -118,7 +118,7 @@ Signed-off-by: Jonathan Bell card->ext_perf.fno = fno; card->ext_perf.page = page; -@@ -1559,13 +1565,41 @@ cont: +@@ -1563,13 +1569,41 @@ cont: goto free_card; } diff --git a/target/linux/bcm27xx/patches-6.6/950-0983-drivers-mmc-preallocate-a-block-for-SD-extension-reg.patch b/target/linux/bcm27xx/patches-6.6/950-0983-drivers-mmc-preallocate-a-block-for-SD-extension-reg.patch index b62fab5393..4d90245f36 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0983-drivers-mmc-preallocate-a-block-for-SD-extension-reg.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0983-drivers-mmc-preallocate-a-block-for-SD-extension-reg.patch @@ -30,7 +30,7 @@ Signed-off-by: Jonathan Bell kfree(card); --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c -@@ -1025,9 +1025,8 @@ int sd_write_ext_reg(struct mmc_card *ca +@@ -1026,9 +1026,8 @@ int sd_write_ext_reg(struct mmc_card *ca struct scatterlist sg; u8 *reg_buf; @@ -42,7 +42,7 @@ Signed-off-by: Jonathan Bell mrq.cmd = &cmd; mrq.data = &data; -@@ -1059,8 +1058,6 @@ int sd_write_ext_reg(struct mmc_card *ca +@@ -1060,8 +1059,6 @@ int sd_write_ext_reg(struct mmc_card *ca mmc_set_data_timeout(&data, card); mmc_wait_for_req(host, &mrq); @@ -51,7 +51,7 @@ Signed-off-by: Jonathan Bell /* * Note that, the SD card is allowed to signal busy on DAT0 up to 1s * after the CMD49. Although, let's leave this to be managed by the -@@ -1101,9 +1098,7 @@ static int sd_parse_ext_reg_power(struct +@@ -1102,9 +1099,7 @@ static int sd_parse_ext_reg_power(struct int err; u8 *reg_buf; @@ -62,7 +62,7 @@ Signed-off-by: Jonathan Bell /* Read the extension register for power management function. */ err = sd_read_ext_reg(card, fno, page, offset, 512, reg_buf); -@@ -1133,7 +1128,6 @@ static int sd_parse_ext_reg_power(struct +@@ -1134,7 +1129,6 @@ static int sd_parse_ext_reg_power(struct card->ext_power.offset = offset; out: @@ -70,7 +70,7 @@ Signed-off-by: Jonathan Bell return err; } -@@ -1143,9 +1137,7 @@ static int sd_parse_ext_reg_perf(struct +@@ -1144,9 +1138,7 @@ static int sd_parse_ext_reg_perf(struct int err; u8 *reg_buf; @@ -81,7 +81,7 @@ Signed-off-by: Jonathan Bell err = sd_read_ext_reg(card, fno, page, offset, 512, reg_buf); if (err) { -@@ -1188,7 +1180,6 @@ static int sd_parse_ext_reg_perf(struct +@@ -1189,7 +1181,6 @@ static int sd_parse_ext_reg_perf(struct card->ext_perf.offset = offset; out: @@ -89,7 +89,7 @@ Signed-off-by: Jonathan Bell return err; } -@@ -1259,6 +1250,12 @@ static int sd_read_ext_regs(struct mmc_c +@@ -1260,6 +1251,12 @@ static int sd_read_ext_regs(struct mmc_c if (!gen_info_buf) return -ENOMEM; @@ -102,7 +102,7 @@ Signed-off-by: Jonathan Bell /* * Read 512 bytes of general info, which is found at function number 0, * at page 0 and with no offset. -@@ -1325,9 +1322,7 @@ static int sd_flush_cache(struct mmc_hos +@@ -1326,9 +1323,7 @@ static int sd_flush_cache(struct mmc_hos if (!sd_cache_enabled(host)) return 0; @@ -113,7 +113,7 @@ Signed-off-by: Jonathan Bell /* * Set Flush Cache at bit 0 in the performance enhancement register at -@@ -1363,21 +1358,15 @@ static int sd_flush_cache(struct mmc_hos +@@ -1364,21 +1359,15 @@ static int sd_flush_cache(struct mmc_hos if (reg_buf[0] & BIT(0)) err = -ETIMEDOUT; out: @@ -135,7 +135,7 @@ Signed-off-by: Jonathan Bell /* * Set Cache Enable at bit 0 in the performance enhancement register at * 260 bytes offset. -@@ -1396,7 +1385,6 @@ static int sd_enable_cache(struct mmc_ca +@@ -1397,7 +1386,6 @@ static int sd_enable_cache(struct mmc_ca card->ext_perf.feature_enabled |= SD_EXT_PERF_CACHE; out: diff --git a/target/linux/bcm27xx/patches-6.6/950-0993-drivers-mmc-cqhci-clear-CQHCI_CTL-if-halt-fails.patch b/target/linux/bcm27xx/patches-6.6/950-0993-drivers-mmc-cqhci-clear-CQHCI_CTL-if-halt-fails.patch index b572499935..bda518fc81 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0993-drivers-mmc-cqhci-clear-CQHCI_CTL-if-halt-fails.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0993-drivers-mmc-cqhci-clear-CQHCI_CTL-if-halt-fails.patch @@ -31,15 +31,6 @@ Signed-off-by: Jonathan Bell pr_debug("%s: cqhci: CQE off\n", mmc_hostname(mmc)); if (cq_host->ops->post_disable) -@@ -612,7 +614,7 @@ static int cqhci_request(struct mmc_host - cqhci_writel(cq_host, 0, CQHCI_CTL); - mmc->cqe_on = true; - pr_debug("%s: cqhci: CQE on\n", mmc_hostname(mmc)); -- if (cqhci_readl(cq_host, CQHCI_CTL) && CQHCI_HALT) { -+ if (cqhci_readl(cq_host, CQHCI_CTL) & CQHCI_HALT) { - pr_err("%s: cqhci: CQE failed to exit halt state\n", - mmc_hostname(mmc)); - } @@ -975,8 +977,11 @@ static bool cqhci_halt(struct mmc_host * ret = cqhci_halted(cq_host); diff --git a/target/linux/bcm27xx/patches-6.6/950-0994-drivers-mmc-export-SD-extension-register-read-write-.patch b/target/linux/bcm27xx/patches-6.6/950-0994-drivers-mmc-export-SD-extension-register-read-write-.patch index 78679702b2..e2347ed9d2 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0994-drivers-mmc-export-SD-extension-register-read-write-.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0994-drivers-mmc-export-SD-extension-register-read-write-.patch @@ -16,7 +16,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c -@@ -1015,83 +1015,6 @@ static bool mmc_sd_card_using_v18(struct +@@ -1016,83 +1016,6 @@ static bool mmc_sd_card_using_v18(struct (SD_MODE_UHS_SDR50 | SD_MODE_UHS_SDR104 | SD_MODE_UHS_DDR50); } @@ -100,7 +100,7 @@ Signed-off-by: Jonathan Bell static int sd_parse_ext_reg_power(struct mmc_card *card, u8 fno, u8 page, u16 offset) { -@@ -1101,7 +1024,7 @@ static int sd_parse_ext_reg_power(struct +@@ -1102,7 +1025,7 @@ static int sd_parse_ext_reg_power(struct reg_buf = card->ext_reg_buf; /* Read the extension register for power management function. */ @@ -109,7 +109,7 @@ Signed-off-by: Jonathan Bell if (err) { pr_warn("%s: error %d reading PM func of ext reg\n", mmc_hostname(card->host), err); -@@ -1139,7 +1062,7 @@ static int sd_parse_ext_reg_perf(struct +@@ -1140,7 +1063,7 @@ static int sd_parse_ext_reg_perf(struct reg_buf = card->ext_reg_buf; @@ -118,7 +118,7 @@ Signed-off-by: Jonathan Bell if (err) { pr_warn("%s: error %d reading PERF func of ext reg\n", mmc_hostname(card->host), err); -@@ -1234,7 +1157,7 @@ static int sd_parse_ext_reg(struct mmc_c +@@ -1235,7 +1158,7 @@ static int sd_parse_ext_reg(struct mmc_c return 0; } @@ -127,7 +127,7 @@ Signed-off-by: Jonathan Bell { int err, i; u8 num_ext, *gen_info_buf; -@@ -1260,7 +1183,7 @@ static int sd_read_ext_regs(struct mmc_c +@@ -1261,7 +1184,7 @@ static int sd_read_ext_regs(struct mmc_c * Read 512 bytes of general info, which is found at function number 0, * at page 0 and with no offset. */ @@ -136,7 +136,7 @@ Signed-off-by: Jonathan Bell if (err) { pr_err("%s: error %d reading general info of SD ext reg\n", mmc_hostname(card->host), err); -@@ -1332,7 +1255,7 @@ static int sd_flush_cache(struct mmc_hos +@@ -1333,7 +1256,7 @@ static int sd_flush_cache(struct mmc_hos page = card->ext_perf.page; offset = card->ext_perf.offset + 261; @@ -145,7 +145,7 @@ Signed-off-by: Jonathan Bell if (err) { pr_warn("%s: error %d writing Cache Flush bit\n", mmc_hostname(host), err); -@@ -1348,7 +1271,7 @@ static int sd_flush_cache(struct mmc_hos +@@ -1349,7 +1272,7 @@ static int sd_flush_cache(struct mmc_hos * Read the Flush Cache bit. The card shall reset it, to confirm that * it's has completed the flushing of the cache. */ @@ -154,7 +154,7 @@ Signed-off-by: Jonathan Bell if (err) { pr_warn("%s: error %d reading Cache Flush bit\n", mmc_hostname(host), err); -@@ -1371,7 +1294,7 @@ static int sd_enable_cache(struct mmc_ca +@@ -1372,7 +1295,7 @@ static int sd_enable_cache(struct mmc_ca * Set Cache Enable at bit 0 in the performance enhancement register at * 260 bytes offset. */ @@ -163,7 +163,7 @@ Signed-off-by: Jonathan Bell card->ext_perf.offset + 260, BIT(0)); if (err) { pr_warn("%s: error %d writing Cache Enable bit\n", -@@ -1541,7 +1464,7 @@ retry: +@@ -1545,7 +1468,7 @@ retry: cont: if (!oldcard) { /* Read/parse the extension registers. */ @@ -172,7 +172,7 @@ Signed-off-by: Jonathan Bell if (err) goto free_card; } -@@ -1668,7 +1591,7 @@ static int sd_busy_poweroff_notify_cb(vo +@@ -1672,7 +1595,7 @@ static int sd_busy_poweroff_notify_cb(vo * one byte offset and is one byte long. The Power Off Notification * Ready is bit 0. */ @@ -181,7 +181,7 @@ Signed-off-by: Jonathan Bell card->ext_power.offset + 1, 1, data->reg_buf); if (err) { pr_warn("%s: error %d reading status reg of PM func\n", -@@ -1694,7 +1617,7 @@ static int sd_poweroff_notify(struct mmc +@@ -1698,7 +1621,7 @@ static int sd_poweroff_notify(struct mmc * Set the Power Off Notification bit in the power management settings * register at 2 bytes offset. */ diff --git a/target/linux/bcm27xx/patches-6.6/950-0995-drivers-mmc-be-more-cautious-when-manipulating-Comma.patch b/target/linux/bcm27xx/patches-6.6/950-0995-drivers-mmc-be-more-cautious-when-manipulating-Comma.patch index 125f21cc7a..6a855757ac 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0995-drivers-mmc-be-more-cautious-when-manipulating-Comma.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0995-drivers-mmc-be-more-cautious-when-manipulating-Comma.patch @@ -17,7 +17,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c -@@ -1088,8 +1088,12 @@ static int sd_parse_ext_reg_perf(struct +@@ -1089,8 +1089,12 @@ static int sd_parse_ext_reg_perf(struct if ((reg_buf[4] & BIT(0)) && !mmc_card_broken_sd_cache(card)) card->ext_perf.feature_support |= SD_EXT_PERF_CACHE; diff --git a/target/linux/bcm27xx/patches-6.6/950-0996-drivers-mmc-add-debugfs-entries-for-SD-extension-reg.patch b/target/linux/bcm27xx/patches-6.6/950-0996-drivers-mmc-add-debugfs-entries-for-SD-extension-reg.patch index 581fd19fc5..c12229ece9 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0996-drivers-mmc-add-debugfs-entries-for-SD-extension-reg.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0996-drivers-mmc-add-debugfs-entries-for-SD-extension-reg.patch @@ -27,7 +27,7 @@ Signed-off-by: Jonathan Bell pr_info("%s: Host Software Queue enabled\n", --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c -@@ -714,7 +714,8 @@ MMC_DEV_ATTR(oemid, "0x%04x\n", card->ci +@@ -715,7 +715,8 @@ MMC_DEV_ATTR(oemid, "0x%04x\n", card->ci MMC_DEV_ATTR(serial, "0x%08x\n", card->cid.serial); MMC_DEV_ATTR(ocr, "0x%08x\n", card->ocr); MMC_DEV_ATTR(rca, "0x%04x\n", card->rca); @@ -37,7 +37,7 @@ Signed-off-by: Jonathan Bell static ssize_t mmc_dsr_show(struct device *dev, struct device_attribute *attr, char *buf) -@@ -776,6 +777,8 @@ static struct attribute *sd_std_attrs[] +@@ -777,6 +778,8 @@ static struct attribute *sd_std_attrs[] &dev_attr_ocr.attr, &dev_attr_rca.attr, &dev_attr_dsr.attr, @@ -46,7 +46,7 @@ Signed-off-by: Jonathan Bell NULL, }; -@@ -1508,8 +1511,8 @@ cont: +@@ -1512,8 +1515,8 @@ cont: host->cqe_enabled = true; if (card->ext_csd.cmdq_en) { diff --git a/target/linux/bcm27xx/patches-6.6/950-0997-drivers-mmc-handle-1024-byte-SD-General-Info-lengths.patch b/target/linux/bcm27xx/patches-6.6/950-0997-drivers-mmc-handle-1024-byte-SD-General-Info-lengths.patch index 318bd191f6..55b369d659 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0997-drivers-mmc-handle-1024-byte-SD-General-Info-lengths.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0997-drivers-mmc-handle-1024-byte-SD-General-Info-lengths.patch @@ -14,7 +14,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c -@@ -1176,7 +1176,7 @@ static int mmc_sd_read_ext_regs(struct m +@@ -1177,7 +1177,7 @@ static int mmc_sd_read_ext_regs(struct m if (!(card->scr.cmds & SD_SCR_CMD48_SUPPORT)) return 0; @@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell if (!gen_info_buf) return -ENOMEM; -@@ -1207,14 +1207,23 @@ static int mmc_sd_read_ext_regs(struct m +@@ -1208,14 +1208,23 @@ static int mmc_sd_read_ext_regs(struct m num_ext = gen_info_buf[4]; /* diff --git a/target/linux/bcm27xx/patches-6.6/950-1018-drivers-mmc-apply-SD-quirks-earlier-during-probe.patch b/target/linux/bcm27xx/patches-6.6/950-1018-drivers-mmc-apply-SD-quirks-earlier-during-probe.patch deleted file mode 100644 index 3225d87ff1..0000000000 --- a/target/linux/bcm27xx/patches-6.6/950-1018-drivers-mmc-apply-SD-quirks-earlier-during-probe.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 598e155f3467316b9ad70bde46b92fc30e3eea73 Mon Sep 17 00:00:00 2001 -From: Jonathan Bell -Date: Mon, 8 Apr 2024 16:01:34 +0100 -Subject: [PATCH 1018/1085] drivers: mmc: apply SD quirks earlier during probe - -Applying MMC_QUIRK_BROKEN_SD_CACHE is broken, as the card's extended -registers are parsed prior to the quirk being applied in mmc_blk. - -Split this out into an SD-specific list of quirks and apply in -mmc_sd_init_card instead. - -Fixes: c467c8f08185 ("mmc: Add MMC_QUIRK_BROKEN_SD_CACHE for Kingston Canvas Go Plus from 11/2019") - -Signed-off-by: Jonathan Bell ---- - drivers/mmc/core/quirks.h | 22 +++++++++++++--------- - drivers/mmc/core/sd.c | 4 ++++ - 2 files changed, 17 insertions(+), 9 deletions(-) - ---- a/drivers/mmc/core/quirks.h -+++ b/drivers/mmc/core/quirks.h -@@ -15,6 +15,19 @@ - - #include "card.h" - -+static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = { -+ /* -+ * Kingston Canvas Go! Plus microSD cards never finish SD cache flush. -+ * This has so far only been observed on cards from 11/2019, while new -+ * cards from 2023/05 do not exhibit this behavior. -+ */ -+ _FIXUP_EXT("SD64G", CID_MANFID_KINGSTON_SD, 0x5449, 2019, 11, -+ 0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd, -+ MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY), -+ -+ END_FIXUP -+}; -+ - static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = { - #define INAND_CMD38_ARG_EXT_CSD 113 - #define INAND_CMD38_ARG_ERASE 0x00 -@@ -54,15 +67,6 @@ static const struct mmc_fixup __maybe_un - MMC_QUIRK_BLK_NO_CMD23), - - /* -- * Kingston Canvas Go! Plus microSD cards never finish SD cache flush. -- * This has so far only been observed on cards from 11/2019, while new -- * cards from 2023/05 do not exhibit this behavior. -- */ -- _FIXUP_EXT("SD64G", CID_MANFID_KINGSTON_SD, 0x5449, 2019, 11, -- 0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd, -- MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY), -- -- /* - * Some SD cards lockup while using CMD23 multiblock transfers. - */ - MMC_FIXUP("AF SD", CID_MANFID_ATP, CID_OEMID_ANY, add_quirk_sd, ---- a/drivers/mmc/core/sd.c -+++ b/drivers/mmc/core/sd.c -@@ -26,6 +26,7 @@ - #include "host.h" - #include "bus.h" - #include "mmc_ops.h" -+#include "quirks.h" - #include "sd.h" - #include "sd_ops.h" - -@@ -1408,6 +1409,9 @@ retry: - goto free_card; - } - -+ /* Apply quirks prior to card setup */ -+ mmc_fixup_device(card, mmc_sd_fixups); -+ - err = mmc_sd_setup_card(host, card, oldcard != NULL); - if (err) - goto free_card; diff --git a/target/linux/generic/backport-6.6/200-regmap-maple-work-around-false-positive-warning.patch b/target/linux/generic/backport-6.6/200-regmap-maple-work-around-false-positive-warning.patch deleted file mode 100644 index de5c813804..0000000000 --- a/target/linux/generic/backport-6.6/200-regmap-maple-work-around-false-positive-warning.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 542440fd7b30983cae23e32bd22f69a076ec7ef4 Mon Sep 17 00:00:00 2001 -From: Arnd Bergmann -Date: Fri, 19 Jul 2024 12:40:24 +0200 -Subject: regmap: maple: work around gcc-14.1 false-positive warning - -With gcc-14.1, there is a false-postive -Wuninitialized warning in -regcache_maple_drop: - -drivers/base/regmap/regcache-maple.c: In function 'regcache_maple_drop': -drivers/base/regmap/regcache-maple.c:113:23: error: 'lower_index' is used uninitialized [-Werror=uninitialized] - 113 | unsigned long lower_index, lower_last; - | ^~~~~~~~~~~ -drivers/base/regmap/regcache-maple.c:113:36: error: 'lower_last' is used uninitialized [-Werror=uninitialized] - 113 | unsigned long lower_index, lower_last; - | ^~~~~~~~~~ - -I've created a reduced test case to see if this needs to be reported -as a gcc, but it appears that the gcc-14.x branch already has a change -that turns this into a more sensible -Wmaybe-uninitialized warning, so -I ended up not reporting it so far. - -The reduced test case also produces a warning for gcc-13 and gcc-12 -but I don't see that with the version in the kernel. - -Link: https://godbolt.org/z/oKbohKqd3 -Link: https://lore.kernel.org/all/CAMuHMdWj=FLmkazPbYKPevDrcym2_HDb_U7Mb9YE9ovrP0jJfA@mail.gmail.com/ -Signed-off-by: Arnd Bergmann -Link: https://patch.msgid.link/20240719104030.1382465-1-arnd@kernel.org -Signed-off-by: Mark Brown ---- - drivers/base/regmap/regcache-maple.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -(limited to 'drivers/base/regmap/regcache-maple.c') - ---- a/drivers/base/regmap/regcache-maple.c -+++ b/drivers/base/regmap/regcache-maple.c -@@ -110,7 +110,8 @@ static int regcache_maple_drop(struct re - struct maple_tree *mt = map->cache; - MA_STATE(mas, mt, min, max); - unsigned long *entry, *lower, *upper; -- unsigned long lower_index, lower_last; -+ /* initialized to work around false-positive -Wuninitialized warning */ -+ unsigned long lower_index = 0, lower_last = 0; - unsigned long upper_index, upper_last; - int ret = 0; - diff --git a/target/linux/generic/backport-6.6/822-v6.11-0012-nvmem-Fix-return-type-of-devm_nvmem_device_get-in-ke.patch b/target/linux/generic/backport-6.6/822-v6.11-0012-nvmem-Fix-return-type-of-devm_nvmem_device_get-in-ke.patch deleted file mode 100644 index 6d49a253a4..0000000000 --- a/target/linux/generic/backport-6.6/822-v6.11-0012-nvmem-Fix-return-type-of-devm_nvmem_device_get-in-ke.patch +++ /dev/null @@ -1,37 +0,0 @@ -From c69f37f6559a8948d70badd2b179db7714dedd62 Mon Sep 17 00:00:00 2001 -From: Geert Uytterhoeven -Date: Mon, 2 Sep 2024 15:25:09 +0100 -Subject: [PATCH] nvmem: Fix return type of devm_nvmem_device_get() in - kerneldoc - -devm_nvmem_device_get() returns an nvmem device, not an nvmem cell. - -Fixes: e2a5402ec7c6d044 ("nvmem: Add nvmem_device based consumer apis.") -Cc: stable -Signed-off-by: Geert Uytterhoeven -Signed-off-by: Srinivas Kandagatla -Link: https://lore.kernel.org/r/20240902142510.71096-3-srinivas.kandagatla@linaro.org -Signed-off-by: Greg Kroah-Hartman ---- - drivers/nvmem/core.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- a/drivers/nvmem/core.c -+++ b/drivers/nvmem/core.c -@@ -1275,13 +1275,13 @@ void nvmem_device_put(struct nvmem_devic - EXPORT_SYMBOL_GPL(nvmem_device_put); - - /** -- * devm_nvmem_device_get() - Get nvmem cell of device form a given id -+ * devm_nvmem_device_get() - Get nvmem device of device form a given id - * - * @dev: Device that requests the nvmem device. - * @id: name id for the requested nvmem device. - * -- * Return: ERR_PTR() on error or a valid pointer to a struct nvmem_cell -- * on success. The nvmem_cell will be freed by the automatically once the -+ * Return: ERR_PTR() on error or a valid pointer to a struct nvmem_device -+ * on success. The nvmem_device will be freed by the automatically once the - * device is freed. - */ - struct nvmem_device *devm_nvmem_device_get(struct device *dev, const char *id) diff --git a/target/linux/generic/hack-6.6/760-net-usb-r8152-add-LED-configuration-from-OF.patch b/target/linux/generic/hack-6.6/760-net-usb-r8152-add-LED-configuration-from-OF.patch index 190dd3507c..069c682303 100644 --- a/target/linux/generic/hack-6.6/760-net-usb-r8152-add-LED-configuration-from-OF.patch +++ b/target/linux/generic/hack-6.6/760-net-usb-r8152-add-LED-configuration-from-OF.patch @@ -22,7 +22,7 @@ Signed-off-by: David Bauer #include #include #include -@@ -7035,6 +7036,22 @@ static void rtl_tally_reset(struct r8152 +@@ -7044,6 +7045,22 @@ static void rtl_tally_reset(struct r8152 ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data); } @@ -45,7 +45,7 @@ Signed-off-by: David Bauer static void r8152b_init(struct r8152 *tp) { u32 ocp_data; -@@ -7076,6 +7093,8 @@ static void r8152b_init(struct r8152 *tp +@@ -7085,6 +7102,8 @@ static void r8152b_init(struct r8152 *tp ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL); ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN); ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data); @@ -54,7 +54,7 @@ Signed-off-by: David Bauer } static void r8153_init(struct r8152 *tp) -@@ -7216,6 +7235,8 @@ static void r8153_init(struct r8152 *tp) +@@ -7225,6 +7244,8 @@ static void r8153_init(struct r8152 *tp) tp->coalesce = COALESCE_SLOW; break; } @@ -63,7 +63,7 @@ Signed-off-by: David Bauer } static void r8153b_init(struct r8152 *tp) -@@ -7298,6 +7319,8 @@ static void r8153b_init(struct r8152 *tp +@@ -7307,6 +7328,8 @@ static void r8153b_init(struct r8152 *tp rtl_tally_reset(tp); tp->coalesce = 15000; /* 15 us */ diff --git a/target/linux/generic/hack-6.6/901-debloat_sock_diag.patch b/target/linux/generic/hack-6.6/901-debloat_sock_diag.patch index af000f76fc..acf72f4422 100644 --- a/target/linux/generic/hack-6.6/901-debloat_sock_diag.patch +++ b/target/linux/generic/hack-6.6/901-debloat_sock_diag.patch @@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau INDIRECT_CALLABLE_DECLARE(struct dst_entry *ip6_dst_check(struct dst_entry *, u32)); INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *, -@@ -2247,9 +2264,11 @@ static void __sk_free(struct sock *sk) +@@ -2239,9 +2256,11 @@ static void __sk_free(struct sock *sk) if (likely(sk->sk_net_refcnt)) sock_inuse_add(sock_net(sk), -1); diff --git a/target/linux/generic/hack-6.6/902-debloat_proc.patch b/target/linux/generic/hack-6.6/902-debloat_proc.patch index 442daf6a0a..691a60bcc0 100644 --- a/target/linux/generic/hack-6.6/902-debloat_proc.patch +++ b/target/linux/generic/hack-6.6/902-debloat_proc.patch @@ -330,7 +330,7 @@ Signed-off-by: Felix Fietkau --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -4148,6 +4148,8 @@ static __net_initdata struct pernet_oper +@@ -4140,6 +4140,8 @@ static __net_initdata struct pernet_oper static int __init proto_init(void) { diff --git a/target/linux/generic/pending-6.6/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch b/target/linux/generic/pending-6.6/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch index 85d2ac21b1..97e321bfec 100644 --- a/target/linux/generic/pending-6.6/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch +++ b/target/linux/generic/pending-6.6/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch @@ -96,7 +96,7 @@ Signed-off-by: Felix Fietkau return features; --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -2449,7 +2449,7 @@ void sk_setup_caps(struct sock *sk, stru +@@ -2441,7 +2441,7 @@ void sk_setup_caps(struct sock *sk, stru if (sk_is_tcp(sk)) sk->sk_route_caps |= NETIF_F_GSO; if (sk->sk_route_caps & NETIF_F_GSO) diff --git a/target/linux/generic/pending-6.6/834-ledtrig-libata.patch b/target/linux/generic/pending-6.6/834-ledtrig-libata.patch index c2d281bfc7..672d0d54cf 100644 --- a/target/linux/generic/pending-6.6/834-ledtrig-libata.patch +++ b/target/linux/generic/pending-6.6/834-ledtrig-libata.patch @@ -96,7 +96,7 @@ Signed-off-by: Daniel Golle kfree(ap); } EXPORT_SYMBOL_GPL(ata_port_free); -@@ -5927,7 +5950,23 @@ int ata_host_register(struct ata_host *h +@@ -5929,7 +5952,23 @@ int ata_host_register(struct ata_host *h host->ports[i]->print_id = atomic_inc_return(&ata_print_id); host->ports[i]->local_port_no = i + 1; } diff --git a/target/linux/omap/Makefile b/target/linux/omap/Makefile index a3c61efc9a..67db2aa07d 100644 --- a/target/linux/omap/Makefile +++ b/target/linux/omap/Makefile @@ -12,7 +12,7 @@ CPU_TYPE:=cortex-a8 CPU_SUBTYPE:=vfpv3 SUBTARGETS:=generic -KERNEL_PATCHVER:=6.1 +KERNEL_PATCHVER:=6.6 KERNELNAME:=zImage dtbs diff --git a/target/linux/omap/config-6.1 b/target/linux/omap/config-6.6 similarity index 96% rename from target/linux/omap/config-6.1 rename to target/linux/omap/config-6.6 index 94c6b5922d..f85a68f0aa 100644 --- a/target/linux/omap/config-6.1 +++ b/target/linux/omap/config-6.6 @@ -10,7 +10,6 @@ CONFIG_ARCH_MULTIPLATFORM=y CONFIG_ARCH_MULTI_V6_V7=y CONFIG_ARCH_MULTI_V7=y CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y -CONFIG_ARCH_NR_GPIO=0 CONFIG_ARCH_OMAP=y CONFIG_ARCH_OMAP2PLUS=y CONFIG_ARCH_OMAP2PLUS_TYPICAL=y @@ -20,6 +19,7 @@ CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_STACKWALK=y CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARM=y CONFIG_ARM_APPENDED_DTB=y @@ -63,6 +63,7 @@ CONFIG_BLK_DEV_SD=y CONFIG_BLK_PM=y CONFIG_BOUNCE=y CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BUFFER_HEAD=y CONFIG_CACHE_L2X0=y CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" @@ -123,6 +124,7 @@ CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_MITIGATIONS=y CONFIG_CPU_PABRT_V7=y CONFIG_CPU_PM=y CONFIG_CPU_RMAP=y @@ -157,6 +159,7 @@ CONFIG_CRYPTO_DRBG_HMAC=y CONFIG_CRYPTO_DRBG_MENU=y CONFIG_CRYPTO_ECB=y CONFIG_CRYPTO_ENGINE=y +CONFIG_CRYPTO_GENIV=y CONFIG_CRYPTO_GHASH_ARM_CE=y CONFIG_CRYPTO_HASH_INFO=y CONFIG_CRYPTO_HMAC=y @@ -164,10 +167,13 @@ CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_JITTERENTROPY=y CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y CONFIG_CRYPTO_LIB_DES=y +CONFIG_CRYPTO_LIB_GF128MUL=y CONFIG_CRYPTO_LIB_SHA1=y CONFIG_CRYPTO_LIB_SHA256=y CONFIG_CRYPTO_LIB_UTILS=y CONFIG_CRYPTO_LZO=y +# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set +# CONFIG_CRYPTO_MANAGER_EXTRA_TESTS is not set CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_RNG=y CONFIG_CRYPTO_RNG2=y @@ -178,8 +184,10 @@ CONFIG_CRYPTO_SHA1_ARM=y CONFIG_CRYPTO_SHA1_ARM_NEON=y CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA256_ARM=y +CONFIG_CRYPTO_SHA3=y CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_SHA512_ARM=y +CONFIG_CRYPTO_SIG2=y CONFIG_CRYPTO_SIMD=y CONFIG_CRYPTO_ZSTD=y CONFIG_CURRENT_POINTER_IN_TPIDRURO=y @@ -201,7 +209,6 @@ CONFIG_DRM_BRIDGE=y CONFIG_DRM_DISPLAY_CONNECTOR=y CONFIG_DRM_KMS_HELPER=y CONFIG_DRM_MIPI_DSI=y -CONFIG_DRM_NOMODESET=y CONFIG_DRM_OMAP=y CONFIG_DRM_PANEL=y CONFIG_DRM_PANEL_BRIDGE=y @@ -228,16 +235,16 @@ CONFIG_EXTCON_USB_GPIO=y CONFIG_F2FS_FS=y CONFIG_FANOTIFY=y CONFIG_FAT_FS=y -CONFIG_FB_CMDLINE=y CONFIG_FHANDLE=y CONFIG_FIXED_PHY=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_FS_IOMAP=y CONFIG_FS_MBCACHE=y +CONFIG_FUNCTION_ALIGNMENT=0 CONFIG_FWNODE_MDIO=y CONFIG_FW_LOADER_PAGED_BUF=y CONFIG_FW_LOADER_SYSFS=y -CONFIG_GCC11_NO_ARRAY_BOUNDS=y +CONFIG_GCC10_NO_ARRAY_BOUNDS=y CONFIG_GENERIC_ALLOCATOR=y CONFIG_GENERIC_ARCH_TOPOLOGY=y CONFIG_GENERIC_BUG=y @@ -283,6 +290,7 @@ CONFIG_HARDEN_BRANCH_PREDICTOR=y CONFIG_HARDIRQS_SW_RESEND=y CONFIG_HAS_DMA=y CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT_MAP=y CONFIG_HAVE_SMP=y CONFIG_HDMI=y @@ -330,8 +338,8 @@ CONFIG_LEDS_GPIO=y CONFIG_LEDS_PWM=y CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_CPU=y -CONFIG_LEDS_TRIGGER_GPIO=y CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEGACY_DIRECT_IO=y CONFIG_LIBCRC32C=y CONFIG_LIBFDT=y CONFIG_LOCKD=y @@ -346,7 +354,6 @@ CONFIG_MDIO_BUS=y CONFIG_MDIO_DEVICE=y CONFIG_MDIO_DEVRES=y # CONFIG_MDIO_GPIO is not set -CONFIG_MEMFD_CREATE=y CONFIG_MEMORY=y CONFIG_MEMORY_ISOLATION=y CONFIG_MFD_CORE=y @@ -368,6 +375,7 @@ CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_EXTERNAL_DMA=y CONFIG_MMC_SDHCI_OMAP=y CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMU_LAZY_TLB_REFCOUNT=y CONFIG_MODULES_USE_ELF_REL=y CONFIG_MSDOS_FS=y CONFIG_MTD_CMDLINE_PARTS=y @@ -394,14 +402,19 @@ CONFIG_MTD_UBI_WL_THRESHOLD=4096 # CONFIG_MUSB_PIO_ONLY is not set CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_SRCU_NMI_SAFE=y CONFIG_NEON=y CONFIG_NET_DEVLINK=y +CONFIG_NET_EGRESS=y CONFIG_NET_FLOW_LIMIT=y +CONFIG_NET_HANDSHAKE=y +CONFIG_NET_INGRESS=y CONFIG_NET_KEY=y CONFIG_NET_KEY_MIGRATE=y CONFIG_NET_PTP_CLASSIFY=y CONFIG_NET_SELFTESTS=y CONFIG_NET_SWITCHDEV=y +CONFIG_NET_XGRESS=y CONFIG_NFS_ACL_SUPPORT=y CONFIG_NFS_FS=y CONFIG_NFS_USE_KERNEL_DNS=y @@ -437,7 +450,6 @@ CONFIG_OMAP2_DSS_SDI=y CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y CONFIG_OMAP2_DSS_VENC=y # CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set -# CONFIG_OMAP3_SDRC_AC_TIMING is not set CONFIG_OMAP3_THERMAL=y CONFIG_OMAP4_DSS_HDMI=y CONFIG_OMAP4_DSS_HDMI_CEC=y @@ -488,7 +500,6 @@ CONFIG_POWER_SUPPLY=y CONFIG_PPS=y CONFIG_PREEMPT_NONE_BUILD=y CONFIG_PRINTK_TIME=y -CONFIG_PRINT_QUOTA_WARNING=y CONFIG_PROC_EVENTS=y CONFIG_PROFILING=y CONFIG_PTP_1588_CLOCK=y @@ -618,12 +629,11 @@ CONFIG_SPI_MASTER=y CONFIG_SPI_MEM=y CONFIG_SPI_OMAP24XX=y CONFIG_SPI_TI_QSPI=y +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y CONFIG_SRAM=y CONFIG_SRAM_EXEC=y -CONFIG_SRCU=y CONFIG_STACKTRACE=y CONFIG_SUNRPC=y -CONFIG_SUNRPC_GSS=y CONFIG_SWPHY=y CONFIG_SWP_EMULATE=y CONFIG_SYNC_FILE=y @@ -677,7 +687,6 @@ CONFIG_USB_EHCI_HCD_OMAP=y # CONFIG_USB_EHCI_HCD_PLATFORM is not set CONFIG_USB_GADGET=y CONFIG_USB_INVENTRA_DMA=y -CONFIG_USB_MUSB_AM35X=y CONFIG_USB_MUSB_DSPS=y CONFIG_USB_MUSB_DUAL_ROLE=y CONFIG_USB_MUSB_HDRC=y @@ -693,6 +702,8 @@ CONFIG_VFAT_FS=y CONFIG_VFP=y CONFIG_VFPv3=y CONFIG_VIDEOMODE_HELPERS=y +CONFIG_VIDEO_CMDLINE=y +CONFIG_VIDEO_NOMODESET=y CONFIG_WATCHDOG_CORE=y CONFIG_XFRM_ALGO=y CONFIG_XFRM_MIGRATE=y diff --git a/target/linux/omap/image/Makefile b/target/linux/omap/image/Makefile index 507c91b2cc..591628c53f 100644 --- a/target/linux/omap/image/Makefile +++ b/target/linux/omap/image/Makefile @@ -33,6 +33,7 @@ define Device/Default PROFILES := Default KERNEL_NAME := zImage KERNEL := kernel-bin + DTS_DIR := $(DTS_DIR)/ti/omap DEVICE_DTS = $(lastword $(subst _, ,$(1))) IMAGES := sdcard.img.gz IMAGE/sdcard.img.gz := omap-sdcard | append-metadata | gzip diff --git a/target/linux/omap/patches/900-use-cpsw-ethernet-driver.patch b/target/linux/omap/patches-6.6/900-use-cpsw-ethernet-driver.patch similarity index 89% rename from target/linux/omap/patches/900-use-cpsw-ethernet-driver.patch rename to target/linux/omap/patches-6.6/900-use-cpsw-ethernet-driver.patch index 17c07fbdfb..31fa0028c6 100644 --- a/target/linux/omap/patches/900-use-cpsw-ethernet-driver.patch +++ b/target/linux/omap/patches-6.6/900-use-cpsw-ethernet-driver.patch @@ -17,9 +17,9 @@ devices in OpenWrt usable again with the default network config.) Signed-off-by: Jan Hoffmann --- ---- a/arch/arm/boot/dts/am335x-bone-common.dtsi -+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi -@@ -353,27 +353,24 @@ +--- a/arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi ++++ b/arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi +@@ -358,27 +358,24 @@ }; }; @@ -52,8 +52,8 @@ Signed-off-by: Jan Hoffmann ethphy0: ethernet-phy@0 { reg = <0>; ---- a/arch/arm/boot/dts/am335x-evm.dts -+++ b/arch/arm/boot/dts/am335x-evm.dts +--- a/arch/arm/boot/dts/ti/omap/am335x-evm.dts ++++ b/arch/arm/boot/dts/ti/omap/am335x-evm.dts @@ -682,31 +682,28 @@ }; }; diff --git a/target/linux/ramips/patches-6.6/311-MIPS-use-set_mode-to-enable-disable-the-cevt-r4k-irq.patch b/target/linux/ramips/patches-6.6/311-MIPS-use-set_mode-to-enable-disable-the-cevt-r4k-irq.patch index 172cf98ad1..36925b8326 100644 --- a/target/linux/ramips/patches-6.6/311-MIPS-use-set_mode-to-enable-disable-the-cevt-r4k-irq.patch +++ b/target/linux/ramips/patches-6.6/311-MIPS-use-set_mode-to-enable-disable-the-cevt-r4k-irq.patch @@ -6,29 +6,10 @@ Subject: [PATCH 05/53] MIPS: use set_mode() to enable/disable the cevt-r4k Signed-off-by: John Crispin --- - arch/mips/ralink/Kconfig | 5 +++++ - 1 file changed, 5 insertions(+) + arch/mips/kernel/cevt-r4k.c | 43 +++++++++++++++++++++++++++++++++++++ + arch/mips/ralink/Kconfig | 5 +++++ + 2 files changed, 48 insertions(+) ---- a/arch/mips/ralink/Kconfig -+++ b/arch/mips/ralink/Kconfig -@@ -1,12 +1,17 @@ - # SPDX-License-Identifier: GPL-2.0 - if RALINK - -+config CEVT_SYSTICK_QUIRK -+ bool -+ default n -+ - config CLKEVT_RT3352 - bool - depends on SOC_RT305X || SOC_MT7620 - default y - select TIMER_OF - select CLKSRC_MMIO -+ select CEVT_SYSTICK_QUIRK - - config RALINK_ILL_ACC - bool --- a/arch/mips/kernel/cevt-r4k.c +++ b/arch/mips/kernel/cevt-r4k.c @@ -16,6 +16,31 @@ @@ -73,11 +54,28 @@ Signed-off-by: John Crispin unsigned int cpu = smp_processor_id(); struct clock_event_device *cd; unsigned int irq, min_delta; -@@ -322,11 +349,16 @@ int r4k_clockevent_init(void) +@@ -303,6 +330,15 @@ int r4k_clockevent_init(void) + if (!c0_compare_int_usable()) + return -ENXIO; + ++#ifdef CONFIG_CEVT_SYSTICK_QUIRK ++ /* ++ * With vectored interrupts things are getting platform specific. ++ * get_c0_compare_int is a hook to allow a platform to return the ++ * interrupt number of its liking. ++ */ ++ irq = get_c0_compare_int(); ++#endif ++ + cd = &per_cpu(mips_clockevent_device, cpu); + + cd->name = "MIPS"; +@@ -314,11 +350,17 @@ int r4k_clockevent_init(void) + cd->rating = 300; - cd->irq = irq; cd->cpumask = cpumask_of(cpu); +#ifdef CONFIG_CEVT_SYSTICK_QUIRK ++ cd->irq = irq; + cd->set_state_shutdown = mips_state_shutdown; + cd->set_state_oneshot = mips_state_oneshot; +#endif @@ -90,7 +88,7 @@ Signed-off-by: John Crispin if (cp0_timer_irq_installed) return 0; -@@ -335,6 +367,7 @@ int r4k_clockevent_init(void) +@@ -334,6 +376,7 @@ int r4k_clockevent_init(void) if (request_irq(irq, c0_compare_interrupt, flags, "timer", c0_compare_interrupt)) pr_err("Failed to request irq %d (timer)\n", irq); @@ -98,3 +96,23 @@ Signed-off-by: John Crispin return 0; } +--- a/arch/mips/ralink/Kconfig ++++ b/arch/mips/ralink/Kconfig +@@ -1,12 +1,17 @@ + # SPDX-License-Identifier: GPL-2.0 + if RALINK + ++config CEVT_SYSTICK_QUIRK ++ bool ++ default n ++ + config CLKEVT_RT3352 + bool + depends on SOC_RT305X || SOC_MT7620 + default y + select TIMER_OF + select CLKSRC_MMIO ++ select CEVT_SYSTICK_QUIRK + + config RALINK_ILL_ACC + bool diff --git a/target/linux/realtek/base-files/etc/uci-defaults/04_dlinkfan b/target/linux/realtek/base-files/etc/uci-defaults/04_dlinkfan new file mode 100644 index 0000000000..1a5fd3606f --- /dev/null +++ b/target/linux/realtek/base-files/etc/uci-defaults/04_dlinkfan @@ -0,0 +1,26 @@ +# +# Copyright (C) 2024 openwrt.org +# + +. /lib/functions.sh + +board=$(board_name) + +case "$board" in +d-link,dgs-1210-28mp-f) + # Enable fan control + FAN_CTRL='/sys/class/hwmon/hwmon0' + echo 1 > "$FAN_PATH/pwm1_enable" + + # Set fan script execution in crontab + grep -s -q fan_ctrl.sh /etc/crontabs/root && exit 0 + + echo "# dlink fan script runs every 5 minutes" >> /etc/crontabs/root + echo "*/5 * * * * /sbin/fan_ctrl.sh" >> /etc/crontabs/root + + # Execute one time after initial flash (instead of waiting 5 min for cron) + /sbin/fan_ctrl.sh + ;; +esac + +exit 0 diff --git a/target/linux/realtek/base-files/sbin/fan_ctrl.sh b/target/linux/realtek/base-files/sbin/fan_ctrl.sh new file mode 100755 index 0000000000..e7b661d7bb --- /dev/null +++ b/target/linux/realtek/base-files/sbin/fan_ctrl.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +PSU_TEMP=$(cut -c1-2 /sys/class/hwmon/hwmon0/temp1_input) + +FAN_CTRL='/sys/class/hwmon/hwmon0/pwm1' + +PSU_THRESH=51000 + +if [ "$PSU_TEMP" -ge "$PSU_THRESH" ];then + echo "250" > $FAN_CTRL +else + echo "156" > $FAN_CTRL +fi diff --git a/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28.dts b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28.dts index 0bcb196b7c..29ff8153fb 100644 --- a/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28.dts +++ b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28.dts @@ -3,6 +3,7 @@ #include "rtl838x.dtsi" #include "rtl83xx_d-link_dgs-1210_common.dtsi" #include "rtl83xx_d-link_dgs-1210_gpio.dtsi" +#include "rtl83xx_d-link_dgs-1210_gpio_sfp.dtsi" #include "rtl8382_d-link_dgs-1210-28_common.dtsi" / { diff --git a/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28_common.dtsi b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28_common.dtsi index 17866d5f03..d5b984b0a6 100644 --- a/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28_common.dtsi +++ b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28_common.dtsi @@ -34,10 +34,11 @@ EXTERNAL_PHY(22) EXTERNAL_PHY(23) - EXTERNAL_SFP_PHY(24) - EXTERNAL_SFP_PHY(25) - EXTERNAL_SFP_PHY(26) - EXTERNAL_SFP_PHY(27) + /* External phy RTL8214FC */ + EXTERNAL_SFP_PHY_FULL(24, 0) + EXTERNAL_SFP_PHY_FULL(25, 1) + EXTERNAL_SFP_PHY_FULL(26, 2) + EXTERNAL_SFP_PHY_FULL(27, 3) }; }; diff --git a/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28mp-f.dts b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28mp-f.dts index ce008229b3..4c20a4ae6e 100644 --- a/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28mp-f.dts +++ b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28mp-f.dts @@ -3,11 +3,28 @@ #include "rtl838x.dtsi" #include "rtl83xx_d-link_dgs-1210_common.dtsi" #include "rtl83xx_d-link_dgs-1210_gpio.dtsi" +#include "rtl83xx_d-link_dgs-1210_gpio_sfp.dtsi" #include "rtl8382_d-link_dgs-1210-28_common.dtsi" / { compatible = "d-link,dgs-1210-28mp-f", "realtek,rtl8382-soc", "realtek,rtl838x-soc"; model = "D-Link DGS-1210-28MP F"; + + /* LM63 */ + i2c-gpio-4 { + compatible = "i2c-gpio"; + sda-gpios = <&gpio1 32 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + scl-gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>; + i2c-gpio,delay-us = <2>; + i2c-gpio,scl-open-drain; /* should be replaced by i2c-gpio,scl-has-no-pullup in kernel 6.6 */ + #address-cells = <1>; + #size-cells = <0>; + + lm63@4c { + compatible = "national,lm63"; + reg = <0x4c>; + }; + }; }; &leds { diff --git a/target/linux/realtek/dts/rtl8393_d-link_dgs-1210-52.dts b/target/linux/realtek/dts/rtl8393_d-link_dgs-1210-52.dts index 5b876e7c43..3ddf56f4f5 100644 --- a/target/linux/realtek/dts/rtl8393_d-link_dgs-1210-52.dts +++ b/target/linux/realtek/dts/rtl8393_d-link_dgs-1210-52.dts @@ -3,7 +3,7 @@ #include "rtl839x.dtsi" #include "rtl83xx_d-link_dgs-1210_common.dtsi" #include "rtl83xx_d-link_dgs-1210_gpio.dtsi" -#include "rtl839x_d-link_dgs-1210_gpio.dtsi" +#include "rtl83xx_d-link_dgs-1210_gpio_sfp.dtsi" / { compatible = "d-link,dgs-1210-52", "realtek,rtl8393-soc"; diff --git a/target/linux/realtek/dts/rtl839x_d-link_dgs-1210_gpio.dtsi b/target/linux/realtek/dts/rtl83xx_d-link_dgs-1210_gpio_sfp.dtsi similarity index 100% rename from target/linux/realtek/dts/rtl839x_d-link_dgs-1210_gpio.dtsi rename to target/linux/realtek/dts/rtl83xx_d-link_dgs-1210_gpio_sfp.dtsi diff --git a/target/linux/realtek/image/rtl838x.mk b/target/linux/realtek/image/rtl838x.mk index 05574e5375..c44e3a74f7 100644 --- a/target/linux/realtek/image/rtl838x.mk +++ b/target/linux/realtek/image/rtl838x.mk @@ -71,7 +71,7 @@ define Device/d-link_dgs-1210-28mp-f SOC := rtl8382 DEVICE_MODEL := DGS-1210-28MP DEVICE_VARIANT := F - DEVICE_PACKAGES += realtek-poe + DEVICE_PACKAGES += realtek-poe kmod-hwmon-lm63 endef TARGET_DEVICES += d-link_dgs-1210-28mp-f diff --git a/target/linux/rockchip/patches-6.6/035-v6.7-usb-dwc3-add-optional-PHY-interface-clocks.patch b/target/linux/rockchip/patches-6.6/035-v6.7-usb-dwc3-add-optional-PHY-interface-clocks.patch index 1b82072933..0583b70f89 100644 --- a/target/linux/rockchip/patches-6.6/035-v6.7-usb-dwc3-add-optional-PHY-interface-clocks.patch +++ b/target/linux/rockchip/patches-6.6/035-v6.7-usb-dwc3-add-optional-PHY-interface-clocks.patch @@ -48,7 +48,7 @@ Signed-off-by: Greg Kroah-Hartman clk_disable_unprepare(dwc->susp_clk); clk_disable_unprepare(dwc->ref_clk); clk_disable_unprepare(dwc->bus_clk); -@@ -1863,6 +1877,20 @@ static int dwc3_get_clocks(struct dwc3 * +@@ -1878,6 +1892,20 @@ static int dwc3_get_clocks(struct dwc3 * } } @@ -71,7 +71,7 @@ Signed-off-by: Greg Kroah-Hartman --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h -@@ -996,6 +996,8 @@ struct dwc3_scratchpad_array { +@@ -997,6 +997,8 @@ struct dwc3_scratchpad_array { * @bus_clk: clock for accessing the registers * @ref_clk: reference clock * @susp_clk: clock used when the SS phy is in low power (S3) state @@ -80,7 +80,7 @@ Signed-off-by: Greg Kroah-Hartman * @reset: reset control * @regs: base address for our registers * @regs_size: address space size -@@ -1166,6 +1168,8 @@ struct dwc3 { +@@ -1167,6 +1169,8 @@ struct dwc3 { struct clk *bus_clk; struct clk *ref_clk; struct clk *susp_clk; diff --git a/target/linux/sifiveu/patches-6.6/0005-riscv-sifive-unleashed-define-opp-table-cpufreq.patch b/target/linux/sifiveu/patches-6.6/0005-riscv-sifive-unleashed-define-opp-table-cpufreq.patch index f9ec6c4f82..90dcb0e3e4 100644 --- a/target/linux/sifiveu/patches-6.6/0005-riscv-sifive-unleashed-define-opp-table-cpufreq.patch +++ b/target/linux/sifiveu/patches-6.6/0005-riscv-sifive-unleashed-define-opp-table-cpufreq.patch @@ -14,7 +14,7 @@ Signed-off-by: David Abdurachmanov --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig -@@ -896,6 +896,14 @@ config PORTABLE +@@ -897,6 +897,14 @@ config PORTABLE select MMU select OF diff --git a/target/linux/starfive/patches-6.6/0001-clk-starfive-jh7110-sys-Fix-lower-rate-of-CPUfreq-by.patch b/target/linux/starfive/patches-6.6/0001-clk-starfive-jh7110-sys-Fix-lower-rate-of-CPUfreq-by.patch index d21f5efebb..e98e6dfaaf 100644 --- a/target/linux/starfive/patches-6.6/0001-clk-starfive-jh7110-sys-Fix-lower-rate-of-CPUfreq-by.patch +++ b/target/linux/starfive/patches-6.6/0001-clk-starfive-jh7110-sys-Fix-lower-rate-of-CPUfreq-by.patch @@ -20,7 +20,7 @@ Signed-off-by: Xingyu Wu --- a/drivers/clk/starfive/clk-starfive-jh7110-sys.c +++ b/drivers/clk/starfive/clk-starfive-jh7110-sys.c -@@ -501,7 +501,52 @@ static int __init jh7110_syscrg_probe(st +@@ -530,7 +530,52 @@ static int __init jh7110_syscrg_probe(st if (ret) return ret; diff --git a/target/linux/starfive/patches-6.6/0010-crypto-starfive-RSA-poll-csr-for-done-status.patch b/target/linux/starfive/patches-6.6/0010-crypto-starfive-RSA-poll-csr-for-done-status.patch index c94009d4ff..5e353e35ad 100644 --- a/target/linux/starfive/patches-6.6/0010-crypto-starfive-RSA-poll-csr-for-done-status.patch +++ b/target/linux/starfive/patches-6.6/0010-crypto-starfive-RSA-poll-csr-for-done-status.patch @@ -42,7 +42,7 @@ Signed-off-by: Herbert Xu return irq; --- a/drivers/crypto/starfive/jh7110-cryp.h +++ b/drivers/crypto/starfive/jh7110-cryp.h -@@ -125,6 +125,15 @@ union starfive_pka_cacr { +@@ -126,6 +126,15 @@ union starfive_pka_cacr { }; }; @@ -58,7 +58,7 @@ Signed-off-by: Herbert Xu struct starfive_rsa_key { u8 *n; u8 *e; -@@ -183,7 +192,6 @@ struct starfive_cryp_dev { +@@ -184,7 +193,6 @@ struct starfive_cryp_dev { struct crypto_engine *engine; struct tasklet_struct aes_done; struct tasklet_struct hash_done; @@ -99,8 +99,8 @@ Signed-off-by: Herbert Xu +/* A * A * R mod N ==> A */ #define CRYPTO_CMD_AARN 0x7 - #define STARFIVE_RSA_MAX_KEYSZ 256 -@@ -43,21 +37,10 @@ + #define STARFIVE_RSA_RESET 0x2 +@@ -42,21 +36,10 @@ static inline int starfive_pka_wait_done(struct starfive_cryp_ctx *ctx) { struct starfive_cryp_dev *cryp = ctx->cryp; @@ -125,7 +125,7 @@ Signed-off-by: Herbert Xu } static void starfive_rsa_free_key(struct starfive_rsa_key *key) -@@ -114,10 +97,9 @@ static int starfive_rsa_montgomery_form( +@@ -113,10 +96,9 @@ static int starfive_rsa_montgomery_form( rctx->csr.pka.not_r2 = 1; rctx->csr.pka.ie = 1; @@ -137,7 +137,7 @@ Signed-off-by: Herbert Xu return -ETIMEDOUT; for (loop = 0; loop <= opsize; loop++) -@@ -136,10 +118,9 @@ static int starfive_rsa_montgomery_form( +@@ -135,10 +117,9 @@ static int starfive_rsa_montgomery_form( rctx->csr.pka.start = 1; rctx->csr.pka.ie = 1; @@ -149,7 +149,7 @@ Signed-off-by: Herbert Xu return -ETIMEDOUT; } else { rctx->csr.pka.v = 0; -@@ -151,10 +132,9 @@ static int starfive_rsa_montgomery_form( +@@ -150,10 +131,9 @@ static int starfive_rsa_montgomery_form( rctx->csr.pka.pre_expf = 1; rctx->csr.pka.ie = 1; @@ -161,7 +161,7 @@ Signed-off-by: Herbert Xu return -ETIMEDOUT; for (loop = 0; loop <= count; loop++) -@@ -172,10 +152,9 @@ static int starfive_rsa_montgomery_form( +@@ -171,10 +151,9 @@ static int starfive_rsa_montgomery_form( rctx->csr.pka.start = 1; rctx->csr.pka.ie = 1; @@ -173,7 +173,7 @@ Signed-off-by: Herbert Xu return -ETIMEDOUT; } -@@ -226,11 +205,10 @@ static int starfive_rsa_cpu_start(struct +@@ -225,11 +204,10 @@ static int starfive_rsa_cpu_start(struct rctx->csr.pka.start = 1; rctx->csr.pka.ie = 1; @@ -186,7 +186,7 @@ Signed-off-by: Herbert Xu goto rsa_err; if (mlen) { -@@ -242,10 +220,9 @@ static int starfive_rsa_cpu_start(struct +@@ -241,10 +219,9 @@ static int starfive_rsa_cpu_start(struct rctx->csr.pka.start = 1; rctx->csr.pka.ie = 1; diff --git a/target/linux/starfive/patches-6.6/0012-crypto-starfive-Remove-cfb-and-ofb.patch b/target/linux/starfive/patches-6.6/0012-crypto-starfive-Remove-cfb-and-ofb.patch index f376edb60e..102fbabf37 100644 --- a/target/linux/starfive/patches-6.6/0012-crypto-starfive-Remove-cfb-and-ofb.patch +++ b/target/linux/starfive/patches-6.6/0012-crypto-starfive-Remove-cfb-and-ofb.patch @@ -114,7 +114,7 @@ Signed-off-by: Herbert Xu .cra_module = THIS_MODULE, --- a/drivers/crypto/starfive/jh7110-cryp.h +++ b/drivers/crypto/starfive/jh7110-cryp.h -@@ -50,8 +50,6 @@ union starfive_aes_csr { +@@ -51,8 +51,6 @@ union starfive_aes_csr { u32 ccm_start :1; #define STARFIVE_AES_MODE_ECB 0x0 #define STARFIVE_AES_MODE_CBC 0x1 diff --git a/target/linux/starfive/patches-6.6/0013-crypto-starfive-Remove-unneeded-NULL-checks.patch b/target/linux/starfive/patches-6.6/0013-crypto-starfive-Remove-unneeded-NULL-checks.patch index 2044b72a35..2e12cfa09e 100644 --- a/target/linux/starfive/patches-6.6/0013-crypto-starfive-Remove-unneeded-NULL-checks.patch +++ b/target/linux/starfive/patches-6.6/0013-crypto-starfive-Remove-unneeded-NULL-checks.patch @@ -15,7 +15,7 @@ Signed-off-by: Herbert Xu --- a/drivers/crypto/starfive/jh7110-rsa.c +++ b/drivers/crypto/starfive/jh7110-rsa.c -@@ -45,12 +45,9 @@ static inline int starfive_pka_wait_done +@@ -44,12 +44,9 @@ static inline int starfive_pka_wait_done static void starfive_rsa_free_key(struct starfive_rsa_key *key) {