On Wed, 27 Dec 2023 at 03:43, Konrad Dybcio <[email protected]> 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 <[email protected]>
> > ---
> > 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