qualcommax: 6.18: update patches

Refresh the remaining patches against 6.18. Most only needed new line
offsets. Seven needed real porting because the code they touch changed
upstream:

- 0113, 0114, 0188, 0805, 0808, 0812: qcom_mdt_load_no_init() no longer
  takes a pas_id argument, and qcom_mdt_load_no_init()'s MPD variant in
  0812 swaps its pas_init/dma_require/pas_id parameters. 0805 also moves
  from the removed platform_driver .remove_new to .remove.
- 0901 (Qualcomm CPR regulators): 6.18 added a cmp_int() macro to
  linux/sort.h that collides with the driver's local comparator, which is
  renamed cpr3_cmp_int().

Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
Link: https://github.com/openwrt/openwrt/pull/24031
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
This commit is contained in:
Julius Bairaktaris 2026-07-26 10:56:23 +02:00 committed by Jonas Jelonek
parent f9cfce5ee7
commit 97f8b0878d
No known key found for this signature in database
39 changed files with 109 additions and 108 deletions

View file

@ -29,7 +29,7 @@ Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
--- a/drivers/pwm/Kconfig
+++ b/drivers/pwm/Kconfig
@@ -319,6 +319,18 @@ config PWM_INTEL_LGM
@@ -337,6 +337,18 @@ config PWM_INTEL_LGM
To compile this driver as a module, choose M here: the module
will be called pwm-intel-lgm.
@ -50,7 +50,7 @@ Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
depends on MFD_IQS62X || COMPILE_TEST
--- a/drivers/pwm/Makefile
+++ b/drivers/pwm/Makefile
@@ -27,6 +27,7 @@ obj-$(CONFIG_PWM_IMX1) += pwm-imx1.o
@@ -28,6 +28,7 @@ obj-$(CONFIG_PWM_IMX1) += pwm-imx1.o
obj-$(CONFIG_PWM_IMX27) += pwm-imx27.o
obj-$(CONFIG_PWM_IMX_TPM) += pwm-imx-tpm.o
obj-$(CONFIG_PWM_INTEL_LGM) += pwm-intel-lgm.o

View file

@ -25,7 +25,7 @@ Signed-off-by: Bjorn Andersson <andersson@kernel.org>
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
@@ -416,6 +416,16 @@
@@ -413,6 +413,16 @@
reg = <0x0 0x01937000 0x0 0x21000>;
};

View file

@ -25,7 +25,7 @@ Signed-off-by: Bjorn Andersson <andersson@kernel.org>
#define CMN_PLL_REFCLK_SRC_SELECTION 0x28
#define CMN_PLL_REFCLK_SRC_DIV GENMASK(9, 8)
@@ -118,6 +119,12 @@ static const struct cmn_pll_fixed_output
@@ -117,6 +118,12 @@ static const struct cmn_pll_fixed_output
{ /* Sentinel */ }
};
@ -38,7 +38,7 @@ Signed-off-by: Bjorn Andersson <andersson@kernel.org>
static const struct cmn_pll_fixed_output_clk ipq5424_output_clks[] = {
CLK_PLL_OUTPUT(IPQ5424_XO_24MHZ_CLK, "xo-24mhz", 24000000UL),
CLK_PLL_OUTPUT(IPQ5424_SLEEP_32KHZ_CLK, "sleep-32khz", 32000UL),
@@ -449,6 +456,7 @@ static const struct dev_pm_ops ipq_cmn_p
@@ -448,6 +455,7 @@ static const struct dev_pm_ops ipq_cmn_p
static const struct of_device_id ipq_cmn_pll_clk_ids[] = {
{ .compatible = "qcom,ipq5018-cmn-pll", .data = &ipq5018_output_clks },
{ .compatible = "qcom,ipq5424-cmn-pll", .data = &ipq5424_output_clks },

View file

@ -25,7 +25,7 @@ Signed-off-by: Bjorn Andersson <andersson@kernel.org>
#define CMN_PLL_REFCLK_SRC_SELECTION 0x28
#define CMN_PLL_REFCLK_SRC_DIV GENMASK(9, 8)
@@ -125,6 +126,12 @@ static const struct cmn_pll_fixed_output
@@ -124,6 +125,12 @@ static const struct cmn_pll_fixed_output
{ /* Sentinel */ }
};
@ -38,7 +38,7 @@ Signed-off-by: Bjorn Andersson <andersson@kernel.org>
static const struct cmn_pll_fixed_output_clk ipq5424_output_clks[] = {
CLK_PLL_OUTPUT(IPQ5424_XO_24MHZ_CLK, "xo-24mhz", 24000000UL),
CLK_PLL_OUTPUT(IPQ5424_SLEEP_32KHZ_CLK, "sleep-32khz", 32000UL),
@@ -457,6 +464,7 @@ static const struct of_device_id ipq_cmn
@@ -456,6 +463,7 @@ static const struct of_device_id ipq_cmn
{ .compatible = "qcom,ipq5018-cmn-pll", .data = &ipq5018_output_clks },
{ .compatible = "qcom,ipq5424-cmn-pll", .data = &ipq5424_output_clks },
{ .compatible = "qcom,ipq6018-cmn-pll", .data = &ipq6018_output_clks },

View file

@ -28,7 +28,7 @@ Signed-off-by: Bjorn Andersson <andersson@kernel.org>
--- a/drivers/clk/qcom/ipq-cmn-pll.c
+++ b/drivers/clk/qcom/ipq-cmn-pll.c
@@ -200,7 +200,7 @@ static unsigned long clk_cmn_pll_recalc_
@@ -199,7 +199,7 @@ static unsigned long clk_cmn_pll_recalc_
unsigned long parent_rate)
{
struct clk_cmn_pll *cmn_pll = to_clk_cmn_pll(hw);
@ -37,7 +37,7 @@ Signed-off-by: Bjorn Andersson <andersson@kernel.org>
/*
* The value of CMN_PLL_DIVIDER_CTRL_FACTOR is automatically adjusted
@@ -208,8 +208,15 @@ static unsigned long clk_cmn_pll_recalc_
@@ -207,8 +207,15 @@ static unsigned long clk_cmn_pll_recalc_
*/
regmap_read(cmn_pll->regmap, CMN_PLL_DIVIDER_CTRL, &val);
factor = FIELD_GET(CMN_PLL_DIVIDER_CTRL_FACTOR, val);

View file

@ -24,7 +24,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
#include <linux/reset.h>
#include <linux/sfp.h>
#include <dt-bindings/net/qca-ar803x.h>
@@ -1089,6 +1090,7 @@ static void ipq5018_link_change_notify(s
@@ -1088,6 +1089,7 @@ static void ipq5018_link_change_notify(s
static int ipq5018_probe(struct phy_device *phydev)
{
struct device *dev = &phydev->mdio.dev;
@ -32,7 +32,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
struct ipq5018_priv *priv;
int ret;
@@ -1099,6 +1101,16 @@ static int ipq5018_probe(struct phy_devi
@@ -1098,6 +1100,16 @@ static int ipq5018_probe(struct phy_devi
priv->set_short_cable_dac = of_property_read_bool(dev->of_node,
"qcom,dac-preset-short-cable");

View file

@ -107,9 +107,9 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
+
+static int qcs404_init_clock(struct q6v5_wcss *wcss)
{
int ret;
@@ -990,7 +1014,7 @@ static int q6v5_wcss_init_clock(struct q
wcss->xo = devm_clk_get(wcss->dev, "xo");
if (IS_ERR(wcss->xo))
@@ -958,7 +982,7 @@ static int q6v5_wcss_init_clock(struct q
return 0;
}
@ -118,7 +118,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
{
wcss->cx_supply = devm_regulator_get(wcss->dev, "cx");
if (IS_ERR(wcss->cx_supply))
@@ -1034,12 +1058,14 @@ static int q6v5_wcss_probe(struct platfo
@@ -1001,12 +1025,14 @@ static int q6v5_wcss_probe(struct platfo
if (ret)
return ret;
@ -136,7 +136,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
if (ret)
return ret;
}
@@ -1081,6 +1107,7 @@ static void q6v5_wcss_remove(struct plat
@@ -1063,6 +1089,7 @@ static void q6v5_wcss_remove(struct plat
}
static const struct wcss_data wcss_ipq8074_res_init = {
@ -144,7 +144,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
.firmware_name = "IPQ8074/q6_fw.mdt",
.crash_reason_smem = WCSS_CRASH_REASON,
.aon_reset_required = true,
@@ -1090,6 +1117,8 @@ static const struct wcss_data wcss_ipq80
@@ -1072,6 +1099,8 @@ static const struct wcss_data wcss_ipq80
};
static const struct wcss_data wcss_qcs404_res_init = {

View file

@ -101,7 +101,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
int ret;
- ret = qcom_mdt_load_no_init(wcss->dev, fw, rproc->firmware,
- 0, wcss->mem_region, wcss->mem_phys,
- wcss->mem_region, wcss->mem_phys,
- wcss->mem_size, &wcss->mem_reloc);
+ if (wcss->need_mem_protection)
+ ret = qcom_mdt_load(wcss->dev, fw, rproc->firmware,
@ -110,12 +110,12 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
+ &wcss->mem_reloc);
+ else
+ ret = qcom_mdt_load_no_init(wcss->dev, fw, rproc->firmware,
+ 0, wcss->mem_region, wcss->mem_phys,
+ wcss->mem_region, wcss->mem_phys,
+ wcss->mem_size, &wcss->mem_reloc);
if (ret)
return ret;
@@ -1036,6 +1068,9 @@ static int q6v5_wcss_probe(struct platfo
@@ -1004,6 +1036,9 @@ static int q6v5_wcss_probe(struct platfo
if (!desc)
return -EINVAL;
@ -125,7 +125,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
rproc = devm_rproc_alloc(&pdev->dev, pdev->name, desc->ops,
desc->firmware_name, sizeof(*wcss));
if (!rproc) {
@@ -1049,6 +1084,7 @@ static int q6v5_wcss_probe(struct platfo
@@ -1016,6 +1051,7 @@ static int q6v5_wcss_probe(struct platfo
wcss->version = desc->version;
wcss->requires_force_stop = desc->requires_force_stop;
@ -133,7 +133,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
ret = q6v5_wcss_init_mmio(wcss, pdev);
if (ret)
@@ -1114,6 +1150,7 @@ static const struct wcss_data wcss_ipq80
@@ -1096,6 +1132,7 @@ static const struct wcss_data wcss_ipq80
.wcss_q6_reset_required = true,
.ops = &q6v5_wcss_ipq8074_ops,
.requires_force_stop = true,

View file

@ -49,7 +49,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
+ goto skip_m3;
+
+ ret = qcom_mdt_load_no_init(wcss->dev, m3_fw,
+ wcss->m3_firmware_name, 0,
+ wcss->m3_firmware_name,
+ wcss->mem_region, wcss->mem_phys,
+ wcss->mem_size, &wcss->mem_reloc);
+
@ -65,7 +65,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
if (wcss->need_mem_protection)
ret = qcom_mdt_load(wcss->dev, fw, rproc->firmware,
WCNSS_PAS_ID, wcss->mem_region,
@@ -1072,7 +1095,7 @@ static int q6v5_wcss_probe(struct platfo
@@ -1040,7 +1063,7 @@ static int q6v5_wcss_probe(struct platfo
return -EPROBE_DEFER;
rproc = devm_rproc_alloc(&pdev->dev, pdev->name, desc->ops,
@ -74,7 +74,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
if (!rproc) {
dev_err(&pdev->dev, "failed to allocate rproc\n");
return -ENOMEM;
@@ -1085,6 +1108,7 @@ static int q6v5_wcss_probe(struct platfo
@@ -1052,6 +1075,7 @@ static int q6v5_wcss_probe(struct platfo
wcss->version = desc->version;
wcss->requires_force_stop = desc->requires_force_stop;
wcss->need_mem_protection = desc->need_mem_protection;
@ -82,7 +82,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
ret = q6v5_wcss_init_mmio(wcss, pdev);
if (ret)
@@ -1144,7 +1168,8 @@ static void q6v5_wcss_remove(struct plat
@@ -1126,7 +1150,8 @@ static void q6v5_wcss_remove(struct plat
static const struct wcss_data wcss_ipq8074_res_init = {
.init_clock = ipq8074_init_clock,
@ -92,7 +92,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
.crash_reason_smem = WCSS_CRASH_REASON,
.aon_reset_required = true,
.wcss_q6_reset_required = true,
@@ -1157,7 +1182,7 @@ static const struct wcss_data wcss_qcs40
@@ -1139,7 +1164,7 @@ static const struct wcss_data wcss_qcs40
.init_clock = qcs404_init_clock,
.init_regulator = qcs404_init_regulator,
.crash_reason_smem = WCSS_CRASH_REASON,

View file

@ -14,7 +14,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
--- a/drivers/remoteproc/qcom_q6v5_wcss.c
+++ b/drivers/remoteproc/qcom_q6v5_wcss.c
@@ -1173,6 +1173,7 @@ static const struct wcss_data wcss_ipq80
@@ -1155,6 +1155,7 @@ static const struct wcss_data wcss_ipq80
.crash_reason_smem = WCSS_CRASH_REASON,
.aon_reset_required = true,
.wcss_q6_reset_required = true,

View file

@ -39,7 +39,7 @@ Signed-off-by: Sricharan R <sricharan@codeaurora.org>
}
return 0;
@@ -1173,6 +1177,7 @@ static const struct wcss_data wcss_ipq80
@@ -1155,6 +1159,7 @@ static const struct wcss_data wcss_ipq80
.crash_reason_smem = WCSS_CRASH_REASON,
.aon_reset_required = true,
.wcss_q6_reset_required = true,
@ -47,7 +47,7 @@ Signed-off-by: Sricharan R <sricharan@codeaurora.org>
.ssr_name = "q6wcss",
.ops = &q6v5_wcss_ipq8074_ops,
.requires_force_stop = true,
@@ -1187,6 +1192,7 @@ static const struct wcss_data wcss_qcs40
@@ -1169,6 +1174,7 @@ static const struct wcss_data wcss_qcs40
.version = WCSS_QCS404,
.aon_reset_required = false,
.wcss_q6_reset_required = false,

View file

@ -22,15 +22,15 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
};
static int q6v5_wcss_reset(struct q6v5_wcss *wcss)
@@ -1151,6 +1152,7 @@ static int q6v5_wcss_probe(struct platfo
desc->sysmon_name,
desc->ssctl_id);
@@ -1123,6 +1124,7 @@ static int q6v5_wcss_probe(struct platfo
}
}
+ rproc->auto_boot = desc->need_auto_boot;
ret = rproc_add(rproc);
if (ret)
return ret;
@@ -1182,6 +1184,7 @@ static const struct wcss_data wcss_ipq80
goto remove_sysmon_subdev;
@@ -1164,6 +1166,7 @@ static const struct wcss_data wcss_ipq80
.ops = &q6v5_wcss_ipq8074_ops,
.requires_force_stop = true,
.need_mem_protection = true,
@ -38,7 +38,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
};
static const struct wcss_data wcss_qcs404_res_init = {
@@ -1198,6 +1201,7 @@ static const struct wcss_data wcss_qcs40
@@ -1180,6 +1183,7 @@ static const struct wcss_data wcss_qcs40
.ssctl_id = 0x12,
.ops = &q6v5_wcss_qcs404_ops,
.requires_force_stop = false,

View file

@ -61,7 +61,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
spmi_bus: spmi@200f000 {
compatible = "qcom,spmi-pmic-arb";
reg = <0x0200f000 0x001000>,
@@ -994,6 +1025,56 @@
@@ -1028,6 +1059,56 @@
ranges;
};
};

View file

@ -15,7 +15,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
--- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi
@@ -1075,6 +1075,117 @@
@@ -1109,6 +1109,117 @@
};
};
};

View file

@ -21,7 +21,7 @@ Signed-off-by: Gokul Sriram Palanisamy <gokulsri@codeaurora.org>
{
int ret;
@@ -1173,7 +1173,7 @@ static void q6v5_wcss_remove(struct plat
@@ -1155,7 +1155,7 @@ static void q6v5_wcss_remove(struct plat
}
static const struct wcss_data wcss_ipq8074_res_init = {
@ -30,7 +30,7 @@ Signed-off-by: Gokul Sriram Palanisamy <gokulsri@codeaurora.org>
.q6_firmware_name = "IPQ8074/q6_fw.mdt",
.m3_firmware_name = "IPQ8074/m3_fw.mdt",
.crash_reason_smem = WCSS_CRASH_REASON,
@@ -1187,6 +1187,20 @@ static const struct wcss_data wcss_ipq80
@@ -1169,6 +1169,20 @@ static const struct wcss_data wcss_ipq80
.need_auto_boot = false,
};
@ -51,7 +51,7 @@ Signed-off-by: Gokul Sriram Palanisamy <gokulsri@codeaurora.org>
static const struct wcss_data wcss_qcs404_res_init = {
.init_clock = qcs404_init_clock,
.init_regulator = qcs404_init_regulator,
@@ -1206,6 +1220,7 @@ static const struct wcss_data wcss_qcs40
@@ -1188,6 +1202,7 @@ static const struct wcss_data wcss_qcs40
static const struct of_device_id q6v5_wcss_of_match[] = {
{ .compatible = "qcom,ipq8074-wcss-pil", .data = &wcss_ipq8074_res_init },

View file

@ -199,9 +199,9 @@ Signed-off-by: Sricharan Ramabadhran <quic_srichara@quicinc.com>
--- a/drivers/mailbox/Kconfig
+++ b/drivers/mailbox/Kconfig
@@ -295,4 +295,14 @@ config QCOM_IPCC
acts as an interrupt controller for receiving interrupts from clients.
Say Y here if you want to build this driver.
@@ -390,4 +390,14 @@ config RISCV_SBI_MPXY_MBOX
or HS-mode hypervisor). Say Y here if you want to have this support.
If unsure say N.
+config QCOM_TMEL_QMP_MAILBOX
+ tristate "QCOM Mailbox Protocol(QMP) for TMEL SS"
@ -216,7 +216,7 @@ Signed-off-by: Sricharan Ramabadhran <quic_srichara@quicinc.com>
endif
--- a/drivers/mailbox/Makefile
+++ b/drivers/mailbox/Makefile
@@ -47,6 +47,8 @@ obj-$(CONFIG_POLARFIRE_SOC_MAILBOX) += m
@@ -55,6 +55,8 @@ obj-$(CONFIG_MCHP_SBI_IPC_MBOX) += mail
obj-$(CONFIG_QCOM_APCS_IPC) += qcom-apcs-ipc-mailbox.o

View file

@ -54,7 +54,7 @@ Signed-off-by: Gokul Sriram Palanisamy <gokul.sriram.p@oss.qualcomm.com>
qcom_scm_bw_disable();
--- a/drivers/firmware/qcom/qcom_scm.h
+++ b/drivers/firmware/qcom/qcom_scm.h
@@ -101,6 +101,7 @@ struct qcom_tzmem_pool *qcom_scm_get_tzm
@@ -105,6 +105,7 @@ int qcom_scm_shm_bridge_enable(struct de
#define QCOM_SCM_PIL_PAS_SHUTDOWN 0x06
#define QCOM_SCM_PIL_PAS_IS_SUPPORTED 0x07
#define QCOM_SCM_PIL_PAS_MSS_RESET 0x0a

View file

@ -35,7 +35,7 @@ Signed-off-by: George Moussalem <george.moussalem@outlook.com>
--- a/drivers/remoteproc/Kconfig
+++ b/drivers/remoteproc/Kconfig
@@ -255,6 +255,25 @@ config QCOM_Q6V5_WCSS
@@ -254,6 +254,25 @@ config QCOM_Q6V5_WCSS
Hexagon V5 based WCSS remote processors on e.g. IPQ8074. This is
a non-TrustZone wireless subsystem.
@ -225,7 +225,7 @@ Signed-off-by: George Moussalem <george.moussalem@outlook.com>
+ return ret;
+ }
+
+ ret = qcom_mdt_load_no_init(wcss->dev, fw, rproc->firmware, wcss->desc->pasid,
+ ret = qcom_mdt_load_no_init(wcss->dev, fw, rproc->firmware,
+ wcss->mem_region, wcss->mem_phys, wcss->mem_size,
+ &wcss->mem_reloc);
+ if (ret) {

View file

@ -19,7 +19,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
--- a/drivers/spi/spi-qpic-snand.c
+++ b/drivers/spi/spi-qpic-snand.c
@@ -304,6 +304,24 @@ static int qcom_spi_ecc_init_ctx_pipelin
@@ -295,6 +295,24 @@ static int qcom_spi_ecc_init_ctx_pipelin
ecc_cfg->spare_bytes = 2;
break;

View file

@ -14,7 +14,7 @@ Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
@@ -1337,7 +1337,7 @@ int spinand_match_and_init(struct spinan
@@ -1408,7 +1408,7 @@ int spinand_match_and_init(struct spinan
if (rdid_method != info->devid.method)
continue;

View file

@ -115,7 +115,7 @@ Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
struct qcom_scm_desc desc = {
--- a/drivers/firmware/qcom/qcom_scm.h
+++ b/drivers/firmware/qcom/qcom_scm.h
@@ -102,6 +102,8 @@ struct qcom_tzmem_pool *qcom_scm_get_tzm
@@ -106,6 +106,8 @@ int qcom_scm_shm_bridge_enable(struct de
#define QCOM_SCM_PIL_PAS_IS_SUPPORTED 0x07
#define QCOM_SCM_PIL_PAS_MSS_RESET 0x0a
#define QCOM_SCM_PIL_PAS_INIT_IMAGE_V2 0x1a

View file

@ -58,9 +58,9 @@ Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
--- a/drivers/remoteproc/Kconfig
+++ b/drivers/remoteproc/Kconfig
@@ -235,6 +235,25 @@ config QCOM_Q6V5_PAS
CDSP (Compute DSP), MPSS (Modem Peripheral SubSystem), and
SLPI (Sensor Low Power Island).
@@ -234,6 +234,25 @@ config QCOM_Q6V5_PAS
subsystems such as ADSP (Audio DSP), CDSP (Compute DSP), MPSS (Modem
Peripheral SubSystem), and SLPI (Sensor Low Power Island).
+config QCOM_Q6V5_MPD
+ tristate "Qualcomm Hexagon based MPD model Peripheral Image Loader"
@ -477,7 +477,7 @@ Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
+ continue;
+
+ ret = qcom_mdt_load_no_init(wcss->dev, fw_hdl,
+ wcss->firmware[loop], 0,
+ wcss->firmware[loop],
+ wcss->mem_region,
+ wcss->mem_phys,
+ wcss->mem_size,
@ -883,7 +883,7 @@ Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@quicinc.com>
+
+static struct platform_driver q6_wcss_driver = {
+ .probe = q6_wcss_probe,
+ .remove_new = q6_wcss_remove,
+ .remove = q6_wcss_remove,
+ .driver = {
+ .name = "qcom-q6-mpd",
+ .of_match_table = q6_wcss_of_match,

View file

@ -52,7 +52,7 @@ Signed-off-by: George Moussalem <george.moussalem@outlook.com>
+ if (ret)
+ continue;
+
+ ret = qcom_mdt_load_no_init(dev, fw_hdl, wcss->firmware[i], 0,
+ ret = qcom_mdt_load_no_init(dev, fw_hdl, wcss->firmware[i],
+ wcss->mem_region, wcss->mem_phys,
+ wcss->mem_size, &wcss->mem_reloc);
+

View file

@ -116,7 +116,7 @@ Signed-off-by: George Moussalem <george.moussalem@outlook.com>
* @peripheral: peripheral id
--- a/drivers/firmware/qcom/qcom_scm.h
+++ b/drivers/firmware/qcom/qcom_scm.h
@@ -102,6 +102,9 @@ struct qcom_tzmem_pool *qcom_scm_get_tzm
@@ -106,6 +106,9 @@ int qcom_scm_shm_bridge_enable(struct de
#define QCOM_SCM_PIL_PAS_IS_SUPPORTED 0x07
#define QCOM_SCM_PIL_PAS_MSS_RESET 0x0a
#define QCOM_SCM_PIL_PAS_INIT_IMAGE_V2 0x1a

View file

@ -91,16 +91,16 @@ Signed-off-by: George Moussalem <george.moussalem@outlook.com>
* @fw: firmware object for the mdt file
@@ -335,7 +395,8 @@ static bool qcom_mdt_bins_are_split(cons
static int __qcom_mdt_load(struct device *dev, const struct firmware *fw,
const char *fw_name, int pas_id, void *mem_region,
const char *fw_name, void *mem_region,
phys_addr_t mem_phys, size_t mem_size,
- phys_addr_t *reloc_base, bool pas_init)
+ phys_addr_t *reloc_base, bool pas_init,
+ bool dma_require, int pd_asid)
- phys_addr_t *reloc_base)
+ phys_addr_t *reloc_base, bool dma_require,
+ int pas_id, int pd_asid)
{
const struct elf32_phdr *phdrs;
const struct elf32_phdr *phdr;
@@ -392,6 +453,14 @@ static int __qcom_mdt_load(struct device
if (!mdt_phdr_valid(phdr))
if (!mdt_phdr_loadable(phdr))
continue;
+ /*
@ -139,18 +139,18 @@ Signed-off-by: George Moussalem <george.moussalem@outlook.com>
@@ -461,7 +534,7 @@ int qcom_mdt_load(struct device *dev, co
return ret;
return __qcom_mdt_load(dev, fw, firmware, pas_id, mem_region, mem_phys,
- mem_size, reloc_base, true);
+ mem_size, reloc_base, true, false, 0);
return __qcom_mdt_load(dev, fw, firmware, mem_region, mem_phys,
- mem_size, reloc_base);
+ mem_size, reloc_base, false, pas_id, 0);
}
EXPORT_SYMBOL_GPL(qcom_mdt_load);
@@ -484,9 +557,36 @@ int qcom_mdt_load_no_init(struct device
@@ -482,9 +555,37 @@ int qcom_mdt_load_no_init(struct device
size_t mem_size, phys_addr_t *reloc_base)
{
return __qcom_mdt_load(dev, fw, firmware, pas_id, mem_region, mem_phys,
- mem_size, reloc_base, false);
+ mem_size, reloc_base, false, false, 0);
return __qcom_mdt_load(dev, fw, firmware, mem_region, mem_phys,
- mem_size, reloc_base);
+ mem_size, reloc_base, false, 0, 0);
}
EXPORT_SYMBOL_GPL(qcom_mdt_load_no_init);
@ -160,6 +160,7 @@ Signed-off-by: George Moussalem <george.moussalem@outlook.com>
+ * @fw: firmware object for the mdt file
+ * @firmware: name of the firmware, for construction of segment file names
+ * @pas_id: PAS identifier
+ * @pd_asid: application processor subsystem id of the userpd
+ * @mem_region: allocated memory region to load firmware into
+ * @mem_phys: physical address of allocated memory region
+ * @mem_size: size of the allocated memory region
@ -176,8 +177,8 @@ Signed-off-by: George Moussalem <george.moussalem@outlook.com>
+ phys_addr_t mem_phys, size_t mem_size,
+ phys_addr_t *reloc_base)
+{
+ return __qcom_mdt_load(dev, fw, firmware, pas_id, mem_region, mem_phys,
+ mem_size, reloc_base, false, true, pd_asid);
+ return __qcom_mdt_load(dev, fw, firmware, mem_region, mem_phys,
+ mem_size, reloc_base, true, pas_id, pd_asid);
+}
+EXPORT_SYMBOL_GPL(qcom_mdt_load_pd_seg);
+

View file

@ -22,7 +22,7 @@ Signed-off-by: George Moussalem <george.moussalem@outlook.com>
---
--- a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
+++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
@@ -22,6 +22,7 @@ properties:
@@ -21,6 +21,7 @@ properties:
- qcom,ipq6018-wifi
- qcom,wcn6750-wifi
- qcom,ipq5018-wifi
@ -30,7 +30,7 @@ Signed-off-by: George Moussalem <george.moussalem@outlook.com>
reg:
maxItems: 1
@@ -262,6 +263,29 @@ allOf:
@@ -268,6 +269,29 @@ allOf:
- description: interrupt event for ring DP20
- description: interrupt event for ring DP21
- description: interrupt event for ring DP22

View file

@ -25,7 +25,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
@@ -1720,4 +1720,37 @@ config REGULATOR_QCOM_LABIBB
@@ -1818,4 +1818,37 @@ config REGULATOR_QCOM_LABIBB
boost regulator and IBB can be used as a negative boost regulator
for LCD display panel.
@ -65,7 +65,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
endif
--- a/drivers/regulator/Makefile
+++ b/drivers/regulator/Makefile
@@ -121,6 +121,9 @@ obj-$(CONFIG_REGULATOR_QCOM_RPMH) += qco
@@ -124,6 +124,9 @@ obj-$(CONFIG_REGULATOR_QCOM_RPMH) += qco
obj-$(CONFIG_REGULATOR_QCOM_SMD_RPM) += qcom_smd-regulator.o
obj-$(CONFIG_REGULATOR_QCOM_SPMI) += qcom_spmi-regulator.o
obj-$(CONFIG_REGULATOR_QCOM_USB_VBUS) += qcom_usb_vbus-regulator.o
@ -74,7 +74,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
+obj-$(CONFIG_REGULATOR_CPR4_APSS) += cpr4-apss-regulator.o
obj-$(CONFIG_REGULATOR_PALMAS) += palmas-regulator.o
obj-$(CONFIG_REGULATOR_PCA9450) += pca9450-regulator.o
obj-$(CONFIG_REGULATOR_PF8X00) += pf8x00-regulator.o
obj-$(CONFIG_REGULATOR_PF0900) += pf0900-regulator.o
--- /dev/null
+++ b/drivers/regulator/cpr3-npu-regulator.c
@@ -0,0 +1,689 @@
@ -3183,14 +3183,14 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
+}
+
+/**
+ * cmp_int() - int comparison function to be passed into the sort() function
+ * cpr3_cmp_int() - int comparison function to be passed into the sort() function
+ * which leads to ascending sorting
+ * @a: First int value
+ * @b: Second int value
+ *
+ * Return: >0 if a > b, 0 if a == b, <0 if a < b
+ */
+static int cmp_int(const void *a, const void *b)
+static int cpr3_cmp_int(const void *a, const void *b)
+{
+ return *(int *)a - *(int *)b;
+}
@ -3369,7 +3369,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
+ = aging_measurement_count - CPR3_AGING_MEASUREMENT_FILTER * 2;
+ if (filtered_count > 0) {
+ sort(quot_delta_results, aging_measurement_count,
+ sizeof(*quot_delta_results), cmp_int, NULL);
+ sizeof(*quot_delta_results), cpr3_cmp_int, NULL);
+
+ quot_delta_scaled_sum = 0;
+ for (i = 0; i < filtered_count; i++)

View file

@ -19,7 +19,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
--- a/drivers/firmware/psci/psci.c
+++ b/drivers/firmware/psci/psci.c
@@ -87,6 +87,18 @@ static inline bool psci_has_ext_power_st
@@ -88,6 +88,18 @@ static inline bool psci_has_ext_power_st
bool psci_has_osi_support(void)
{

View file

@ -18,7 +18,7 @@ Signed-off-by: Mantas Pucka <mantas@8devices.com>
--- a/drivers/remoteproc/qcom_q6v5_wcss.c
+++ b/drivers/remoteproc/qcom_q6v5_wcss.c
@@ -1143,9 +1143,9 @@ static int q6v5_wcss_probe(struct platfo
@@ -1110,9 +1110,9 @@ static int q6v5_wcss_probe(struct platfo
if (ret)
return ret;
@ -28,9 +28,9 @@ Signed-off-by: Mantas Pucka <mantas@8devices.com>
- qcom_add_ssr_subdev(rproc, &wcss->ssr_subdev, "q6wcss");
+ qcom_add_ssr_subdev(rproc, &wcss->ssr_subdev, desc->ssr_name);
if (desc->ssctl_id)
if (desc->ssctl_id) {
wcss->sysmon = qcom_add_sysmon_subdev(rproc,
@@ -1195,7 +1195,7 @@ static const struct wcss_data wcss_ipq60
@@ -1162,7 +1162,7 @@ static const struct wcss_data wcss_ipq80
.aon_reset_required = true,
.wcss_q6_reset_required = true,
.bcr_reset_required = false,

View file

@ -15,7 +15,7 @@ Signed-off-by: Mantas Pucka <mantas@8devices.com>
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
@@ -831,6 +831,102 @@
@@ -828,6 +828,102 @@
};
};

View file

@ -15,7 +15,7 @@ Signed-off-by: Mantas Pucka <mantas@8devices.com>
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
@@ -1183,6 +1183,7 @@
@@ -1196,6 +1196,7 @@
wcss_smp2p_out: master-kernel {
qcom,entry-name = "master-kernel";

View file

@ -13,7 +13,7 @@ Signed-off-by: Mantas Pucka <mantas@8devices.com>
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
@@ -952,8 +952,8 @@
@@ -949,8 +949,8 @@
"wcss_reset",
"wcss_q6_reset";

View file

@ -18,7 +18,7 @@ Signed-off-by: Qiyuan Zhang <zhang.github@outlook.com>
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -1021,6 +1021,14 @@ int __init early_init_dt_scan_chosen(cha
@@ -1088,6 +1088,14 @@ int __init early_init_dt_scan_chosen(cha
const void *rng_seed;
const void *fdt = initial_boot_params;
@ -33,7 +33,7 @@ Signed-off-by: Qiyuan Zhang <zhang.github@outlook.com>
node = fdt_path_offset(fdt, "/chosen");
if (node < 0)
node = fdt_path_offset(fdt, "/chosen@0");
@@ -1049,6 +1057,69 @@ int __init early_init_dt_scan_chosen(cha
@@ -1116,6 +1124,69 @@ int __init early_init_dt_scan_chosen(cha
p = of_get_flat_dt_prop(node, "bootargs", &l);
if (p != NULL && l > 0)
strscpy(cmdline, p, min(l, COMMAND_LINE_SIZE));

View file

@ -57,7 +57,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -1990,6 +1990,29 @@ static unsigned long clk_core_get_rate_r
@@ -1978,6 +1978,29 @@ static unsigned long clk_core_get_rate_r
}
/**
@ -89,7 +89,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
*
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -1355,6 +1355,7 @@ int clk_hw_get_parent_index(struct clk_h
@@ -1407,6 +1407,7 @@ int clk_hw_get_parent_index(struct clk_h
int clk_hw_set_parent(struct clk_hw *hw, struct clk_hw *new_parent);
unsigned int __clk_get_enable_count(struct clk *clk);
unsigned long clk_hw_get_rate(const struct clk_hw *hw);

View file

@ -83,9 +83,9 @@ Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
+#endif
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -4852,6 +4852,9 @@ enum skb_ext_id {
#if IS_ENABLED(CONFIG_MCTP_FLOWS)
SKB_EXT_MCTP,
@@ -4920,6 +4920,9 @@ enum skb_ext_id {
#if IS_ENABLED(CONFIG_INET_PSP)
SKB_EXT_PSP,
#endif
+#if IS_ENABLED(CONFIG_NET_DSA_TAG_OOB)
+ SKB_EXT_DSA_OOB,
@ -113,9 +113,9 @@ Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
struct dsa_switch;
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -65,8 +65,12 @@
#include <linux/kcov.h>
@@ -66,8 +66,12 @@
#include <linux/iov_iter.h>
#include <linux/crc32.h>
#include <linux/if.h>
+#ifdef CONFIG_NET_DSA_TAG_OOB
+#include <linux/dsa/oob.h>
@ -126,9 +126,9 @@ Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
#include <net/dst.h>
#include <net/sock.h>
#include <net/checksum.h>
@@ -5097,6 +5101,9 @@ static const u8 skb_ext_type_len[] = {
#if IS_ENABLED(CONFIG_MCTP_FLOWS)
[SKB_EXT_MCTP] = SKB_EXT_CHUNKSIZEOF(struct mctp_flow),
@@ -5112,6 +5116,9 @@ static const u8 skb_ext_type_len[] = {
#if IS_ENABLED(CONFIG_INET_PSP)
[SKB_EXT_PSP] = SKB_EXT_CHUNKSIZEOF(struct psp_skb_ext),
#endif
+#if IS_ENABLED(CONFIG_NET_DSA_TAG_OOB)
+ [SKB_EXT_DSA_OOB] = SKB_EXT_CHUNKSIZEOF(struct dsa_oob_tag_info),

View file

@ -1,8 +1,8 @@
--- a/drivers/net/pcs/Kconfig
+++ b/drivers/net/pcs/Kconfig
@@ -51,4 +51,13 @@ config PCS_RZN1_MIIC
on RZ/N1 SoCs. This PCS converts MII to RMII/RGMII or can be set in
pass-through mode for MII.
@@ -55,4 +55,13 @@ config PCS_RZN1_MIIC
Renesas RZ/N1, RZ/N2H, and RZ/T2H SoCs. This PCS converts MII to
RMII/RGMII, or can be set in pass-through mode for MII.
+config PCS_QCA_UNIPHY
+ tristate "Qualcomm 802.11ax UNIPHY PCS driver"
@ -18,6 +18,6 @@
+++ b/drivers/net/pcs/Makefile
@@ -10,3 +10,4 @@ obj-$(CONFIG_PCS_LYNX) += pcs-lynx.o
obj-$(CONFIG_PCS_MTK_LYNXI) += pcs-mtk-lynxi.o
obj-$(CONFIG_PCS_RZN1_MIIC) += pcs-rzn1-miic.o
obj-$(CONFIG_PCS_MTK_USXGMII) += pcs-mtk-usxgmii.o
obj-$(CONFIG_PCS_RZN1_MIIC) += pcs-rzn1-miic.o
+obj-$(CONFIG_PCS_QCA_UNIPHY) += pcs-qca-uniphy.o

View file

@ -1,8 +1,8 @@
--- a/drivers/net/ethernet/qualcomm/Kconfig
+++ b/drivers/net/ethernet/qualcomm/Kconfig
@@ -61,6 +61,13 @@ config QCOM_EMAC
low power, Receive-Side Scaling (RSS), and IEEE 1588-2008
Precision Clock Synchronization Protocol.
@@ -75,6 +75,13 @@ config QCOM_PPE
To compile this driver as a module, choose M here. The module
will be called qcom-ppe.
+config QCOM_80211AX_PPE
+ tristate "Qualcomm 802.11ax PPE switch driver"

View file

@ -1,6 +1,6 @@
--- a/drivers/net/ethernet/qualcomm/Kconfig
+++ b/drivers/net/ethernet/qualcomm/Kconfig
@@ -67,6 +67,11 @@ config QCOM_80211AX_PPE
@@ -81,6 +81,11 @@ config QCOM_80211AX_PPE
help
Driver for Qualcomm 802.11ax PPE (Packet Processing Engine) switches.

View file

@ -1,6 +1,6 @@
--- a/drivers/net/ethernet/stmicro/stmmac/Kconfig
+++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig
@@ -78,6 +78,14 @@ config DWMAC_INGENIC
@@ -79,6 +79,14 @@ config DWMAC_INGENIC
device driver. This driver is used on for the Ingenic SoCs
MAC ethernet controller.