Re: [RFC PATCH 4/5] remoteproc: qcom: mss: add configuration for in-kernel pdm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 26.12.2023 01:34, Dmitry Baryshkov wrote:
> Add domain / service configuration for the in-kernel protection domain
> mapper service.
> 
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>
> ---
>  drivers/remoteproc/Kconfig         |  1 +
>  drivers/remoteproc/qcom_q6v5_mss.c | 84 ++++++++++++++++++++++++++++++
>  2 files changed, 85 insertions(+)
> 
> diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
> index f1698d4c302e..8152e845f7a3 100644
> --- a/drivers/remoteproc/Kconfig
> +++ b/drivers/remoteproc/Kconfig
> @@ -202,6 +202,7 @@ config QCOM_Q6V5_MSS
>  	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_MDT_LOADER
>  	select QCOM_PIL_INFO
> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
> index 394b2c1cb5e2..0bc611165657 100644
> --- a/drivers/remoteproc/qcom_q6v5_mss.c
> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
> @@ -26,6 +26,7 @@
>  #include <linux/remoteproc.h>
>  #include <linux/reset.h>
>  #include <linux/soc/qcom/mdt_loader.h>
> +#include <linux/soc/qcom/pd_mapper.h>
>  #include <linux/iopoll.h>
>  #include <linux/slab.h>
>  
> @@ -163,6 +164,9 @@ struct rproc_hexagon_res {
>  	bool has_qaccept_regs;
>  	bool has_ext_cntl_regs;
>  	bool has_vq6;
> +
> +	size_t num_domains;
> +	const struct qcom_pdm_domain_data * const *domains;
>  };
>  
>  struct q6v5 {
> @@ -242,6 +246,9 @@ struct q6v5 {
>  	u64 mba_perm;
>  	const char *hexagon_mdt_image;
>  	int version;
> +
> +	size_t num_domains;
> +	const struct qcom_pdm_domain_data * const *domains;
My ocd says num_x should go below x, but that may be a DT leftover..

[...]

>  
> +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 msm8996_mpss_root_pd = {
> +	.domain = "msm/modem/root_pd",
> +	.instance_id = 100,
> +	.services = { NULL },
> +};
> +
> +static const struct qcom_pdm_domain_data sm8150_mpss_root_pd = {
> +	.domain = "msm/modem/root_pd",
> +	.instance_id = 180,
> +	.services = {
> +		"gps/gps_service",
> +		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 *msm8996_mpss_domains[] = {
> +	&msm8996_mpss_root_pd,
> +};
couldn't find anything on 96

> +
> +static const struct qcom_pdm_domain_data *sdm660_mpss_domains[] = {
> +	&mpss_wlan_pd,
> +};
matches my findings

> +
> +static const struct qcom_pdm_domain_data *sdm845_mpss_domains[] = {
> +	&mpss_root_pd,
> +	&mpss_wlan_pd,
> +};
can't see this wlan one, maybe just on my device

> +
> +static const struct qcom_pdm_domain_data *sm8350_mpss_domains[] = {
> +	&sm8150_mpss_root_pd,
> +};
matches my findings

>  static const struct rproc_hexagon_res msm8998_mss = {
> @@ -2309,6 +2389,8 @@ static const struct rproc_hexagon_res msm8998_mss = {
>  	.has_ext_cntl_regs = false,
>  	.has_vq6 = false,
>  	.version = MSS_MSM8998,
> +	.num_domains = ARRAY_SIZE(sdm845_mpss_domains),
> +	.domains = sdm845_mpss_domains,
>  };
matches my findings

Konrad




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux