All of lore.kernel.org
 help / color / mirror / Atom feed
From: neil.armstrong@linaro.org
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org,
	Johan Hovold <johan+linaro@kernel.org>
Subject: Re: [PATCH v4 7/7] remoteproc: qcom: pas: add configuration for in-kernel pdm
Date: Mon, 11 Mar 2024 17:58:50 +0100	[thread overview]
Message-ID: <9db38740-9a47-407c-ba0d-c87c397824fb@linaro.org> (raw)
In-Reply-To: <20240311-qcom-pd-mapper-v4-7-24679cca5c24@linaro.org>

On 11/03/2024 16:34, Dmitry Baryshkov wrote:
> Add domain / service configuration for the in-kernel protection domain
> mapper service.
> 
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
>   drivers/remoteproc/Kconfig         |   1 +
>   drivers/remoteproc/qcom_q6v5_pas.c | 370 +++++++++++++++++++++++++++++++++++--
>   2 files changed, 354 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
> index 8152e845f7a3..7c6ec54c7b35 100644
> --- a/drivers/remoteproc/Kconfig
> +++ b/drivers/remoteproc/Kconfig
> @@ -223,6 +223,7 @@ config QCOM_Q6V5_PAS
>   	depends on QCOM_SYSMON || QCOM_SYSMON=n
>   	depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
>   	depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n
> +	depends on QCOM_PD_MAPPER || QCOM_PD_MAPPER=n
>   	select MFD_SYSCON
>   	select QCOM_PIL_INFO
>   	select QCOM_MDT_LOADER
> diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
> index 3235249d703d..ba53df7ea30e 100644
> --- a/drivers/remoteproc/qcom_q6v5_pas.c
> +++ b/drivers/remoteproc/qcom_q6v5_pas.c
> @@ -23,6 +23,7 @@
>   #include <linux/regulator/consumer.h>
>   #include <linux/remoteproc.h>
>   #include <linux/soc/qcom/mdt_loader.h>
> +#include <linux/soc/qcom/pd_mapper.h>
>   #include <linux/soc/qcom/smem.h>
>   #include <linux/soc/qcom/smem_state.h>
>   
> @@ -56,6 +57,9 @@ struct adsp_data {
>   	int region_assign_count;
>   	bool region_assign_shared;
>   	int region_assign_vmid;
> +
> +	const struct qcom_pdm_domain_data * const *domains;
> +	size_t num_domains;
>   };
>   
>   struct qcom_adsp {
> @@ -112,6 +116,9 @@ struct qcom_adsp {
>   
>   	struct qcom_scm_pas_metadata pas_metadata;
>   	struct qcom_scm_pas_metadata dtb_pas_metadata;
> +
> +	const struct qcom_pdm_domain_data * const *domains;
> +	size_t num_domains;
>   };
>   
>   static void adsp_segment_dump(struct rproc *rproc, struct rproc_dump_segment *segment,
> @@ -256,10 +263,14 @@ static int adsp_start(struct rproc *rproc)
>   	struct qcom_adsp *adsp = rproc->priv;
>   	int ret;
>   
> -	ret = qcom_q6v5_prepare(&adsp->q6v5);
> +	ret = qcom_pdm_add_domains(adsp->domains, adsp->num_domains);
>   	if (ret)
>   		return ret;
>   
> +	ret = qcom_q6v5_prepare(&adsp->q6v5);
> +	if (ret)
> +		goto del_domains;
> +
>   	ret = adsp_pds_enable(adsp, adsp->proxy_pds, adsp->proxy_pd_count);
>   	if (ret < 0)
>   		goto disable_irqs;
> @@ -348,6 +359,9 @@ static int adsp_start(struct rproc *rproc)
>   disable_irqs:
>   	qcom_q6v5_unprepare(&adsp->q6v5);
>   
> +del_domains:
> +	qcom_pdm_del_domains(adsp->domains, adsp->num_domains);
> +
>   	/* Remove pointer to the loaded firmware, only valid in adsp_load() & adsp_start() */
>   	adsp->firmware = NULL;
>   
> @@ -394,6 +408,8 @@ static int adsp_stop(struct rproc *rproc)
>   	if (handover)
>   		qcom_pas_handover(&adsp->q6v5);
>   
> +	qcom_pdm_del_domains(adsp->domains, adsp->num_domains);
> +
>   	return ret;
>   }
>   
> @@ -730,6 +746,10 @@ static int adsp_probe(struct platform_device *pdev)
>   		adsp->dtb_firmware_name = dtb_fw_name;
>   		adsp->dtb_pas_id = desc->dtb_pas_id;
>   	}
> +
> +	adsp->domains = desc->domains;
> +	adsp->num_domains = desc->num_domains;
> +
>   	platform_set_drvdata(pdev, adsp);
>   
>   	ret = device_init_wakeup(adsp->dev, true);
> @@ -806,6 +826,172 @@ static void adsp_remove(struct platform_device *pdev)
>   	rproc_free(adsp->rproc);
>   }
>   
> +static const struct qcom_pdm_domain_data adsp_audio_pd = {
> +	.domain = "msm/adsp/audio_pd",
> +	.instance_id = 74,
> +	.services = {
> +		"avs/audio",
> +		NULL,
> +	},
> +};
> +
> +static const struct qcom_pdm_domain_data adsp_charger_pd = {
> +	.domain = "msm/adsp/charger_pd",
> +	.instance_id = 74,
> +	.services = { NULL },
> +};
> +
> +static const struct qcom_pdm_domain_data adsp_root_pd = {
> +	.domain = "msm/adsp/root_pd",
> +	.instance_id = 74,
> +	.services = { NULL },
> +};
> +
> +static const struct qcom_pdm_domain_data adsp_root_pd_pdr = {
> +	.domain = "msm/adsp/root_pd",
> +	.instance_id = 74,
> +	.services = {
> +		"tms/pdr_enabled",
> +		NULL,
> +	},
> +};
> +
> +static const struct qcom_pdm_domain_data adsp_sensor_pd = {
> +	.domain = "msm/adsp/sensor_pd",
> +	.instance_id = 74,
> +	.services = { NULL },
> +};
> +
> +static const struct qcom_pdm_domain_data msm8996_adsp_audio_pd = {
> +	.domain = "msm/adsp/audio_pd",
> +	.instance_id = 4,
> +	.services = { NULL },
> +};
> +
> +static const struct qcom_pdm_domain_data msm8996_adsp_root_pd = {
> +	.domain = "msm/adsp/root_pd",
> +	.instance_id = 4,
> +	.services = { NULL },
> +};
> +
> +static const struct qcom_pdm_domain_data *msm8996_adsp_domains[] = {
> +	&msm8996_adsp_audio_pd,
> +	&msm8996_adsp_root_pd,
> +};
> +
> +static const struct qcom_pdm_domain_data *qcs404_adsp_domains[] = {
> +	&adsp_audio_pd,
> +	&adsp_root_pd,
> +	&adsp_sensor_pd,
> +};
> +
> +static const struct qcom_pdm_domain_data *sc7180_adsp_domains[] = {
> +	&adsp_audio_pd,
> +	&adsp_root_pd_pdr,
> +	&adsp_sensor_pd,
> +};
> +
> +static const struct qcom_pdm_domain_data *sc7280_adsp_domains[] = {
> +	&adsp_audio_pd,
> +	&adsp_root_pd_pdr,
> +	&adsp_charger_pd,
> +	&adsp_sensor_pd,
> +};
> +
> +static const struct qcom_pdm_domain_data *sdm845_adsp_domains[] = {
> +	&adsp_audio_pd,
> +	&adsp_root_pd,
> +};
> +
> +static const struct qcom_pdm_domain_data *sm8350_adsp_domains[] = {
> +	&adsp_audio_pd,
> +	&adsp_root_pd_pdr,
> +	&adsp_charger_pd,
> +};
> +
> +static const struct qcom_pdm_domain_data cdsp_root_pd = {
> +	.domain = "msm/cdsp/root_pd",
> +	.instance_id = 76,
> +	.services = { NULL },
> +};
> +
> +static const struct qcom_pdm_domain_data *sdm845_cdsp_domains[] = {
> +	&cdsp_root_pd,
> +};
> +
> +static const struct qcom_pdm_domain_data slpi_root_pd = {
> +	.domain = "msm/slpi/root_pd",
> +	.instance_id = 90,
> +	.services = { NULL },
> +};
> +
> +static const struct qcom_pdm_domain_data slpi_sensor_pd = {
> +	.domain = "msm/slpi/sensor_pd",
> +	.instance_id = 90,
> +	.services = { NULL },
> +};
> +
> +static const struct qcom_pdm_domain_data *sdm845_slpi_domains[] = {
> +	&slpi_root_pd,
> +	&slpi_sensor_pd,
> +};
> +
> +static const struct qcom_pdm_domain_data mpss_root_pd = {
> +	.domain = "msm/modem/root_pd",
> +	.instance_id = 180,
> +	.services = {
> +		NULL,
> +	},
> +};
> +
> +static const struct qcom_pdm_domain_data mpss_root_pd_gps = {
> +	.domain = "msm/modem/root_pd",
> +	.instance_id = 180,
> +	.services = {
> +		"gps/gps_service",
> +		NULL,
> +	},
> +};
> +
> +static const struct qcom_pdm_domain_data mpss_root_pd_gps_pdr = {
> +	.domain = "msm/modem/root_pd",
> +	.instance_id = 180,
> +	.services = {
> +		"gps/gps_service",
> +		"tms/pdr_enabled",
> +		NULL,
> +	},
> +};
> +
> +static const struct qcom_pdm_domain_data mpss_wlan_pd = {
> +	.domain = "msm/modem/wlan_pd",
> +	.instance_id = 180,
> +	.services = {
> +		"kernel/elf_loader",
> +		"wlan/fw",
> +		NULL,
> +	},
> +};
> +
> +static const struct qcom_pdm_domain_data *qcs404_mpss_domains[] = {
> +	&mpss_root_pd,
> +	&mpss_wlan_pd,
> +};
> +
> +static const struct qcom_pdm_domain_data *sc7180_mpss_domains[] = {
> +	&mpss_root_pd_gps_pdr,
> +	&mpss_wlan_pd,
> +};
> +
> +static const struct qcom_pdm_domain_data *sm8150_mpss_domains[] = {
> +	&mpss_root_pd_gps,
> +	&mpss_wlan_pd,
> +};
> +
> +static const struct qcom_pdm_domain_data *sm8350_mpss_domains[] = {
> +	&mpss_root_pd_gps,
> +};
> +
>   static const struct adsp_data adsp_resource_init = {
>   	.crash_reason_smem = 423,
>   	.firmware_name = "adsp.mdt",
> @@ -814,6 +1000,55 @@ static const struct adsp_data adsp_resource_init = {
>   	.ssr_name = "lpass",
>   	.sysmon_name = "adsp",
>   	.ssctl_id = 0x14,
> +	/* no domains */
> +};
> +
> +static const struct adsp_data qcs404_adsp_resource = {
> +	.crash_reason_smem = 423,
> +	.firmware_name = "adsp.mdt",
> +	.pas_id = 1,
> +	.auto_boot = true,
> +	.ssr_name = "lpass",
> +	.sysmon_name = "adsp",
> +	.ssctl_id = 0x14,
> +	.domains = qcs404_adsp_domains,
> +	.num_domains = ARRAY_SIZE(qcs404_adsp_domains),
> +};
> +
> +static const struct adsp_data sc7180_adsp_resource = {
> +	.crash_reason_smem = 423,
> +	.firmware_name = "adsp.mdt",
> +	.pas_id = 1,
> +	.auto_boot = true,
> +	.proxy_pd_names = (char*[]){
> +		"lcx",
> +		"lmx",
> +		NULL
> +	},
> +	.load_state = "adsp",
> +	.ssr_name = "lpass",
> +	.sysmon_name = "adsp",
> +	.ssctl_id = 0x14,
> +	.domains = sc7180_adsp_domains,
> +	.num_domains = ARRAY_SIZE(sc7180_adsp_domains),
> +};
> +
> +static const struct adsp_data sc7280_adsp_resource = {
> +	.crash_reason_smem = 423,
> +	.firmware_name = "adsp.mdt",
> +	.pas_id = 1,
> +	.auto_boot = true,
> +	.proxy_pd_names = (char*[]){
> +		"lcx",
> +		"lmx",
> +		NULL
> +	},
> +	.load_state = "adsp",
> +	.ssr_name = "lpass",
> +	.sysmon_name = "adsp",
> +	.ssctl_id = 0x14,
> +	.domains = sc7280_adsp_domains,
> +	.num_domains = ARRAY_SIZE(sc7280_adsp_domains),
>   };
>   
>   static const struct adsp_data sdm845_adsp_resource_init = {
> @@ -825,6 +1060,20 @@ static const struct adsp_data sdm845_adsp_resource_init = {
>   	.ssr_name = "lpass",
>   	.sysmon_name = "adsp",
>   	.ssctl_id = 0x14,
> +	.domains = sdm845_adsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_adsp_domains),
> +};
> +
> +static const struct adsp_data sm6115_adsp_resource = {
> +	.crash_reason_smem = 423,
> +	.firmware_name = "adsp.mdt",
> +	.pas_id = 1,
> +	.auto_boot = true,
> +	.ssr_name = "lpass",
> +	.sysmon_name = "adsp",
> +	.ssctl_id = 0x14,
> +	.domains = sdm845_adsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_adsp_domains),
>   };
>   
>   static const struct adsp_data sm6350_adsp_resource = {
> @@ -841,6 +1090,8 @@ static const struct adsp_data sm6350_adsp_resource = {
>   	.ssr_name = "lpass",
>   	.sysmon_name = "adsp",
>   	.ssctl_id = 0x14,
> +	.domains = qcs404_adsp_domains,
> +	.num_domains = ARRAY_SIZE(qcs404_adsp_domains),
>   };
>   
>   static const struct adsp_data sm6375_mpss_resource = {
> @@ -856,6 +1107,7 @@ static const struct adsp_data sm6375_mpss_resource = {
>   	.ssr_name = "mpss",
>   	.sysmon_name = "modem",
>   	.ssctl_id = 0x12,
> +	// TODO: domains
>   };
>   
>   static const struct adsp_data sm8150_adsp_resource = {
> @@ -871,6 +1123,8 @@ static const struct adsp_data sm8150_adsp_resource = {
>   	.ssr_name = "lpass",
>   	.sysmon_name = "adsp",
>   	.ssctl_id = 0x14,
> +	.domains = sdm845_adsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_adsp_domains),
>   };
>   
>   static const struct adsp_data sm8250_adsp_resource = {
> @@ -887,6 +1141,8 @@ static const struct adsp_data sm8250_adsp_resource = {
>   	.ssr_name = "lpass",
>   	.sysmon_name = "adsp",
>   	.ssctl_id = 0x14,
> +	.domains = sdm845_adsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_adsp_domains),
>   };
>   
>   static const struct adsp_data sm8350_adsp_resource = {
> @@ -903,6 +1159,8 @@ static const struct adsp_data sm8350_adsp_resource = {
>   	.ssr_name = "lpass",
>   	.sysmon_name = "adsp",
>   	.ssctl_id = 0x14,
> +	.domains = sm8350_adsp_domains,
> +	.num_domains = ARRAY_SIZE(sm8350_adsp_domains),
>   };
>   
>   static const struct adsp_data msm8996_adsp_resource = {
> @@ -917,9 +1175,11 @@ static const struct adsp_data msm8996_adsp_resource = {
>   	.ssr_name = "lpass",
>   	.sysmon_name = "adsp",
>   	.ssctl_id = 0x14,
> +	.domains = msm8996_adsp_domains,
> +	.num_domains = ARRAY_SIZE(msm8996_adsp_domains),
>   };
>   
> -static const struct adsp_data cdsp_resource_init = {
> +static const struct adsp_data qcs404_cdsp_resource = {
>   	.crash_reason_smem = 601,
>   	.firmware_name = "cdsp.mdt",
>   	.pas_id = 18,
> @@ -927,6 +1187,8 @@ static const struct adsp_data cdsp_resource_init = {
>   	.ssr_name = "cdsp",
>   	.sysmon_name = "cdsp",
>   	.ssctl_id = 0x17,
> +	.domains = sdm845_cdsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_cdsp_domains),
>   };
>   
>   static const struct adsp_data sdm845_cdsp_resource_init = {
> @@ -938,6 +1200,8 @@ static const struct adsp_data sdm845_cdsp_resource_init = {
>   	.ssr_name = "cdsp",
>   	.sysmon_name = "cdsp",
>   	.ssctl_id = 0x17,
> +	.domains = sdm845_cdsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_cdsp_domains),
>   };
>   
>   static const struct adsp_data sm6350_cdsp_resource = {
> @@ -954,6 +1218,8 @@ static const struct adsp_data sm6350_cdsp_resource = {
>   	.ssr_name = "cdsp",
>   	.sysmon_name = "cdsp",
>   	.ssctl_id = 0x17,
> +	.domains = sdm845_cdsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_cdsp_domains),
>   };
>   
>   static const struct adsp_data sm8150_cdsp_resource = {
> @@ -969,6 +1235,8 @@ static const struct adsp_data sm8150_cdsp_resource = {
>   	.ssr_name = "cdsp",
>   	.sysmon_name = "cdsp",
>   	.ssctl_id = 0x17,
> +	.domains = sdm845_cdsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_cdsp_domains),
>   };
>   
>   static const struct adsp_data sm8250_cdsp_resource = {
> @@ -984,6 +1252,8 @@ static const struct adsp_data sm8250_cdsp_resource = {
>   	.ssr_name = "cdsp",
>   	.sysmon_name = "cdsp",
>   	.ssctl_id = 0x17,
> +	.domains = sdm845_cdsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_cdsp_domains),
>   };
>   
>   static const struct adsp_data sc8280xp_nsp0_resource = {
> @@ -998,6 +1268,8 @@ static const struct adsp_data sc8280xp_nsp0_resource = {
>   	.ssr_name = "cdsp0",
>   	.sysmon_name = "cdsp",
>   	.ssctl_id = 0x17,
> +	.domains = sdm845_cdsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_cdsp_domains),
>   };
>   
>   static const struct adsp_data sc8280xp_nsp1_resource = {
> @@ -1012,6 +1284,7 @@ static const struct adsp_data sc8280xp_nsp1_resource = {
>   	.ssr_name = "cdsp1",
>   	.sysmon_name = "cdsp1",
>   	.ssctl_id = 0x20,
> +	// TODO: domains
>   };
>   
>   static const struct adsp_data sm8350_cdsp_resource = {
> @@ -1028,9 +1301,11 @@ static const struct adsp_data sm8350_cdsp_resource = {
>   	.ssr_name = "cdsp",
>   	.sysmon_name = "cdsp",
>   	.ssctl_id = 0x17,
> +	.domains = sdm845_cdsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_cdsp_domains),
>   };
>   
> -static const struct adsp_data mpss_resource_init = {
> +static const struct adsp_data sc7180_mpss_resource = {
>   	.crash_reason_smem = 421,
>   	.firmware_name = "modem.mdt",
>   	.pas_id = 4,
> @@ -1045,6 +1320,27 @@ static const struct adsp_data mpss_resource_init = {
>   	.ssr_name = "mpss",
>   	.sysmon_name = "modem",
>   	.ssctl_id = 0x12,
> +	.domains = sc7180_mpss_domains,
> +	.num_domains = ARRAY_SIZE(sc7180_mpss_domains),
> +};
> +
> +static const struct adsp_data sc7280_mpss_resource = {
> +	.crash_reason_smem = 421,
> +	.firmware_name = "modem.mdt",
> +	.pas_id = 4,
> +	.minidump_id = 3,
> +	.auto_boot = false,
> +	.proxy_pd_names = (char*[]){
> +		"cx",
> +		"mss",
> +		NULL
> +	},
> +	.load_state = "modem",
> +	.ssr_name = "mpss",
> +	.sysmon_name = "modem",
> +	.ssctl_id = 0x12,
> +	.domains = sm8350_mpss_domains,
> +	.num_domains = ARRAY_SIZE(sm8350_mpss_domains),
>   };
>   
>   static const struct adsp_data sc8180x_mpss_resource = {
> @@ -1060,6 +1356,27 @@ static const struct adsp_data sc8180x_mpss_resource = {
>   	.ssr_name = "mpss",
>   	.sysmon_name = "modem",
>   	.ssctl_id = 0x12,
> +	.domains = sm8150_mpss_domains,
> +	.num_domains = ARRAY_SIZE(sm8150_mpss_domains),
> +};
> +
> +static const struct adsp_data sm8150_mpss_resource = {
> +	.crash_reason_smem = 421,
> +	.firmware_name = "modem.mdt",
> +	.pas_id = 4,
> +	.minidump_id = 3,
> +	.auto_boot = false,
> +	.proxy_pd_names = (char*[]){
> +		"cx",
> +		"mss",
> +		NULL
> +	},
> +	.load_state = "modem",
> +	.ssr_name = "mpss",
> +	.sysmon_name = "modem",
> +	.ssctl_id = 0x12,
> +	.domains = sm8150_mpss_domains,
> +	.num_domains = ARRAY_SIZE(sm8150_mpss_domains),
>   };
>   
>   static const struct adsp_data msm8996_slpi_resource_init = {
> @@ -1074,6 +1391,7 @@ static const struct adsp_data msm8996_slpi_resource_init = {
>   	.ssr_name = "dsps",
>   	.sysmon_name = "slpi",
>   	.ssctl_id = 0x16,
> +	/* no domains */
>   };
>   
>   static const struct adsp_data sdm845_slpi_resource_init = {
> @@ -1090,9 +1408,11 @@ static const struct adsp_data sdm845_slpi_resource_init = {
>   	.ssr_name = "dsps",
>   	.sysmon_name = "slpi",
>   	.ssctl_id = 0x16,
> +	.domains = sdm845_slpi_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_slpi_domains),
>   };
>   
> -static const struct adsp_data wcss_resource_init = {
> +static const struct adsp_data qcs404_wcss_resource = {
>   	.crash_reason_smem = 421,
>   	.firmware_name = "wcnss.mdt",
>   	.pas_id = 6,
> @@ -1100,6 +1420,8 @@ static const struct adsp_data wcss_resource_init = {
>   	.ssr_name = "mpss",
>   	.sysmon_name = "wcnss",
>   	.ssctl_id = 0x12,
> +	.domains = qcs404_mpss_domains,
> +	.num_domains = ARRAY_SIZE(qcs404_mpss_domains),
>   };
>   
>   static const struct adsp_data sdx55_mpss_resource = {
> @@ -1115,6 +1437,7 @@ static const struct adsp_data sdx55_mpss_resource = {
>   	.ssr_name = "mpss",
>   	.sysmon_name = "modem",
>   	.ssctl_id = 0x22,
> +	// TODO: domains
>   };
>   
>   static const struct adsp_data sm8450_mpss_resource = {
> @@ -1133,6 +1456,8 @@ static const struct adsp_data sm8450_mpss_resource = {
>   	.ssr_name = "mpss",
>   	.sysmon_name = "modem",
>   	.ssctl_id = 0x12,
> +	.domains = sm8350_mpss_domains,
> +	.num_domains = ARRAY_SIZE(sm8350_mpss_domains),
>   };
>   
>   static const struct adsp_data sm8550_adsp_resource = {
> @@ -1152,6 +1477,8 @@ static const struct adsp_data sm8550_adsp_resource = {
>   	.ssr_name = "lpass",
>   	.sysmon_name = "adsp",
>   	.ssctl_id = 0x14,
> +	.domains = sm8350_adsp_domains,
> +	.num_domains = ARRAY_SIZE(sm8350_adsp_domains),

Looking at the jsn shipped with the SM8550 adsp, it should be:

static const struct qcom_pdm_domain_data *sm8550_adsp_domains[] = {
	&adsp_audio_pd,
	&adsp_sensor_pd,
	&adsp_root_pd,
	&adsp_charger_pd,
};

since SLPI has been moved to ADSP,
and for the root_pd there's no pdr_enabled service listed.

>   };
>   
>   static const struct adsp_data sm8550_cdsp_resource = {
> @@ -1172,6 +1499,8 @@ static const struct adsp_data sm8550_cdsp_resource = {
>   	.ssr_name = "cdsp",
>   	.sysmon_name = "cdsp",
>   	.ssctl_id = 0x17,
> +	.domains = sdm845_cdsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_cdsp_domains),
>   };
>   
>   static const struct adsp_data sm8550_mpss_resource = {
> @@ -1195,6 +1524,8 @@ static const struct adsp_data sm8550_mpss_resource = {
>   	.region_assign_idx = 2,
>   	.region_assign_count = 1,
>   	.region_assign_vmid = QCOM_SCM_VMID_MSS_MSA,
> +	.domains = sm8350_mpss_domains,
> +	.num_domains = ARRAY_SIZE(sm8350_mpss_domains),
>   };
>   
>   static const struct adsp_data sc7280_wpss_resource = {
> @@ -1235,6 +1566,8 @@ static const struct adsp_data sm8650_cdsp_resource = {
>   	.region_assign_count = 1,
>   	.region_assign_shared = true,
>   	.region_assign_vmid = QCOM_SCM_VMID_CDSP,
> +	.domains = sdm845_cdsp_domains,
> +	.num_domains = ARRAY_SIZE(sdm845_cdsp_domains),
>   };
>   
>   static const struct adsp_data sm8650_mpss_resource = {
> @@ -1258,29 +1591,32 @@ static const struct adsp_data sm8650_mpss_resource = {
>   	.region_assign_idx = 2,
>   	.region_assign_count = 3,
>   	.region_assign_vmid = QCOM_SCM_VMID_MSS_MSA,
> +	.domains = sm8350_mpss_domains,
> +	.num_domains = ARRAY_SIZE(sm8350_mpss_domains),

Ok for the SM8550/SM8650 CDSP/MPSS.

Neil

>   };
>   
>   static const struct of_device_id adsp_of_match[] = {
>   	{ .compatible = "qcom,msm8226-adsp-pil", .data = &adsp_resource_init},
> +	// FIXME: is msm8996 adsp audio domain applicable to msm8953 ?
>   	{ .compatible = "qcom,msm8953-adsp-pil", .data = &msm8996_adsp_resource},
>   	{ .compatible = "qcom,msm8974-adsp-pil", .data = &adsp_resource_init},
>   	{ .compatible = "qcom,msm8996-adsp-pil", .data = &msm8996_adsp_resource},
>   	{ .compatible = "qcom,msm8996-slpi-pil", .data = &msm8996_slpi_resource_init},
>   	{ .compatible = "qcom,msm8998-adsp-pas", .data = &msm8996_adsp_resource},
>   	{ .compatible = "qcom,msm8998-slpi-pas", .data = &msm8996_slpi_resource_init},
> -	{ .compatible = "qcom,qcs404-adsp-pas", .data = &adsp_resource_init },
> -	{ .compatible = "qcom,qcs404-cdsp-pas", .data = &cdsp_resource_init },
> -	{ .compatible = "qcom,qcs404-wcss-pas", .data = &wcss_resource_init },
> -	{ .compatible = "qcom,sc7180-adsp-pas", .data = &sm8250_adsp_resource},
> -	{ .compatible = "qcom,sc7180-mpss-pas", .data = &mpss_resource_init},
> -	{ .compatible = "qcom,sc7280-adsp-pas", .data = &sm8350_adsp_resource},
> +	{ .compatible = "qcom,qcs404-adsp-pas", .data = &qcs404_adsp_resource },
> +	{ .compatible = "qcom,qcs404-cdsp-pas", .data = &qcs404_cdsp_resource },
> +	{ .compatible = "qcom,qcs404-wcss-pas", .data = &qcs404_wcss_resource },
> +	{ .compatible = "qcom,sc7180-adsp-pas", .data = &sc7180_adsp_resource},
> +	{ .compatible = "qcom,sc7180-mpss-pas", .data = &sc7180_mpss_resource},
> +	{ .compatible = "qcom,sc7280-adsp-pas", .data = &sc7280_adsp_resource},
>   	{ .compatible = "qcom,sc7280-cdsp-pas", .data = &sm6350_cdsp_resource},
> -	{ .compatible = "qcom,sc7280-mpss-pas", .data = &mpss_resource_init},
> +	{ .compatible = "qcom,sc7280-mpss-pas", .data = &sc7280_mpss_resource},
>   	{ .compatible = "qcom,sc7280-wpss-pas", .data = &sc7280_wpss_resource},
>   	{ .compatible = "qcom,sc8180x-adsp-pas", .data = &sm8150_adsp_resource},
>   	{ .compatible = "qcom,sc8180x-cdsp-pas", .data = &sm8150_cdsp_resource},
>   	{ .compatible = "qcom,sc8180x-mpss-pas", .data = &sc8180x_mpss_resource},
> -	{ .compatible = "qcom,sc8280xp-adsp-pas", .data = &sm8250_adsp_resource},
> +	{ .compatible = "qcom,sc8280xp-adsp-pas", .data = &sm8350_adsp_resource},
>   	{ .compatible = "qcom,sc8280xp-nsp0-pas", .data = &sc8280xp_nsp0_resource},
>   	{ .compatible = "qcom,sc8280xp-nsp1-pas", .data = &sc8280xp_nsp1_resource},
>   	{ .compatible = "qcom,sdm660-adsp-pas", .data = &adsp_resource_init},
> @@ -1288,18 +1624,18 @@ static const struct of_device_id adsp_of_match[] = {
>   	{ .compatible = "qcom,sdm845-cdsp-pas", .data = &sdm845_cdsp_resource_init},
>   	{ .compatible = "qcom,sdm845-slpi-pas", .data = &sdm845_slpi_resource_init},
>   	{ .compatible = "qcom,sdx55-mpss-pas", .data = &sdx55_mpss_resource},
> -	{ .compatible = "qcom,sm6115-adsp-pas", .data = &adsp_resource_init},
> -	{ .compatible = "qcom,sm6115-cdsp-pas", .data = &cdsp_resource_init},
> +	{ .compatible = "qcom,sm6115-adsp-pas", .data = &sm6115_adsp_resource},
> +	{ .compatible = "qcom,sm6115-cdsp-pas", .data = &qcs404_cdsp_resource},
>   	{ .compatible = "qcom,sm6115-mpss-pas", .data = &sc8180x_mpss_resource},
>   	{ .compatible = "qcom,sm6350-adsp-pas", .data = &sm6350_adsp_resource},
>   	{ .compatible = "qcom,sm6350-cdsp-pas", .data = &sm6350_cdsp_resource},
> -	{ .compatible = "qcom,sm6350-mpss-pas", .data = &mpss_resource_init},
> +	{ .compatible = "qcom,sm6350-mpss-pas", .data = &sm8150_mpss_resource},
>   	{ .compatible = "qcom,sm6375-adsp-pas", .data = &sm6350_adsp_resource},
>   	{ .compatible = "qcom,sm6375-cdsp-pas", .data = &sm8150_cdsp_resource},
>   	{ .compatible = "qcom,sm6375-mpss-pas", .data = &sm6375_mpss_resource},
>   	{ .compatible = "qcom,sm8150-adsp-pas", .data = &sm8150_adsp_resource},
>   	{ .compatible = "qcom,sm8150-cdsp-pas", .data = &sm8150_cdsp_resource},
> -	{ .compatible = "qcom,sm8150-mpss-pas", .data = &mpss_resource_init},
> +	{ .compatible = "qcom,sm8150-mpss-pas", .data = &sm8150_mpss_resource},
>   	{ .compatible = "qcom,sm8150-slpi-pas", .data = &sdm845_slpi_resource_init},
>   	{ .compatible = "qcom,sm8250-adsp-pas", .data = &sm8250_adsp_resource},
>   	{ .compatible = "qcom,sm8250-cdsp-pas", .data = &sm8250_cdsp_resource},
> @@ -1307,7 +1643,7 @@ static const struct of_device_id adsp_of_match[] = {
>   	{ .compatible = "qcom,sm8350-adsp-pas", .data = &sm8350_adsp_resource},
>   	{ .compatible = "qcom,sm8350-cdsp-pas", .data = &sm8350_cdsp_resource},
>   	{ .compatible = "qcom,sm8350-slpi-pas", .data = &sdm845_slpi_resource_init},
> -	{ .compatible = "qcom,sm8350-mpss-pas", .data = &mpss_resource_init},
> +	{ .compatible = "qcom,sm8350-mpss-pas", .data = &sc7280_mpss_resource},
>   	{ .compatible = "qcom,sm8450-adsp-pas", .data = &sm8350_adsp_resource},
>   	{ .compatible = "qcom,sm8450-cdsp-pas", .data = &sm8350_cdsp_resource},
>   	{ .compatible = "qcom,sm8450-slpi-pas", .data = &sdm845_slpi_resource_init},
> 


  reply	other threads:[~2024-03-11 16:58 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-11 15:34 [PATCH v4 0/7] soc: qcom: add in-kernel pd-mapper implementation Dmitry Baryshkov
2024-03-11 15:34 ` [PATCH v4 1/7] soc: qcom: pdr: protect locator_addr with the main mutex Dmitry Baryshkov
2024-03-13 23:35   ` Chris Lew
2024-03-14  0:07     ` Dmitry Baryshkov
2024-03-11 15:34 ` [PATCH v4 2/7] soc: qcom: qmi: add a way to remove running service Dmitry Baryshkov
2024-03-12  0:53   ` Konrad Dybcio
2024-03-12  1:03     ` Dmitry Baryshkov
2024-03-14  0:03   ` Chris Lew
2024-03-14  0:09     ` Dmitry Baryshkov
2024-03-14 17:15       ` Chris Lew
2024-03-11 15:34 ` [PATCH v4 3/7] soc: qcom: add pd-mapper implementation Dmitry Baryshkov
2024-03-12  0:55   ` Konrad Dybcio
2024-03-12  9:43     ` Johan Hovold
2024-03-12  9:36   ` Johan Hovold
2024-03-14 19:44   ` Chris Lew
2024-03-14 21:30     ` Dmitry Baryshkov
2024-03-15  0:57       ` Chris Lew
2024-04-07 23:14   ` Bjorn Andersson
2024-04-07 23:20     ` Dmitry Baryshkov
2024-03-11 15:34 ` [PATCH v4 4/7] remoteproc: qcom: pas: correct data indentation Dmitry Baryshkov
2024-03-11 15:34 ` [PATCH v4 5/7] remoteproc: qcom: adsp: add configuration for in-kernel pdm Dmitry Baryshkov
2024-03-16 18:15   ` Bjorn Andersson
2024-03-11 15:34 ` [PATCH v4 6/7] remoteproc: qcom: mss: " Dmitry Baryshkov
2024-03-11 15:34 ` [PATCH v4 7/7] remoteproc: qcom: pas: " Dmitry Baryshkov
2024-03-11 16:58   ` neil.armstrong [this message]
2024-03-11 17:18 ` [PATCH v4 0/7] soc: qcom: add in-kernel pd-mapper implementation neil.armstrong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9db38740-9a47-407c-ba0d-c87c397824fb@linaro.org \
    --to=neil.armstrong@linaro.org \
    --cc=andersson@kernel.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=johan+linaro@kernel.org \
    --cc=konrad.dybcio@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-remoteproc@vger.kernel.org \
    --cc=mathieu.poirier@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.