From: Robert Marko Date: Mon, 12 May 2025 13:56:50 +0000 (+0200) Subject: qualcommax: 6.12: MPD: add missing X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc4eaa34f819110d3e9f54def086d74bc40c3f30;p=thirdparty%2Fopenwrt.git qualcommax: 6.12: MPD: add missing It seems that kernel cleaned up its kernels so we need to include for of_platform_device_create(). Link: https://github.com/openwrt/openwrt/pull/18795 Signed-off-by: Robert Marko --- diff --git a/target/linux/qualcommax/patches-6.12/0805-remoteproc-qcom-Add-Hexagon-based-multipd-rproc-driv.patch b/target/linux/qualcommax/patches-6.12/0805-remoteproc-qcom-Add-Hexagon-based-multipd-rproc-driv.patch index cf3e1051d0b..fc80d772384 100644 --- a/target/linux/qualcommax/patches-6.12/0805-remoteproc-qcom-Add-Hexagon-based-multipd-rproc-driv.patch +++ b/target/linux/qualcommax/patches-6.12/0805-remoteproc-qcom-Add-Hexagon-based-multipd-rproc-driv.patch @@ -96,7 +96,7 @@ Signed-off-by: Manikanta Mylavarapu obj-$(CONFIG_QCOM_Q6V5_WCSS) += qcom_q6v5_wcss.o --- /dev/null +++ b/drivers/remoteproc/qcom_q6v5_mpd.c -@@ -0,0 +1,800 @@ +@@ -0,0 +1,801 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2016-2018 Linaro Ltd. @@ -113,6 +113,7 @@ Signed-off-by: Manikanta Mylavarapu +#include +#include +#include ++#include +#include +#include +#include diff --git a/target/linux/qualcommax/patches-6.12/0806-rproc-qcom_q6v5_mpd-split-q6_wcss-to-rootpd-and-user.patch b/target/linux/qualcommax/patches-6.12/0806-rproc-qcom_q6v5_mpd-split-q6_wcss-to-rootpd-and-user.patch index b3cd492d053..4f09717cf5d 100644 --- a/target/linux/qualcommax/patches-6.12/0806-rproc-qcom_q6v5_mpd-split-q6_wcss-to-rootpd-and-user.patch +++ b/target/linux/qualcommax/patches-6.12/0806-rproc-qcom_q6v5_mpd-split-q6_wcss-to-rootpd-and-user.patch @@ -16,7 +16,7 @@ Signed-off-by: George Moussalem --- a/drivers/remoteproc/qcom_q6v5_mpd.c +++ b/drivers/remoteproc/qcom_q6v5_mpd.c -@@ -44,10 +44,6 @@ +@@ -45,10 +45,6 @@ #define VERSION2 2 static LIST_HEAD(upd_rproc_list); @@ -27,7 +27,7 @@ Signed-off-by: George Moussalem /** * struct userpd_boot_info_header - header of user pd bootinfo -@@ -82,10 +78,15 @@ struct q6_wcss { +@@ -83,10 +79,15 @@ struct q6_wcss { phys_addr_t mem_reloc; void *mem_region; size_t mem_size; @@ -45,7 +45,7 @@ Signed-off-by: George Moussalem }; struct wcss_data { -@@ -101,8 +102,8 @@ struct wcss_data { +@@ -102,8 +103,8 @@ struct wcss_data { */ static u8 qcom_get_pd_asid(struct rproc *rproc) { @@ -56,7 +56,7 @@ Signed-off-by: George Moussalem return bit / 8; } -@@ -131,37 +132,37 @@ static int q6_wcss_start(struct rproc *r +@@ -132,37 +133,37 @@ static int q6_wcss_start(struct rproc *r static int q6_wcss_spawn_pd(struct rproc *rproc) { int ret; @@ -105,7 +105,7 @@ Signed-off-by: George Moussalem ret = q6_wcss_spawn_pd(rproc); if (ret) return ret; -@@ -213,22 +214,22 @@ static int q6_wcss_stop(struct rproc *rp +@@ -214,22 +215,22 @@ static int q6_wcss_stop(struct rproc *rp */ static int wcss_pd_stop(struct rproc *rproc) { @@ -135,7 +135,7 @@ Signed-off-by: George Moussalem return ret; } -@@ -273,7 +274,8 @@ static int share_upd_bootinfo_to_q6(stru +@@ -274,7 +275,8 @@ static int share_upd_bootinfo_to_q6(stru size_t size; u16 cnt = 0, version; void *ptr; @@ -145,7 +145,7 @@ Signed-off-by: George Moussalem struct rproc *upd_rproc; struct userpd_boot_info upd_bootinfo = {0}; const struct firmware *fw; -@@ -308,7 +310,7 @@ static int share_upd_bootinfo_to_q6(stru +@@ -309,7 +311,7 @@ static int share_upd_bootinfo_to_q6(stru ptr += sizeof(u16); list_for_each_entry(upd_rproc, &upd_rproc_list, node) { @@ -154,7 +154,7 @@ Signed-off-by: George Moussalem /* TYPE */ upd_bootinfo.header.type = UPD_BOOT_INFO_HEADER_TYPE; -@@ -318,11 +320,11 @@ static int share_upd_bootinfo_to_q6(stru +@@ -319,11 +321,11 @@ static int share_upd_bootinfo_to_q6(stru sizeof(upd_bootinfo) - sizeof(upd_bootinfo.header); /* Process ID */ @@ -169,7 +169,7 @@ Signed-off-by: George Moussalem return ret; } -@@ -421,19 +423,20 @@ static int q6_wcss_load(struct rproc *rp +@@ -422,19 +424,20 @@ static int q6_wcss_load(struct rproc *rp */ static int wcss_pd_load(struct rproc *rproc, const struct firmware *fw) { @@ -195,7 +195,7 @@ Signed-off-by: George Moussalem } static unsigned long q6_wcss_panic(struct rproc *rproc) -@@ -465,26 +468,15 @@ static int q6_alloc_memory_region(struct +@@ -466,26 +469,15 @@ static int q6_alloc_memory_region(struct struct device_node *node; struct device *dev = wcss->dev; @@ -231,7 +231,7 @@ Signed-off-by: George Moussalem } wcss->mem_phys = rmem->base; -@@ -508,7 +500,7 @@ static int q6_get_inbound_irq(struct qco +@@ -509,7 +501,7 @@ static int q6_get_inbound_irq(struct qco { int ret, irq; char *interrupt, *tmp = (char *)int_name; @@ -240,7 +240,7 @@ Signed-off-by: George Moussalem irq = platform_get_irq(pdev, index); if (irq < 0) -@@ -520,7 +512,7 @@ static int q6_get_inbound_irq(struct qco +@@ -521,7 +513,7 @@ static int q6_get_inbound_irq(struct qco if (!interrupt) return -ENOMEM; @@ -249,7 +249,7 @@ Signed-off-by: George Moussalem ret = devm_request_threaded_irq(&pdev->dev, *pirq, NULL, handler, -@@ -561,7 +553,7 @@ static int init_irq(struct qcom_q6v5 *q6 +@@ -562,7 +554,7 @@ static int init_irq(struct qcom_q6v5 *q6 void (*handover)(struct qcom_q6v5 *q6)) { int ret; @@ -258,7 +258,7 @@ Signed-off-by: George Moussalem q6->rproc = rproc; q6->dev = &pdev->dev; -@@ -581,7 +573,7 @@ static int init_irq(struct qcom_q6v5 *q6 +@@ -582,7 +574,7 @@ static int init_irq(struct qcom_q6v5 *q6 return ret; /* Get pd_asid to prepare interrupt names */ @@ -267,7 +267,7 @@ Signed-off-by: George Moussalem ret = q6_get_inbound_irq(q6, pdev, "fatal", 0, &q6->fatal_irq, q6v5_fatal_interrupt); -@@ -619,7 +611,7 @@ static void q6_release_resources(void) +@@ -620,7 +612,7 @@ static void q6_release_resources(void) static int q6_register_userpd(struct platform_device *pdev, struct device_node *userpd_np) { @@ -276,7 +276,7 @@ Signed-off-by: George Moussalem struct rproc *rproc = NULL; int ret; struct platform_device *userpd_pdev; -@@ -652,21 +644,16 @@ static int q6_register_userpd(struct pla +@@ -653,21 +645,16 @@ static int q6_register_userpd(struct pla userpd_pdev->dev.driver = pdev->dev.driver; rproc = rproc_alloc(&userpd_pdev->dev, userpd_pdev->name, &wcss_ops, @@ -302,7 +302,7 @@ Signed-off-by: George Moussalem WCSS_CRASH_REASON, NULL, NULL); if (ret) goto free_rproc; -@@ -678,7 +665,7 @@ static int q6_register_userpd(struct pla +@@ -679,7 +666,7 @@ static int q6_register_userpd(struct pla list_add(&rproc->node, &upd_rproc_list); platform_set_drvdata(userpd_pdev, rproc); @@ -311,7 +311,7 @@ Signed-off-by: George Moussalem return 0; free_rproc: -@@ -719,7 +706,6 @@ static int q6_wcss_probe(struct platform +@@ -720,7 +707,6 @@ static int q6_wcss_probe(struct platform wcss->dev = &pdev->dev; wcss->desc = desc; wcss->firmware = firmware; diff --git a/target/linux/qualcommax/patches-6.12/0807-remoteproc-qcom_q6v5_mpd-fix-incorrent-use-of-rproc-.patch b/target/linux/qualcommax/patches-6.12/0807-remoteproc-qcom_q6v5_mpd-fix-incorrent-use-of-rproc-.patch index 59f49ad66e9..42ffaab66e5 100644 --- a/target/linux/qualcommax/patches-6.12/0807-remoteproc-qcom_q6v5_mpd-fix-incorrent-use-of-rproc-.patch +++ b/target/linux/qualcommax/patches-6.12/0807-remoteproc-qcom_q6v5_mpd-fix-incorrent-use-of-rproc-.patch @@ -50,7 +50,7 @@ Signed-off-by: Ziyang Huang --- a/drivers/remoteproc/qcom_q6v5_mpd.c +++ b/drivers/remoteproc/qcom_q6v5_mpd.c -@@ -33,6 +33,7 @@ +@@ -34,6 +34,7 @@ #define BUF_SIZE 35 @@ -58,7 +58,7 @@ Signed-off-by: Ziyang Huang #define MAX_FIRMWARE 3 #define RPD_SWID MPD_WCNSS_PAS_ID -@@ -43,8 +44,6 @@ +@@ -44,8 +45,6 @@ #define UPD_BOOT_INFO_SMEM_ID 507 #define VERSION2 2 @@ -67,7 +67,7 @@ Signed-off-by: Ziyang Huang /** * struct userpd_boot_info_header - header of user pd bootinfo * @type: type of bootinfo passing over smem -@@ -80,6 +79,7 @@ struct q6_wcss { +@@ -81,6 +80,7 @@ struct q6_wcss { size_t mem_size; const struct wcss_data *desc; const char **firmware; @@ -75,7 +75,7 @@ Signed-off-by: Ziyang Huang }; struct userpd { -@@ -270,13 +270,12 @@ static void *q6_wcss_da_to_va(struct rpr +@@ -271,13 +271,12 @@ static void *q6_wcss_da_to_va(struct rpr */ static int share_upd_bootinfo_to_q6(struct rproc *rproc) { @@ -90,7 +90,7 @@ Signed-off-by: Ziyang Huang struct userpd_boot_info upd_bootinfo = {0}; const struct firmware *fw; -@@ -301,16 +300,19 @@ static int share_upd_bootinfo_to_q6(stru +@@ -302,16 +301,19 @@ static int share_upd_bootinfo_to_q6(stru memcpy_toio(ptr, &version, sizeof(version)); ptr += sizeof(version); @@ -114,7 +114,7 @@ Signed-off-by: Ziyang Huang /* TYPE */ upd_bootinfo.header.type = UPD_BOOT_INFO_HEADER_TYPE; -@@ -322,14 +324,14 @@ static int share_upd_bootinfo_to_q6(stru +@@ -323,14 +325,14 @@ static int share_upd_bootinfo_to_q6(stru /* Process ID */ upd_bootinfo.pid = upd->pd_asid + 1; @@ -131,7 +131,7 @@ Signed-off-by: Ziyang Huang /* Firmware mem size */ upd_bootinfo.data_size = qcom_mdt_get_size(fw); -@@ -597,18 +599,23 @@ static int init_irq(struct qcom_q6v5 *q6 +@@ -598,18 +600,23 @@ static int init_irq(struct qcom_q6v5 *q6 return 0; } @@ -161,7 +161,7 @@ Signed-off-by: Ziyang Huang struct device_node *userpd_np) { struct userpd *upd; -@@ -633,16 +640,16 @@ static int q6_register_userpd(struct pla +@@ -634,16 +641,16 @@ static int q6_register_userpd(struct pla return ret; } @@ -182,7 +182,7 @@ Signed-off-by: Ziyang Huang rproc = rproc_alloc(&userpd_pdev->dev, userpd_pdev->name, &wcss_ops, firmware_name, sizeof(*upd)); if (!rproc) { -@@ -663,7 +670,7 @@ static int q6_register_userpd(struct pla +@@ -664,7 +671,7 @@ static int q6_register_userpd(struct pla if (ret) goto free_rproc; @@ -191,7 +191,7 @@ Signed-off-by: Ziyang Huang platform_set_drvdata(userpd_pdev, rproc); qcom_add_ssr_subdev(rproc, &upd->ssr_subdev, userpd_pdev->name); return 0; -@@ -728,10 +735,10 @@ static int q6_wcss_probe(struct platform +@@ -729,10 +736,10 @@ static int q6_wcss_probe(struct platform /* Iterate over userpd child's and register with rproc */ for_each_available_child_of_node(pdev->dev.of_node, userpd_np) { diff --git a/target/linux/qualcommax/patches-6.12/0813-remoteproc-qcom_q6v5_mpd-enable-clocks.patch b/target/linux/qualcommax/patches-6.12/0813-remoteproc-qcom_q6v5_mpd-enable-clocks.patch index f549580f3d3..7af2567cdab 100644 --- a/target/linux/qualcommax/patches-6.12/0813-remoteproc-qcom_q6v5_mpd-enable-clocks.patch +++ b/target/linux/qualcommax/patches-6.12/0813-remoteproc-qcom_q6v5_mpd-enable-clocks.patch @@ -10,7 +10,7 @@ Signed-off-by: Ziyang Huang --- a/drivers/remoteproc/qcom_q6v5_mpd.c +++ b/drivers/remoteproc/qcom_q6v5_mpd.c -@@ -77,6 +77,8 @@ struct q6_wcss { +@@ -78,6 +78,8 @@ struct q6_wcss { phys_addr_t mem_reloc; void *mem_region; size_t mem_size; @@ -19,7 +19,7 @@ Signed-off-by: Ziyang Huang const struct wcss_data *desc; const char **firmware; struct userpd *upd[MAX_UPD]; -@@ -718,6 +720,16 @@ static int q6_wcss_probe(struct platform +@@ -719,6 +721,16 @@ static int q6_wcss_probe(struct platform if (ret) goto free_rproc; diff --git a/target/linux/qualcommax/patches-6.12/0814-remoteproc-qcom_q6v5_mpd-support-ipq5018.patch b/target/linux/qualcommax/patches-6.12/0814-remoteproc-qcom_q6v5_mpd-support-ipq5018.patch index 213cc0350c3..9cdf59ad21d 100644 --- a/target/linux/qualcommax/patches-6.12/0814-remoteproc-qcom_q6v5_mpd-support-ipq5018.patch +++ b/target/linux/qualcommax/patches-6.12/0814-remoteproc-qcom_q6v5_mpd-support-ipq5018.patch @@ -10,7 +10,7 @@ Signed-off-by: Ziyang Huang --- a/drivers/remoteproc/qcom_q6v5_mpd.c +++ b/drivers/remoteproc/qcom_q6v5_mpd.c -@@ -155,6 +155,8 @@ static int q6_wcss_spawn_pd(struct rproc +@@ -156,6 +156,8 @@ static int q6_wcss_spawn_pd(struct rproc static int wcss_pd_start(struct rproc *rproc) { struct userpd *upd = rproc->priv; @@ -19,7 +19,7 @@ Signed-off-by: Ziyang Huang u32 pasid = (upd->pd_asid << 8) | UPD_SWID; int ret; -@@ -170,6 +172,14 @@ static int wcss_pd_start(struct rproc *r +@@ -171,6 +173,14 @@ static int wcss_pd_start(struct rproc *r return ret; } @@ -34,7 +34,7 @@ Signed-off-by: Ziyang Huang return ret; } -@@ -179,6 +189,12 @@ static int q6_wcss_stop(struct rproc *rp +@@ -180,6 +190,12 @@ static int q6_wcss_stop(struct rproc *rp const struct wcss_data *desc = wcss->desc; int ret; @@ -47,7 +47,7 @@ Signed-off-by: Ziyang Huang ret = qcom_scm_pas_shutdown(desc->pasid); if (ret) { dev_err(wcss->dev, "not able to shutdown\n"); -@@ -218,6 +234,7 @@ static int wcss_pd_stop(struct rproc *rp +@@ -219,6 +235,7 @@ static int wcss_pd_stop(struct rproc *rp { struct userpd *upd = rproc->priv; struct rproc *rpd_rproc = dev_get_drvdata(upd->dev->parent); @@ -55,7 +55,7 @@ Signed-off-by: Ziyang Huang u32 pasid = (upd->pd_asid << 8) | UPD_SWID; int ret; -@@ -229,6 +246,14 @@ static int wcss_pd_stop(struct rproc *rp +@@ -230,6 +247,14 @@ static int wcss_pd_stop(struct rproc *rp } } @@ -70,7 +70,7 @@ Signed-off-by: Ziyang Huang ret = qcom_scm_msa_unlock(pasid); if (ret) { dev_err(upd->dev, "failed to power down pd\n"); -@@ -430,15 +455,14 @@ static int wcss_pd_load(struct rproc *rp +@@ -431,15 +456,14 @@ static int wcss_pd_load(struct rproc *rp struct userpd *upd = rproc->priv; struct rproc *rpd_rproc = dev_get_drvdata(upd->dev->parent); struct q6_wcss *wcss = rpd_rproc->priv; @@ -88,7 +88,7 @@ Signed-off-by: Ziyang Huang wcss->mem_phys, wcss->mem_size, NULL); } -@@ -775,6 +799,12 @@ static void q6_wcss_remove(struct platfo +@@ -776,6 +800,12 @@ static void q6_wcss_remove(struct platfo rproc_free(rproc); } @@ -101,7 +101,7 @@ Signed-off-by: Ziyang Huang static const struct wcss_data q6_ipq5332_res_init = { .pasid = MPD_WCNSS_PAS_ID, .share_upd_info_to_q6 = true, -@@ -785,6 +815,7 @@ static const struct wcss_data q6_ipq9574 +@@ -786,6 +816,7 @@ static const struct wcss_data q6_ipq9574 }; static const struct of_device_id q6_wcss_of_match[] = { diff --git a/target/linux/qualcommax/patches-6.12/0815-remoteproc-qcom_q6v5_mpd-add-support-for-passing-v1-bootargs.patch b/target/linux/qualcommax/patches-6.12/0815-remoteproc-qcom_q6v5_mpd-add-support-for-passing-v1-bootargs.patch index e14b23230de..f601377e474 100644 --- a/target/linux/qualcommax/patches-6.12/0815-remoteproc-qcom_q6v5_mpd-add-support-for-passing-v1-bootargs.patch +++ b/target/linux/qualcommax/patches-6.12/0815-remoteproc-qcom_q6v5_mpd-add-support-for-passing-v1-bootargs.patch @@ -39,7 +39,7 @@ Signed-off-by: George Moussalem --- --- a/drivers/remoteproc/qcom_q6v5_mpd.c +++ b/drivers/remoteproc/qcom_q6v5_mpd.c -@@ -42,7 +42,11 @@ +@@ -43,7 +43,11 @@ #define UPD_BOOT_INFO_SMEM_SIZE 4096 #define UPD_BOOT_INFO_HEADER_TYPE 0x2 #define UPD_BOOT_INFO_SMEM_ID 507 @@ -52,7 +52,7 @@ Signed-off-by: George Moussalem /** * struct userpd_boot_info_header - header of user pd bootinfo -@@ -94,6 +98,7 @@ struct userpd { +@@ -95,6 +99,7 @@ struct userpd { struct wcss_data { u32 pasid; bool share_upd_info_to_q6; @@ -60,7 +60,7 @@ Signed-off-by: George Moussalem }; /** -@@ -298,10 +303,13 @@ static void *q6_wcss_da_to_va(struct rpr +@@ -299,10 +304,13 @@ static void *q6_wcss_da_to_va(struct rpr static int share_upd_bootinfo_to_q6(struct rproc *rproc) { int i, ret; @@ -74,7 +74,7 @@ Signed-off-by: George Moussalem struct userpd *upd; struct userpd_boot_info upd_bootinfo = {0}; const struct firmware *fw; -@@ -323,10 +331,47 @@ static int share_upd_bootinfo_to_q6(stru +@@ -324,10 +332,47 @@ static int share_upd_bootinfo_to_q6(stru } /*Version*/ @@ -123,7 +123,7 @@ Signed-off-by: George Moussalem for (i = 0; i < ARRAY_SIZE(wcss->upd); i++) if (wcss->upd[i]) cnt++; -@@ -382,12 +427,14 @@ static int q6_wcss_load(struct rproc *rp +@@ -383,12 +428,14 @@ static int q6_wcss_load(struct rproc *rp /* Share user pd boot info to Q6 remote processor */ if (desc->share_upd_info_to_q6) { @@ -144,7 +144,7 @@ Signed-off-by: George Moussalem } } -@@ -801,13 +848,15 @@ static void q6_wcss_remove(struct platfo +@@ -802,13 +849,15 @@ static void q6_wcss_remove(struct platfo static const struct wcss_data q6_ipq5018_res_init = { .pasid = MPD_WCNSS_PAS_ID,