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