From 230c6f44ab8f00f06b26d19ec8aa6bb7b46072f8 Mon Sep 17 00:00:00 2001 From: Shiji Yang Date: Tue, 6 May 2025 19:30:52 +0800 Subject: [PATCH] ipq40xx: refresh 6.12 kernel patches Remove upstreamed: 004-v6.7-firmware-qcom_scm-disable-SDI-if-required.patch [1] 709-ARM-dts-qcom-ipq4019-add-QCA8075-PHY-Package-nodes.patch [2] Manually rebased: 422-firmware-qcom-scm-fix-SCM-cold-boot-address.patch 701-net-dsa-add-out-of-band-tagging-protocol.patch 850-soc-add-qualcomm-syscon.patch 900-PCI-qcom-add-hack-compatible-for-ipq4019-Lantiq-DSL.patch 910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=ff4aa3bc98258a240b9bbab53fd8d2fb8184c485 [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=2338f4315f16b937e924ff679b91bb8c0ab53f25 Signed-off-by: Shiji Yang Link: https://github.com/openwrt/openwrt/pull/18725 Signed-off-by: Hauke Mehrtens --- ...are-qcom_scm-disable-SDI-if-required.patch | 83 ------------------- ...e-qcom-scm-fix-SCM-cold-boot-address.patch | 14 ++-- ...introduce-the-Qualcomm-IPQESS-driver.patch | 4 +- ...dsa-add-out-of-band-tagging-protocol.patch | 36 ++++---- ...4019-Add-description-for-the-IPQESS-.patch | 2 +- ...-add-IPQ4019-built-in-switch-support.patch | 4 +- .../707-arm-dts-ipq4019-add-switch-node.patch | 2 +- ...pq4019-add-QCA8075-PHY-Package-nodes.patch | 67 --------------- ...0-arm-dts-ipq4019-QCA807x-properties.patch | 2 +- .../850-soc-add-qualcomm-syscon.patch | 10 +-- ...ck-compatible-for-ipq4019-Lantiq-DSL.patch | 20 ++--- ...qcom_scm-Clear-download-bit-during-r.patch | 12 +-- 12 files changed, 53 insertions(+), 203 deletions(-) delete mode 100644 target/linux/ipq40xx/patches-6.12/004-v6.7-firmware-qcom_scm-disable-SDI-if-required.patch delete mode 100644 target/linux/ipq40xx/patches-6.12/709-ARM-dts-qcom-ipq4019-add-QCA8075-PHY-Package-nodes.patch diff --git a/target/linux/ipq40xx/patches-6.12/004-v6.7-firmware-qcom_scm-disable-SDI-if-required.patch b/target/linux/ipq40xx/patches-6.12/004-v6.7-firmware-qcom_scm-disable-SDI-if-required.patch deleted file mode 100644 index 747ba7f2850..00000000000 --- a/target/linux/ipq40xx/patches-6.12/004-v6.7-firmware-qcom_scm-disable-SDI-if-required.patch +++ /dev/null @@ -1,83 +0,0 @@ -From ff4aa3bc98258a240b9bbab53fd8d2fb8184c485 Mon Sep 17 00:00:00 2001 -From: Robert Marko -Date: Wed, 16 Aug 2023 18:45:39 +0200 -Subject: [PATCH] firmware: qcom_scm: disable SDI if required - -IPQ5018 has SDI (Secure Debug Image) enabled by TZ by default, and that -means that WDT being asserted or just trying to reboot will hang the board -in the debug mode and only pulling the power and repowering will help. -Some IPQ4019 boards like Google WiFI have it enabled as well. - -Luckily, SDI can be disabled via an SCM call. - -So, lets use the boolean DT property to identify boards that have SDI -enabled by default and use the SCM call to disable SDI during SCM probe. -It is important to disable it as soon as possible as we might have a WDT -assertion at any time which would then leave the board in debug mode, -thus disabling it during SCM removal is not enough. - -Signed-off-by: Robert Marko -Reviewed-by: Guru Das Srinagesh -Link: https://lore.kernel.org/r/20230816164641.3371878-2-robimarko@gmail.com -Signed-off-by: Bjorn Andersson ---- - drivers/firmware/qcom_scm.c | 30 ++++++++++++++++++++++++++++++ - drivers/firmware/qcom_scm.h | 1 + - 2 files changed, 31 insertions(+) - ---- a/drivers/firmware/qcom_scm.c -+++ b/drivers/firmware/qcom_scm.c -@@ -410,6 +410,29 @@ int qcom_scm_set_remote_state(u32 state, - } - EXPORT_SYMBOL_GPL(qcom_scm_set_remote_state); - -+static int qcom_scm_disable_sdi(void) -+{ -+ int ret; -+ struct qcom_scm_desc desc = { -+ .svc = QCOM_SCM_SVC_BOOT, -+ .cmd = QCOM_SCM_BOOT_SDI_CONFIG, -+ .args[0] = 1, /* Disable watchdog debug */ -+ .args[1] = 0, /* Disable SDI */ -+ .arginfo = QCOM_SCM_ARGS(2), -+ .owner = ARM_SMCCC_OWNER_SIP, -+ }; -+ struct qcom_scm_res res; -+ -+ ret = qcom_scm_clk_enable(); -+ if (ret) -+ return ret; -+ ret = qcom_scm_call(__scm->dev, &desc, &res); -+ -+ qcom_scm_clk_disable(); -+ -+ return ret ? : res.result[0]; -+} -+ - static int __qcom_scm_set_dload_mode(struct device *dev, bool enable) - { - struct qcom_scm_desc desc = { -@@ -1474,6 +1497,13 @@ static int qcom_scm_probe(struct platfor - - __get_convention(); - -+ -+ /* -+ * Disable SDI if indicated by DT that it is enabled by default. -+ */ -+ if (of_property_read_bool(pdev->dev.of_node, "qcom,sdi-enabled")) -+ qcom_scm_disable_sdi(); -+ - /* - * If requested enable "download mode", from this point on warmboot - * will cause the boot stages to enter download mode, unless ---- a/drivers/firmware/qcom_scm.h -+++ b/drivers/firmware/qcom_scm.h -@@ -80,6 +80,7 @@ extern int scm_legacy_call(struct device - #define QCOM_SCM_SVC_BOOT 0x01 - #define QCOM_SCM_BOOT_SET_ADDR 0x01 - #define QCOM_SCM_BOOT_TERMINATE_PC 0x02 -+#define QCOM_SCM_BOOT_SDI_CONFIG 0x09 - #define QCOM_SCM_BOOT_SET_DLOAD_MODE 0x10 - #define QCOM_SCM_BOOT_SET_ADDR_MC 0x11 - #define QCOM_SCM_BOOT_SET_REMOTE_STATE 0x0a diff --git a/target/linux/ipq40xx/patches-6.12/422-firmware-qcom-scm-fix-SCM-cold-boot-address.patch b/target/linux/ipq40xx/patches-6.12/422-firmware-qcom-scm-fix-SCM-cold-boot-address.patch index 1c8cfb29811..b21d0729d68 100644 --- a/target/linux/ipq40xx/patches-6.12/422-firmware-qcom-scm-fix-SCM-cold-boot-address.patch +++ b/target/linux/ipq40xx/patches-6.12/422-firmware-qcom-scm-fix-SCM-cold-boot-address.patch @@ -11,12 +11,12 @@ This fixes SMP support for Google WiFi. Signed-off-by: Brian Norris --- - drivers/firmware/qcom_scm-legacy.c | 62 +++++++++++++++++++++++++----- - drivers/firmware/qcom_scm.c | 11 ++++++ + drivers/firmware/qcom/qcom_scm-legacy.c | 62 +++++++++++++++++++++++++----- + drivers/firmware/qcom/qcom_scm.c | 11 ++++++ 2 files changed, 63 insertions(+), 10 deletions(-) ---- a/drivers/firmware/qcom_scm-legacy.c -+++ b/drivers/firmware/qcom_scm-legacy.c +--- a/drivers/firmware/qcom/qcom_scm-legacy.c ++++ b/drivers/firmware/qcom/qcom_scm-legacy.c @@ -13,6 +13,9 @@ #include #include @@ -116,9 +116,9 @@ Signed-off-by: Brian Norris kfree(cmd); return ret; } ---- a/drivers/firmware/qcom_scm.c -+++ b/drivers/firmware/qcom_scm.c -@@ -315,6 +315,17 @@ static int qcom_scm_set_boot_addr(void * +--- a/drivers/firmware/qcom/qcom_scm.c ++++ b/drivers/firmware/qcom/qcom_scm.c +@@ -391,6 +391,17 @@ static int qcom_scm_set_boot_addr(void * desc.args[0] = flags; desc.args[1] = virt_to_phys(entry); diff --git a/target/linux/ipq40xx/patches-6.12/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch b/target/linux/ipq40xx/patches-6.12/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch index 447e1898ff1..337e440d914 100644 --- a/target/linux/ipq40xx/patches-6.12/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch +++ b/target/linux/ipq40xx/patches-6.12/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch @@ -32,7 +32,7 @@ Signed-off-by: Maxime Chevallier --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -17718,6 +17718,13 @@ L: netdev@vger.kernel.org +@@ -19025,6 +19025,13 @@ L: netdev@vger.kernel.org S: Maintained F: drivers/net/ethernet/qualcomm/emac/ @@ -45,7 +45,7 @@ Signed-off-by: Maxime Chevallier + QUALCOMM ETHQOS ETHERNET DRIVER M: Vinod Koul - R: Bhupesh Sharma + L: netdev@vger.kernel.org --- a/drivers/net/ethernet/qualcomm/Kconfig +++ b/drivers/net/ethernet/qualcomm/Kconfig @@ -61,6 +61,17 @@ config QCOM_EMAC diff --git a/target/linux/ipq40xx/patches-6.12/701-net-dsa-add-out-of-band-tagging-protocol.patch b/target/linux/ipq40xx/patches-6.12/701-net-dsa-add-out-of-band-tagging-protocol.patch index dc70104b1c0..65229c9d0dd 100644 --- a/target/linux/ipq40xx/patches-6.12/701-net-dsa-add-out-of-band-tagging-protocol.patch +++ b/target/linux/ipq40xx/patches-6.12/701-net-dsa-add-out-of-band-tagging-protocol.patch @@ -35,7 +35,7 @@ Signed-off-by: Maxime Chevallier --- a/Documentation/networking/dsa/dsa.rst +++ b/Documentation/networking/dsa/dsa.rst -@@ -66,7 +66,8 @@ Switch tagging protocols +@@ -70,7 +70,8 @@ Switch tagging protocols ------------------------ DSA supports many vendor-specific tagging protocols, one software-defined @@ -45,9 +45,9 @@ Signed-off-by: Maxime Chevallier The exact format of the tag protocol is vendor specific, but in general, they all contain something which: -@@ -217,6 +218,16 @@ receive all frames regardless of the val - setting the ``promisc_on_master`` property of the ``struct dsa_device_ops``. - Note that this assumes a DSA-unaware master driver, which is the norm. +@@ -221,6 +222,16 @@ receive all frames regardless of the val + setting the ``promisc_on_conduit`` property of the ``struct dsa_device_ops``. + Note that this assumes a DSA-unaware conduit driver, which is the norm. +Some SoCs have a tight integration between the conduit network interface and the +embedded switch, such that the DSA tag isn't transmitted in the packet data, @@ -59,12 +59,12 @@ Signed-off-by: Maxime Chevallier +top-most switch in the tree. The tagger (``DSA_TAG_PROTO_OOB``) uses skb +extensions to transmit the tag to and from the MAC driver. + - Master network devices - ---------------------- + Conduit network devices + ----------------------- --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -17724,6 +17724,7 @@ L: netdev@vger.kernel.org +@@ -19031,6 +19031,7 @@ L: netdev@vger.kernel.org S: Maintained F: Documentation/devicetree/bindings/net/qcom,ipq4019-ess-edma.yaml F: drivers/net/ethernet/qualcomm/ipqess/ @@ -93,7 +93,7 @@ Signed-off-by: Maxime Chevallier +#endif --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -4683,6 +4683,9 @@ enum skb_ext_id { +@@ -4769,6 +4769,9 @@ enum skb_ext_id { #if IS_ENABLED(CONFIG_MCTP_FLOWS) SKB_EXT_MCTP, #endif @@ -105,27 +105,27 @@ Signed-off-by: Maxime Chevallier --- a/include/net/dsa.h +++ b/include/net/dsa.h -@@ -56,6 +56,7 @@ struct phylink_link_state; - #define DSA_TAG_PROTO_RTL8_4T_VALUE 25 - #define DSA_TAG_PROTO_RZN1_A5PSW_VALUE 26 +@@ -55,6 +55,7 @@ struct tc_action; #define DSA_TAG_PROTO_LAN937X_VALUE 27 -+#define DSA_TAG_PROTO_OOB_VALUE 28 + #define DSA_TAG_PROTO_VSC73XX_8021Q_VALUE 28 + #define DSA_TAG_PROTO_BRCM_LEGACY_FCS_VALUE 29 ++#define DSA_TAG_PROTO_OOB_VALUE 30 enum dsa_tag_protocol { DSA_TAG_PROTO_NONE = DSA_TAG_PROTO_NONE_VALUE, -@@ -86,6 +87,7 @@ enum dsa_tag_protocol { - DSA_TAG_PROTO_RTL8_4T = DSA_TAG_PROTO_RTL8_4T_VALUE, +@@ -87,6 +88,7 @@ enum dsa_tag_protocol { DSA_TAG_PROTO_RZN1_A5PSW = DSA_TAG_PROTO_RZN1_A5PSW_VALUE, DSA_TAG_PROTO_LAN937X = DSA_TAG_PROTO_LAN937X_VALUE, + DSA_TAG_PROTO_VSC73XX_8021Q = DSA_TAG_PROTO_VSC73XX_8021Q_VALUE, + DSA_TAG_PROTO_OOB = DSA_TAG_PROTO_OOB_VALUE, }; struct dsa_switch; --- a/net/core/skbuff.c +++ b/net/core/skbuff.c -@@ -63,8 +63,12 @@ - #include +@@ -65,8 +65,12 @@ #include + #include #include +#ifdef CONFIG_NET_DSA_TAG_OOB +#include @@ -136,7 +136,7 @@ Signed-off-by: Maxime Chevallier #include #include #include -@@ -4823,6 +4827,9 @@ static const u8 skb_ext_type_len[] = { +@@ -5068,6 +5072,9 @@ static const u8 skb_ext_type_len[] = { #if IS_ENABLED(CONFIG_MCTP_FLOWS) [SKB_EXT_MCTP] = SKB_EXT_CHUNKSIZEOF(struct mctp_flow), #endif @@ -148,7 +148,7 @@ Signed-off-by: Maxime Chevallier static __always_inline unsigned int skb_ext_total_length(void) --- a/net/dsa/Kconfig +++ b/net/dsa/Kconfig -@@ -119,6 +119,15 @@ config NET_DSA_TAG_OCELOT_8021Q +@@ -131,6 +131,15 @@ config NET_DSA_TAG_OCELOT_8021Q this mode, less TCAM resources (VCAP IS1, IS2, ES0) are available for use with tc-flower. diff --git a/target/linux/ipq40xx/patches-6.12/705-ARM-dts-qcom-ipq4019-Add-description-for-the-IPQESS-.patch b/target/linux/ipq40xx/patches-6.12/705-ARM-dts-qcom-ipq4019-Add-description-for-the-IPQESS-.patch index 6b66393d827..3fea0cce550 100644 --- a/target/linux/ipq40xx/patches-6.12/705-ARM-dts-qcom-ipq4019-Add-description-for-the-IPQESS-.patch +++ b/target/linux/ipq40xx/patches-6.12/705-ARM-dts-qcom-ipq4019-Add-description-for-the-IPQESS-.patch @@ -21,7 +21,7 @@ Reviewed-by: Krzysztof Kozlowski --- a/arch/arm/boot/dts/qcom/qcom-ipq4019.dtsi +++ b/arch/arm/boot/dts/qcom/qcom-ipq4019.dtsi -@@ -596,6 +596,54 @@ +@@ -600,6 +600,54 @@ status = "disabled"; }; diff --git a/target/linux/ipq40xx/patches-6.12/706-net-dsa-qca8k-add-IPQ4019-built-in-switch-support.patch b/target/linux/ipq40xx/patches-6.12/706-net-dsa-qca8k-add-IPQ4019-built-in-switch-support.patch index b2f42b9fd14..c1e46cb4ad6 100644 --- a/target/linux/ipq40xx/patches-6.12/706-net-dsa-qca8k-add-IPQ4019-built-in-switch-support.patch +++ b/target/linux/ipq40xx/patches-6.12/706-net-dsa-qca8k-add-IPQ4019-built-in-switch-support.patch @@ -67,7 +67,7 @@ Signed-off-by: Robert Marko mask = QCA8K_VTU_FUNC0_EG_MODE_PORT_NOT(i); if ((reg & mask) != mask) { -@@ -624,7 +624,7 @@ static int qca8k_update_port_member(stru +@@ -623,7 +623,7 @@ static int qca8k_update_port_member(stru u32 port_mask = BIT(dp->cpu_dp->index); int i, ret; @@ -1111,7 +1111,7 @@ Signed-off-by: Robert Marko enum { QCA8K_PORT_SPEED_10M = 0, QCA8K_PORT_SPEED_100M = 1, -@@ -467,6 +519,10 @@ struct qca8k_priv { +@@ -468,6 +520,10 @@ struct qca8k_priv { struct qca8k_pcs pcs_port_6; const struct qca8k_match_data *info; struct qca8k_led ports_led[QCA8K_LED_COUNT]; diff --git a/target/linux/ipq40xx/patches-6.12/707-arm-dts-ipq4019-add-switch-node.patch b/target/linux/ipq40xx/patches-6.12/707-arm-dts-ipq4019-add-switch-node.patch index 130cc52fbef..bd41ceac167 100644 --- a/target/linux/ipq40xx/patches-6.12/707-arm-dts-ipq4019-add-switch-node.patch +++ b/target/linux/ipq40xx/patches-6.12/707-arm-dts-ipq4019-add-switch-node.patch @@ -13,7 +13,7 @@ Signed-off-by: Robert Marko --- a/arch/arm/boot/dts/qcom/qcom-ipq4019.dtsi +++ b/arch/arm/boot/dts/qcom/qcom-ipq4019.dtsi -@@ -596,6 +596,82 @@ +@@ -600,6 +600,82 @@ status = "disabled"; }; diff --git a/target/linux/ipq40xx/patches-6.12/709-ARM-dts-qcom-ipq4019-add-QCA8075-PHY-Package-nodes.patch b/target/linux/ipq40xx/patches-6.12/709-ARM-dts-qcom-ipq4019-add-QCA8075-PHY-Package-nodes.patch deleted file mode 100644 index 50c8e645342..00000000000 --- a/target/linux/ipq40xx/patches-6.12/709-ARM-dts-qcom-ipq4019-add-QCA8075-PHY-Package-nodes.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 5ac078c8fe18f3e8318547b8ed0ed782730c5039 Mon Sep 17 00:00:00 2001 -From: Christian Marangi -Date: Sat, 10 Feb 2024 22:28:27 +0100 -Subject: [PATCH] ARM: dts: qcom: ipq4019: add QCA8075 PHY Package nodes - -Add QCA8075 PHY Package nodes. The PHY nodes that were previously -defined never worked and actually never had a driver to correctly setup -these PHY. Now that we have a correct driver, correctly add the PHY -Package node and set the default value of 300mw for tx driver strength -following specification of ipq4019 SoC. - -Signed-off-by: Christian Marangi ---- - arch/arm/boot/dts//qcom-ipq4019.dtsi | 35 +++++++++++++++--------- - 1 file changed, 22 insertions(+), 13 deletions(-) - ---- a/arch/arm/boot/dts/qcom/qcom-ipq4019.dtsi -+++ b/arch/arm/boot/dts/qcom/qcom-ipq4019.dtsi -@@ -727,24 +727,33 @@ - reg = <0x90000 0x64>; - status = "disabled"; - -- ethphy0: ethernet-phy@0 { -+ qca807x: ethernet-phy-package@0 { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ compatible = "qcom,qca8075-package"; - reg = <0>; -- }; -- -- ethphy1: ethernet-phy@1 { -- reg = <1>; -- }; - -- ethphy2: ethernet-phy@2 { -- reg = <2>; -- }; -- -- ethphy3: ethernet-phy@3 { -- reg = <3>; -- }; -+ qcom,tx-drive-strength-milliwatt = <300>; - -- ethphy4: ethernet-phy@4 { -- reg = <4>; -+ ethphy0: ethernet-phy@0 { -+ reg = <0>; -+ }; -+ -+ ethphy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+ -+ ethphy2: ethernet-phy@2 { -+ reg = <2>; -+ }; -+ -+ ethphy3: ethernet-phy@3 { -+ reg = <3>; -+ }; -+ -+ ethphy4: ethernet-phy@4 { -+ reg = <4>; -+ }; - }; - }; - diff --git a/target/linux/ipq40xx/patches-6.12/710-arm-dts-ipq4019-QCA807x-properties.patch b/target/linux/ipq40xx/patches-6.12/710-arm-dts-ipq4019-QCA807x-properties.patch index 9f4c9fa67e0..749313cc542 100644 --- a/target/linux/ipq40xx/patches-6.12/710-arm-dts-ipq4019-QCA807x-properties.patch +++ b/target/linux/ipq40xx/patches-6.12/710-arm-dts-ipq4019-QCA807x-properties.patch @@ -12,7 +12,7 @@ Signed-off-by: Robert Marko --- a/arch/arm/boot/dts/qcom/qcom-ipq4019.dtsi +++ b/arch/arm/boot/dts/qcom/qcom-ipq4019.dtsi -@@ -754,6 +754,10 @@ +@@ -758,6 +758,10 @@ ethphy4: ethernet-phy@4 { reg = <4>; }; diff --git a/target/linux/ipq40xx/patches-6.12/850-soc-add-qualcomm-syscon.patch b/target/linux/ipq40xx/patches-6.12/850-soc-add-qualcomm-syscon.patch index 7cd473b24eb..579a8cccfb7 100644 --- a/target/linux/ipq40xx/patches-6.12/850-soc-add-qualcomm-syscon.patch +++ b/target/linux/ipq40xx/patches-6.12/850-soc-add-qualcomm-syscon.patch @@ -2,9 +2,9 @@ From: Christian Lamparter Subject: SoC: add qualcomm syscon --- a/drivers/soc/qcom/Kconfig +++ b/drivers/soc/qcom/Kconfig -@@ -291,4 +291,11 @@ config QCOM_INLINE_CRYPTO_ENGINE - tristate - select QCOM_SCM +@@ -295,4 +295,11 @@ config QCOM_PBS + This module provides the APIs to the client drivers that wants to send the + PBS trigger event to the PBS RAM. +config QCOM_TCSR + tristate "QCOM Top Control and Status Registers" @@ -16,10 +16,10 @@ Subject: SoC: add qualcomm syscon endmenu --- a/drivers/soc/qcom/Makefile +++ b/drivers/soc/qcom/Makefile -@@ -32,3 +32,4 @@ obj-$(CONFIG_QCOM_KRYO_L2_ACCESSORS) += - obj-$(CONFIG_QCOM_ICC_BWMON) += icc-bwmon.o +@@ -39,3 +39,4 @@ obj-$(CONFIG_QCOM_ICC_BWMON) += icc-bwmo qcom_ice-objs += ice.o obj-$(CONFIG_QCOM_INLINE_CRYPTO_ENGINE) += qcom_ice.o + obj-$(CONFIG_QCOM_PBS) += qcom-pbs.o +obj-$(CONFIG_QCOM_TCSR) += qcom_tcsr.o --- /dev/null +++ b/drivers/soc/qcom/qcom_tcsr.c diff --git a/target/linux/ipq40xx/patches-6.12/900-PCI-qcom-add-hack-compatible-for-ipq4019-Lantiq-DSL.patch b/target/linux/ipq40xx/patches-6.12/900-PCI-qcom-add-hack-compatible-for-ipq4019-Lantiq-DSL.patch index af10fd57049..e16bb6fa20c 100644 --- a/target/linux/ipq40xx/patches-6.12/900-PCI-qcom-add-hack-compatible-for-ipq4019-Lantiq-DSL.patch +++ b/target/linux/ipq40xx/patches-6.12/900-PCI-qcom-add-hack-compatible-for-ipq4019-Lantiq-DSL.patch @@ -18,9 +18,9 @@ Signed-off-by: Florian Maurer --- a/drivers/pci/controller/dwc/pcie-qcom.c +++ b/drivers/pci/controller/dwc/pcie-qcom.c -@@ -184,11 +184,24 @@ struct qcom_pcie_resources_2_3_3 { +@@ -207,11 +207,24 @@ struct qcom_pcie_resources_2_3_3 { + }; - #define QCOM_PCIE_2_4_0_MAX_CLOCKS 4 #define QCOM_PCIE_2_4_0_MAX_RESETS 12 +/* + * This value is the manufacturer ID of Lantiq. The address where @@ -34,7 +34,7 @@ Signed-off-by: Florian Maurer +#define QCOM_PCIE_2_4_0_GRX500_VENDOR_ID 0x1bef +#define QCOM_PCIE_2_4_0_GRX500_DEVICE_ID 0x0030 struct qcom_pcie_resources_2_4_0 { - struct clk_bulk_data clks[QCOM_PCIE_2_4_0_MAX_CLOCKS]; + struct clk_bulk_data *clks; int num_clks; struct reset_control_bulk_data resets[QCOM_PCIE_2_4_0_MAX_RESETS]; int num_resets; @@ -42,8 +42,8 @@ Signed-off-by: Florian Maurer + dma_addr_t lantiq_hack_phys; }; - #define QCOM_PCIE_2_7_0_MAX_CLOCKS 15 -@@ -629,12 +642,65 @@ static int qcom_pcie_post_init_2_3_2(str + #define QCOM_PCIE_2_7_0_MAX_SUPPLIES 2 +@@ -711,12 +724,65 @@ static int qcom_pcie_post_init_2_3_2(str return 0; } @@ -109,8 +109,8 @@ Signed-off-by: Florian Maurer + of_device_is_compatible(dev->of_node, "qcom,pcie-ipq4019-lantiq-hack"); int ret; - res->clks[0].id = "aux"; -@@ -679,6 +745,17 @@ static void qcom_pcie_deinit_2_4_0(struc + res->num_clks = devm_clk_bulk_get_all(dev, &res->clks); +@@ -755,6 +821,17 @@ static void qcom_pcie_deinit_2_4_0(struc clk_bulk_disable_unprepare(res->num_clks, res->clks); } @@ -128,7 +128,7 @@ Signed-off-by: Florian Maurer static int qcom_pcie_init_2_4_0(struct qcom_pcie *pcie) { struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0; -@@ -1292,6 +1369,16 @@ static const struct qcom_pcie_ops ops_2_ +@@ -1336,6 +1413,16 @@ static const struct qcom_pcie_ops ops_2_ .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable, }; @@ -145,7 +145,7 @@ Signed-off-by: Florian Maurer /* Qcom IP rev.: 2.3.3 Synopsys IP rev.: 4.30a */ static const struct qcom_pcie_ops ops_2_3_3 = { .get_resources = qcom_pcie_get_resources_2_3_3, -@@ -1354,6 +1441,10 @@ static const struct qcom_pcie_cfg cfg_2_ +@@ -1403,6 +1490,10 @@ static const struct qcom_pcie_cfg cfg_2_ .ops = &ops_2_4_0, }; @@ -156,7 +156,7 @@ Signed-off-by: Florian Maurer static const struct qcom_pcie_cfg cfg_2_7_0 = { .ops = &ops_2_7_0, }; -@@ -1641,6 +1732,7 @@ static const struct of_device_id qcom_pc +@@ -1827,6 +1918,7 @@ static const struct of_device_id qcom_pc { .compatible = "qcom,pcie-apq8064", .data = &cfg_2_1_0 }, { .compatible = "qcom,pcie-apq8084", .data = &cfg_1_0_0 }, { .compatible = "qcom,pcie-ipq4019", .data = &cfg_2_4_0 }, diff --git a/target/linux/ipq40xx/patches-6.12/910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch b/target/linux/ipq40xx/patches-6.12/910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch index ab56c24a4d1..8a7b193e99e 100644 --- a/target/linux/ipq40xx/patches-6.12/910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch +++ b/target/linux/ipq40xx/patches-6.12/910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch @@ -10,18 +10,18 @@ is found. Signed-off-by: Robert Marko --- - drivers/firmware/qcom_scm.c | 3 ++- + drivers/firmware/qcom/qcom_scm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ---- a/drivers/firmware/qcom_scm.c -+++ b/drivers/firmware/qcom_scm.c -@@ -1529,7 +1529,8 @@ static int qcom_scm_probe(struct platfor +--- a/drivers/firmware/qcom/qcom_scm.c ++++ b/drivers/firmware/qcom/qcom_scm.c +@@ -2095,7 +2095,8 @@ err: static void qcom_scm_shutdown(struct platform_device *pdev) { /* Clean shutdown, disable download mode to allow normal restart */ -- qcom_scm_set_download_mode(false); +- qcom_scm_set_download_mode(QCOM_DLOAD_NODUMP); + if (download_mode) -+ qcom_scm_set_download_mode(false); ++ qcom_scm_set_download_mode(QCOM_DLOAD_NODUMP); } static const struct of_device_id qcom_scm_dt_match[] = {