On Wed, 27 Dec 2023 at 03:43, Konrad Dybcio <konrad.dybcio@xxxxxxxxxx> wrote: > > 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 The file /lib/firmware/qcom/apq8096/modemr.jsn comes from db820c firmware. > > > + > > +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 And this is really interesting. I think modemuw.jsn is required to make modem.mbn load the wcn3990 firmware (wlanmdsp.mbn) through tqftpserv. What is the WiFi chip on the device you've checked against? > > > + > > +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 -- With best wishes Dmitry