Message ID | 20220511161602.117772-1-sireeshkodali1@gmail.com |
---|---|
Headers | show |
Series | Add support for remoteprocs on the MSM8953 platform | expand |
On 11/05/2022 19:15, Sireesh Kodali wrote: > Add support for the Audio DSP PIL found on the Qualcomm MSM8953 > platform. The same configuration is used on all SoCs based on the > MSM8953 platform (SDM450, SDA450, SDM625, SDM632, APQ8053). > > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > --- > drivers/remoteproc/qcom_q6v5_pas.c | 31 ++++++++++++++++++++++++++++++ > 1 file changed, 31 insertions(+) > > diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c > index 1ae47cc153e5..4dcb714a1468 100644 > --- a/drivers/remoteproc/qcom_q6v5_pas.c > +++ b/drivers/remoteproc/qcom_q6v5_pas.c > @@ -617,7 +617,37 @@ static const struct adsp_data sm8350_adsp_resource = { > .ssctl_id = 0x14, > }; > > +static const struct adsp_data msm8953_adsp_resource = { > + .crash_reason_smem = 423, > + .firmware_name = "adsp.mdt", > + .pas_id = 1, > + .has_aggre2_clk = false, > + .auto_boot = true, > + .proxy_pd_names = (char*[]){ > + "cx", > + NULL, > + }, > + .ssr_name = "lpass", > + .sysmon_name = "adsp", > + .ssctl_id = 0x14, > +}; > + > static const struct adsp_data msm8996_adsp_resource = { > + .crash_reason_smem = 423, > + .firmware_name = "adsp.mdt", > + .pas_id = 1, > + .has_aggre2_clk = false, > + .auto_boot = true, > + .proxy_pd_names = (char*[]){ > + "cx", > + NULL, > + }, > + .ssr_name = "lpass", > + .sysmon_name = "adsp", > + .ssctl_id = 0x14, > +}; > + > +static const struct adsp_data msm8998_adsp_resource = { This was dropped in 9ae45035ba2be4117edb8fd3952c3c5b84a0b820. Please take care when rebasing your patches. > .crash_reason_smem = 423, > .firmware_name = "adsp.mdt", > .pas_id = 1, > @@ -850,6 +880,7 @@ static const struct adsp_data sdx55_mpss_resource = { > static const struct of_device_id adsp_of_match[] = { > { .compatible = "qcom,msm8974-adsp-pil", .data = &adsp_resource_init}, > { .compatible = "qcom,msm8996-adsp-pil", .data = &msm8996_adsp_resource}, > + { .compatible = "qcom,msm8953-adsp-pil", .data = &msm8953_adsp_resource}, > { .compatible = "qcom,msm8996-slpi-pil", .data = &slpi_resource_init}, > { .compatible = "qcom,msm8998-adsp-pas", .data = &msm8996_adsp_resource}, > { .compatible = "qcom,msm8998-slpi-pas", .data = &slpi_resource_init},
On 11/05/2022 19:15, Sireesh Kodali wrote: > Add support for the Audio DSP PIL found on the Qualcomm MSM8953 > platform. The same configuration is used on all SoCs based on the > MSM8953 platform (SDM450, SDA450, SDM625, SDM632, APQ8053). > > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > --- > drivers/remoteproc/qcom_q6v5_pas.c | 31 ++++++++++++++++++++++++++++++ > 1 file changed, 31 insertions(+) > > diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c > index 1ae47cc153e5..4dcb714a1468 100644 > --- a/drivers/remoteproc/qcom_q6v5_pas.c > +++ b/drivers/remoteproc/qcom_q6v5_pas.c > @@ -617,7 +617,37 @@ static const struct adsp_data sm8350_adsp_resource = { > .ssctl_id = 0x14, > }; > > +static const struct adsp_data msm8953_adsp_resource = { > + .crash_reason_smem = 423, > + .firmware_name = "adsp.mdt", > + .pas_id = 1, > + .has_aggre2_clk = false, > + .auto_boot = true, > + .proxy_pd_names = (char*[]){ > + "cx", > + NULL, > + }, > + .ssr_name = "lpass", > + .sysmon_name = "adsp", > + .ssctl_id = 0x14, > +}; > + Also it looks like this item is identical to msm8996_adsp_resources. So you can existing structure instead. > static const struct adsp_data msm8996_adsp_resource = { > + .crash_reason_smem = 423, > + .firmware_name = "adsp.mdt", > + .pas_id = 1, > + .has_aggre2_clk = false, > + .auto_boot = true, > + .proxy_pd_names = (char*[]){ > + "cx", > + NULL, > + }, > + .ssr_name = "lpass", > + .sysmon_name = "adsp", > + .ssctl_id = 0x14, > +}; > + > +static const struct adsp_data msm8998_adsp_resource = { > .crash_reason_smem = 423, > .firmware_name = "adsp.mdt", > .pas_id = 1, > @@ -850,6 +880,7 @@ static const struct adsp_data sdx55_mpss_resource = { > static const struct of_device_id adsp_of_match[] = { > { .compatible = "qcom,msm8974-adsp-pil", .data = &adsp_resource_init}, > { .compatible = "qcom,msm8996-adsp-pil", .data = &msm8996_adsp_resource}, > + { .compatible = "qcom,msm8953-adsp-pil", .data = &msm8953_adsp_resource}, > { .compatible = "qcom,msm8996-slpi-pil", .data = &slpi_resource_init}, > { .compatible = "qcom,msm8998-adsp-pas", .data = &msm8996_adsp_resource}, > { .compatible = "qcom,msm8998-slpi-pas", .data = &slpi_resource_init},
On 11/05/2022 19:15, Sireesh Kodali wrote: > The modem on the MSM8953 platform is similar to the modem on the MSM8996 > platform in terms of set up. It differs primarily in the way it needs SCM > to bless the MPSS firmware region. > > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > --- > drivers/remoteproc/qcom_q6v5_mss.c | 64 +++++++++++++++++++++++++++--- > 1 file changed, 58 insertions(+), 6 deletions(-) > > diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c > index af217de75e4d..a73fdcddeda4 100644 > --- a/drivers/remoteproc/qcom_q6v5_mss.c > +++ b/drivers/remoteproc/qcom_q6v5_mss.c > @@ -234,6 +234,7 @@ struct q6v5 { > > enum { > MSS_MSM8916, > + MSS_MSM8953, > MSS_MSM8974, > MSS_MSM8996, > MSS_MSM8998, > @@ -687,12 +688,14 @@ static int q6v5proc_reset(struct q6v5 *qproc) > } > goto pbl_wait; > } else if (qproc->version == MSS_MSM8996 || > - qproc->version == MSS_MSM8998) { > + qproc->version == MSS_MSM8998 || > + qproc->version == MSS_MSM8953) { > int mem_pwr_ctl; > > /* Override the ACC value if required */ > - writel(QDSP6SS_ACC_OVERRIDE_VAL, > - qproc->reg_base + QDSP6SS_STRAP_ACC); > + if (qproc->version != MSS_MSM8953) > + writel(QDSP6SS_ACC_OVERRIDE_VAL, > + qproc->reg_base + QDSP6SS_STRAP_ACC); > > /* Assert resets, stop core */ > val = readl(qproc->reg_base + QDSP6SS_RESET_REG); > @@ -734,7 +737,8 @@ static int q6v5proc_reset(struct q6v5 *qproc) > writel(val, qproc->reg_base + QDSP6SS_PWR_CTL_REG); > > /* Turn on L1, L2, ETB and JU memories 1 at a time */ > - if (qproc->version == MSS_MSM8996) { > + if (qproc->version == MSS_MSM8996 || > + qproc->version == MSS_MSM8953) { > mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL; > i = 19; > } else { > @@ -1314,7 +1318,16 @@ static int q6v5_mpss_load(struct q6v5 *qproc) > max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K); > } > > - /* > + if (qproc->version == MSS_MSM8953) { > + ret = qcom_scm_pas_mem_setup(5, qproc->mpss_phys, qproc->mpss_size); > + if (ret) { > + dev_err(qproc->dev, > + "setting up mpss memory failed: %d\n", ret); > + goto release_firmware; > + } > + } > + > + /** Single star please > * In case of a modem subsystem restart on secure devices, the modem > * memory can be reclaimed only after MBA is loaded. > */ > @@ -1413,7 +1426,6 @@ static int q6v5_mpss_load(struct q6v5 *qproc) > writel(RMB_CMD_LOAD_READY, qproc->rmb_base + RMB_MBA_COMMAND_REG); > } > writel(size, qproc->rmb_base + RMB_PMI_CODE_LENGTH_REG); > - > ret = readl(qproc->rmb_base + RMB_MBA_STATUS_REG); > if (ret < 0) { > dev_err(qproc->dev, "MPSS authentication failed: %d\n", > @@ -1422,6 +1434,7 @@ static int q6v5_mpss_load(struct q6v5 *qproc) > } > } > > + Unnecessary > /* Transfer ownership of modem ddr region to q6 */ > ret = q6v5_xfer_mem_ownership(qproc, &qproc->mpss_perm, false, true, > qproc->mpss_phys, qproc->mpss_size); > @@ -2198,6 +2211,44 @@ static const struct rproc_hexagon_res msm8996_mss = { > .version = MSS_MSM8996, > }; > > +static const struct rproc_hexagon_res msm8953_mss = { > + .hexagon_mba_image = "mba.mbn", > + .proxy_supply = (struct qcom_mss_reg_res[]) { > + { > + .supply = "pll", > + .uA = 100000, > + }, > + {} > + }, > + .proxy_pd_names = (char*[]) { > + "cx", > + "mx", > + NULL > + }, > + .active_supply = (struct qcom_mss_reg_res[]) { > + { > + .supply = "mss", > + .uV = 1050000, > + .uA = 100000, > + }, > + {} > + }, > + .proxy_clk_names = (char*[]){ > + "xo", > + NULL > + }, > + .active_clk_names = (char*[]){ > + "iface", > + "bus", > + "mem", > + NULL > + }, > + .need_mem_protection = false, > + .has_alt_reset = false, > + .has_spare_reg = false, Please follow the custom and define the rest of fields here. > + .version = MSS_MSM8953, > +}; > + > static const struct rproc_hexagon_res msm8916_mss = { > .hexagon_mba_image = "mba.mbn", > .proxy_supply = (struct qcom_mss_reg_res[]) { > @@ -2301,6 +2352,7 @@ static const struct of_device_id q6v5_of_match[] = { > { .compatible = "qcom,msm8916-mss-pil", .data = &msm8916_mss}, > { .compatible = "qcom,msm8974-mss-pil", .data = &msm8974_mss}, > { .compatible = "qcom,msm8996-mss-pil", .data = &msm8996_mss}, > + { .compatible = "qcom,msm8953-mss-pil", .data = &msm8953_mss}, > { .compatible = "qcom,msm8998-mss-pil", .data = &msm8998_mss}, > { .compatible = "qcom,sc7180-mss-pil", .data = &sc7180_mss}, > { .compatible = "qcom,sc7280-mss-pil", .data = &sc7280_mss},
On 11/05/2022 18:16, Sireesh Kodali wrote: > This commit adds the modem (q6v5_mss), WiFi (wcnss-pil) and audio DSP > (q6v5_pas) remote processor nodes for the MSM8953 platform. It also adds > the coresponding SMP2P, SMSM and pinctrl nodes that are needed by these > remote processors. > > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > + }; > + > + wcnss_sleep: wcnss-sleep-pins { > + wcss_wlan2 { No underscores in node names, unless something needs it? > + pins = "gpio76"; > + function = "wcss_wlan2"; > + }; > + wcss_wlan1 { > + pins = "gpio77"; > + function = "wcss_wlan1"; > + }; > + wcss_wlan0 { > + pins = "gpio78"; > + function = "wcss_wlan0"; > + }; > + wcss_wlan { > + pins = "gpio79", "gpio80"; > + function = "wcss_wlan"; > + }; > + > + pinconf { > + pins = "gpio76", "gpio77", > + "gpio78", "gpio79", > + "gpio80"; > + drive-strength = <2>; > + bias-pull-down; > + }; > + }; > }; > > gcc: clock-controller@1800000 { > @@ -745,6 +892,59 @@ spmi_bus: spmi@200f000 { > #size-cells = <0>; > }; > > + modem: remoteproc@4080000 { > + compatible = "qcom,msm8953-mss-pil"; > + reg = <0x4080000 0x100>, > + <0x4020000 0x040>; > + > + reg-names = "qdsp6", "rmb"; > + > + interrupts-extended = <&intc 0 24 1>, > + <&modem_smp2p_in 0 0>, > + <&modem_smp2p_in 1 0>, > + <&modem_smp2p_in 2 0>, > + <&modem_smp2p_in 3 0>; > + interrupt-names = "wdog", "fatal", "ready", > + "handover", "stop-ack"; > + > + clocks = <&gcc GCC_MSS_CFG_AHB_CLK>, > + <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>, > + <&gcc GCC_BOOT_ROM_AHB_CLK>, > + <&xo_board>; > + clock-names = "iface", "bus", "mem", "xo"; > + > + power-domains = <&rpmpd MSM8953_VDDCX>, <&rpmpd MSM8953_VDDMX>; > + power-domain-names = "cx", "mx"; > + > + qcom,smem-states = <&modem_smp2p_out 0>; > + qcom,smem-state-names = "stop"; > + > + resets = <&gcc GCC_MSS_BCR>; > + reset-names = "mss_restart"; > + > + qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>; > + > + status = "okay"; No need for okay. > + > + mba { > + memory-region = <&mba_mem>; > + }; > + > + mpss { > + memory-region = <&mpss_mem>; > + }; > + > + smd-edge { > + interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>; > + > + qcom,smd-edge = <0>; > + qcom,ipc = <&apcs 8 12>; > + qcom,remote-pid = <1>; > + > + label = "modem"; > + }; > + }; > + > usb3: usb@70f8800 { > compatible = "qcom,msm8953-dwc3", "qcom,dwc3"; > reg = <0x70f8800 0x400>; > @@ -1057,6 +1257,74 @@ i2c_8: i2c@7af8000 { > status = "disabled"; > }; > > + pronto: remoteproc@a21b000 { > + compatible = "qcom,pronto-v3-pil", "qcom,pronto"; > + reg = <0xa204000 0x2000>, > + <0xa202000 0x1000>, > + <0xa21b000 0x3000>; > + reg-names = "ccu", "dxe", "pmu"; > + > + memory-region = <&wcnss_fw_mem>; > + > + interrupts-extended = <&intc 0 149 IRQ_TYPE_EDGE_RISING>, > + <&wcnss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, > + <&wcnss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>, > + <&wcnss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>, > + <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>; > + interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack"; > + > + power-domains = <&rpmpd MSM8953_VDDCX>, <&rpmpd MSM8953_VDDMX>; > + power-domain-names = "cx", "mx"; > + > + qcom,state = <&wcnss_smp2p_out 0>; > + qcom,state-names = "stop"; > + > + pinctrl-names = "default", "sleep"; > + pinctrl-0 = <&wcnss_default>; > + pinctrl-1 = <&wcnss_sleep>; > + > + status = "okay"; No need for status. > + > + iris: iris { > + compatible = "qcom,wcn3660b"; > + > + clocks = <&rpmcc RPM_SMD_RF_CLK2>; > + clock-names = "xo"; > + }; > + > + smd-edge { > + interrupts = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>; > + > + qcom,ipc = <&apcs 8 17>; > + qcom,smd-edge = <6>; > + qcom,remote-pid = <4>; > + > + label = "pronto"; > + > + wcnss { > + compatible = "qcom,wcnss"; > + qcom,smd-channels = "WCNSS_CTRL"; > + > + qcom,mmio = <&pronto>; > + > + bt { > + compatible = "qcom,wcnss-bt"; > + }; > + > + wifi { > + compatible = "qcom,wcnss-wlan"; > + > + interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "tx", "rx"; > + > + qcom,smem-states = <&apps_smsm 10>, <&apps_smsm 9>; > + qcom,smem-state-names = "tx-enable", "tx-rings-empty"; > + }; > + }; > + }; > + }; > + > intc: interrupt-controller@b000000 { > compatible = "qcom,msm-qgic2"; > interrupt-controller; > @@ -1070,6 +1338,116 @@ apcs: mailbox@b011000 { > #mbox-cells = <1>; > }; > > + lpass: remoteproc@c200000 { > + compatible = "qcom,msm8953-adsp-pil"; > + reg = <0xc200000 0x100>; > + > + interrupts-extended = <&intc 0 293 IRQ_TYPE_EDGE_RISING>, > + <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>, > + <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>, > + <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>, > + <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>; > + interrupt-names = "wdog", "fatal", "ready", > + "handover", "stop-ack"; > + clocks = <&xo_board>; > + clock-names = "xo"; > + > + power-domains = <&rpmpd MSM8953_VDDCX>; > + power-domain-names = "cx"; > + > + memory-region = <&adsp_fw_mem>; > + > + qcom,smem-states = <&smp2p_adsp_out 0>; > + qcom,smem-state-names = "stop"; > + > + smd-edge { > + interrupts = <GIC_SPI 289 IRQ_TYPE_EDGE_RISING>; > + > + label = "lpass"; > + mboxes = <&apcs 8>; > + qcom,smd-edge = <1>; > + qcom,remote-pid = <2>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + apr { > + compatible = "qcom,apr-v2"; > + qcom,smd-channels = "apr_audio_svc"; > + qcom,apr-domain = <APR_DOMAIN_ADSP>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + q6core { > + reg = <APR_SVC_ADSP_CORE>; > + compatible = "qcom,q6core"; > + }; > + > + q6afe: q6afe { > + compatible = "qcom,q6afe"; > + reg = <APR_SVC_AFE>; > + q6afedai: dais { > + compatible = "qcom,q6afe-dais"; > + #address-cells = <1>; > + #size-cells = <0>; > + #sound-dai-cells = <1>; > + > + dai@16 { > + reg = <PRIMARY_MI2S_RX>; > + qcom,sd-lines = <0 1>; > + }; > + > + dai@21 { > + reg = <TERTIARY_MI2S_TX>; > + qcom,sd-lines = <0 1>; > + }; > + }; > + q6afecc: clock-controller { > + compatible = "qcom,q6afe-clocks"; > + #clock-cells = <2>; > + }; > + }; > + > + q6asm: q6asm { > + compatible = "qcom,q6asm"; > + reg = <APR_SVC_ASM>; > + q6asmdai: dais { > + compatible = "qcom,q6asm-dais"; > + #address-cells = <1>; > + #size-cells = <0>; > + #sound-dai-cells = <1>; > + > + dai@0 { > + reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>; > + }; > + > + dai@1 { > + reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>; > + }; > + > + dai@2 { > + reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>; > + }; > + > + dai@3 { > + reg = <MSM_FRONTEND_DAI_MULTIMEDIA4>; > + is-compress-dai; > + }; > + }; > + }; > + > + q6adm: q6adm { > + compatible = "qcom,q6adm"; > + reg = <APR_SVC_ADM>; > + q6routing: routing { > + compatible = "qcom,q6adm-routing"; > + #sound-dai-cells = <0>; > + }; > + }; > + }; > + }; > + Remove unneeded blank lines. > + }; > + > timer@b120000 { > compatible = "arm,armv7-timer-mem"; > reg = <0xb120000 0x1000>; Best regards, Krzysztof
On Wed May 11, 2022 at 10:24 PM IST, Dmitry Baryshkov wrote: > On 11/05/2022 19:15, Sireesh Kodali wrote: > > The modem on the MSM8953 platform is similar to the modem on the MSM8996 > > platform in terms of set up. It differs primarily in the way it needs SCM > > to bless the MPSS firmware region. > > > > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > > --- > > drivers/remoteproc/qcom_q6v5_mss.c | 64 +++++++++++++++++++++++++++--- > > 1 file changed, 58 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c > > index af217de75e4d..a73fdcddeda4 100644 > > --- a/drivers/remoteproc/qcom_q6v5_mss.c > > +++ b/drivers/remoteproc/qcom_q6v5_mss.c > > @@ -234,6 +234,7 @@ struct q6v5 { > > > > enum { > > MSS_MSM8916, > > + MSS_MSM8953, > > MSS_MSM8974, > > MSS_MSM8996, > > MSS_MSM8998, > > @@ -687,12 +688,14 @@ static int q6v5proc_reset(struct q6v5 *qproc) > > } > > goto pbl_wait; > > } else if (qproc->version == MSS_MSM8996 || > > - qproc->version == MSS_MSM8998) { > > + qproc->version == MSS_MSM8998 || > > + qproc->version == MSS_MSM8953) { > > int mem_pwr_ctl; > > > > /* Override the ACC value if required */ > > - writel(QDSP6SS_ACC_OVERRIDE_VAL, > > - qproc->reg_base + QDSP6SS_STRAP_ACC); > > + if (qproc->version != MSS_MSM8953) > > + writel(QDSP6SS_ACC_OVERRIDE_VAL, > > + qproc->reg_base + QDSP6SS_STRAP_ACC); > > > > /* Assert resets, stop core */ > > val = readl(qproc->reg_base + QDSP6SS_RESET_REG); > > @@ -734,7 +737,8 @@ static int q6v5proc_reset(struct q6v5 *qproc) > > writel(val, qproc->reg_base + QDSP6SS_PWR_CTL_REG); > > > > /* Turn on L1, L2, ETB and JU memories 1 at a time */ > > - if (qproc->version == MSS_MSM8996) { > > + if (qproc->version == MSS_MSM8996 || > > + qproc->version == MSS_MSM8953) { > > mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL; > > i = 19; > > } else { > > @@ -1314,7 +1318,16 @@ static int q6v5_mpss_load(struct q6v5 *qproc) > > max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K); > > } > > > > - /* > > + if (qproc->version == MSS_MSM8953) { > > + ret = qcom_scm_pas_mem_setup(5, qproc->mpss_phys, qproc->mpss_size); > > + if (ret) { > > + dev_err(qproc->dev, > > + "setting up mpss memory failed: %d\n", ret); > > + goto release_firmware; > > + } > > + } > > + > > + /** > > Single star please > > > * In case of a modem subsystem restart on secure devices, the modem > > * memory can be reclaimed only after MBA is loaded. > > */ > > @@ -1413,7 +1426,6 @@ static int q6v5_mpss_load(struct q6v5 *qproc) > > writel(RMB_CMD_LOAD_READY, qproc->rmb_base + RMB_MBA_COMMAND_REG); > > } > > writel(size, qproc->rmb_base + RMB_PMI_CODE_LENGTH_REG); > > - > > ret = readl(qproc->rmb_base + RMB_MBA_STATUS_REG); > > if (ret < 0) { > > dev_err(qproc->dev, "MPSS authentication failed: %d\n", > > @@ -1422,6 +1434,7 @@ static int q6v5_mpss_load(struct q6v5 *qproc) > > } > > } > > > > + > > Unnecessary > oops > > /* Transfer ownership of modem ddr region to q6 */ > > ret = q6v5_xfer_mem_ownership(qproc, &qproc->mpss_perm, false, true, > > qproc->mpss_phys, qproc->mpss_size); > > @@ -2198,6 +2211,44 @@ static const struct rproc_hexagon_res msm8996_mss = { > > .version = MSS_MSM8996, > > }; > > > > +static const struct rproc_hexagon_res msm8953_mss = { > > + .hexagon_mba_image = "mba.mbn", > > + .proxy_supply = (struct qcom_mss_reg_res[]) { > > + { > > + .supply = "pll", > > + .uA = 100000, > > + }, > > + {} > > + }, > > + .proxy_pd_names = (char*[]) { > > + "cx", > > + "mx", > > + NULL > > + }, > > + .active_supply = (struct qcom_mss_reg_res[]) { > > + { > > + .supply = "mss", > > + .uV = 1050000, > > + .uA = 100000, > > + }, > > + {} > > + }, > > + .proxy_clk_names = (char*[]){ > > + "xo", > > + NULL > > + }, > > + .active_clk_names = (char*[]){ > > + "iface", > > + "bus", > > + "mem", > > + NULL > > + }, > > + .need_mem_protection = false, > > + .has_alt_reset = false, > > + .has_spare_reg = false, > > > Please follow the custom and define the rest of fields here. > I missed these in the rebase, I'll add them in v2 > > + .version = MSS_MSM8953, > > +}; > > + > > static const struct rproc_hexagon_res msm8916_mss = { > > .hexagon_mba_image = "mba.mbn", > > .proxy_supply = (struct qcom_mss_reg_res[]) { > > @@ -2301,6 +2352,7 @@ static const struct of_device_id q6v5_of_match[] = { > > { .compatible = "qcom,msm8916-mss-pil", .data = &msm8916_mss}, > > { .compatible = "qcom,msm8974-mss-pil", .data = &msm8974_mss}, > > { .compatible = "qcom,msm8996-mss-pil", .data = &msm8996_mss}, > > + { .compatible = "qcom,msm8953-mss-pil", .data = &msm8953_mss}, > > { .compatible = "qcom,msm8998-mss-pil", .data = &msm8998_mss}, > > { .compatible = "qcom,sc7180-mss-pil", .data = &sc7180_mss}, > > { .compatible = "qcom,sc7280-mss-pil", .data = &sc7280_mss}, > > > -- > With best wishes > Dmitry Thank you for the review, I'll make the changes in v2 of this patch. Thanks, Sireesh
On Wed May 11, 2022 at 11:25 PM IST, Krzysztof Kozlowski wrote: > On 11/05/2022 18:16, Sireesh Kodali wrote: > > This commit adds the modem (q6v5_mss), WiFi (wcnss-pil) and audio DSP > > (q6v5_pas) remote processor nodes for the MSM8953 platform. It also adds > > the coresponding SMP2P, SMSM and pinctrl nodes that are needed by these > > remote processors. > > > > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > > + }; > > + > > + wcnss_sleep: wcnss-sleep-pins { > > + wcss_wlan2 { > > No underscores in node names, unless something needs it? > wcnss_sleep is used by the pronto node defined below > > + pins = "gpio76"; > > + function = "wcss_wlan2"; > > + }; > > + wcss_wlan1 { > > + pins = "gpio77"; > > + function = "wcss_wlan1"; > > + }; > > + wcss_wlan0 { > > + pins = "gpio78"; > > + function = "wcss_wlan0"; > > + }; > > + wcss_wlan { > > + pins = "gpio79", "gpio80"; > > + function = "wcss_wlan"; > > + }; > > + > > + pinconf { > > + pins = "gpio76", "gpio77", > > + "gpio78", "gpio79", > > + "gpio80"; > > + drive-strength = <2>; > > + bias-pull-down; > > + }; > > + }; > > }; > > > > gcc: clock-controller@1800000 { > > @@ -745,6 +892,59 @@ spmi_bus: spmi@200f000 { > > #size-cells = <0>; > > }; > > > > + modem: remoteproc@4080000 { > > + compatible = "qcom,msm8953-mss-pil"; > > + reg = <0x4080000 0x100>, > > + <0x4020000 0x040>; > > + > > + reg-names = "qdsp6", "rmb"; > > + > > + interrupts-extended = <&intc 0 24 1>, > > + <&modem_smp2p_in 0 0>, > > + <&modem_smp2p_in 1 0>, > > + <&modem_smp2p_in 2 0>, > > + <&modem_smp2p_in 3 0>; > > + interrupt-names = "wdog", "fatal", "ready", > > + "handover", "stop-ack"; > > + > > + clocks = <&gcc GCC_MSS_CFG_AHB_CLK>, > > + <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>, > > + <&gcc GCC_BOOT_ROM_AHB_CLK>, > > + <&xo_board>; > > + clock-names = "iface", "bus", "mem", "xo"; > > + > > + power-domains = <&rpmpd MSM8953_VDDCX>, <&rpmpd MSM8953_VDDMX>; > > + power-domain-names = "cx", "mx"; > > + > > + qcom,smem-states = <&modem_smp2p_out 0>; > > + qcom,smem-state-names = "stop"; > > + > > + resets = <&gcc GCC_MSS_BCR>; > > + reset-names = "mss_restart"; > > + > > + qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>; > > + > > + status = "okay"; > > No need for okay. I'll drop it in v2 > > > + > > + mba { > > + memory-region = <&mba_mem>; > > + }; > > + > > + mpss { > > + memory-region = <&mpss_mem>; > > + }; > > + > > + smd-edge { > > + interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>; > > + > > + qcom,smd-edge = <0>; > > + qcom,ipc = <&apcs 8 12>; > > + qcom,remote-pid = <1>; > > + > > + label = "modem"; > > + }; > > + }; > > + > > usb3: usb@70f8800 { > > compatible = "qcom,msm8953-dwc3", "qcom,dwc3"; > > reg = <0x70f8800 0x400>; > > @@ -1057,6 +1257,74 @@ i2c_8: i2c@7af8000 { > > status = "disabled"; > > }; > > > > + pronto: remoteproc@a21b000 { > > + compatible = "qcom,pronto-v3-pil", "qcom,pronto"; > > + reg = <0xa204000 0x2000>, > > + <0xa202000 0x1000>, > > + <0xa21b000 0x3000>; > > + reg-names = "ccu", "dxe", "pmu"; > > + > > + memory-region = <&wcnss_fw_mem>; > > + > > + interrupts-extended = <&intc 0 149 IRQ_TYPE_EDGE_RISING>, > > + <&wcnss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, > > + <&wcnss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>, > > + <&wcnss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>, > > + <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>; > > + interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack"; > > + > > + power-domains = <&rpmpd MSM8953_VDDCX>, <&rpmpd MSM8953_VDDMX>; > > + power-domain-names = "cx", "mx"; > > + > > + qcom,state = <&wcnss_smp2p_out 0>; > > + qcom,state-names = "stop"; > > + > > + pinctrl-names = "default", "sleep"; > > + pinctrl-0 = <&wcnss_default>; > > + pinctrl-1 = <&wcnss_sleep>; > > + > > + status = "okay"; > > No need for status. Will be dropped in v2 > > > + > > + iris: iris { > > + compatible = "qcom,wcn3660b"; > > + > > + clocks = <&rpmcc RPM_SMD_RF_CLK2>; > > + clock-names = "xo"; > > + }; > > + > > + smd-edge { > > + interrupts = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>; > > + > > + qcom,ipc = <&apcs 8 17>; > > + qcom,smd-edge = <6>; > > + qcom,remote-pid = <4>; > > + > > + label = "pronto"; > > + > > + wcnss { > > + compatible = "qcom,wcnss"; > > + qcom,smd-channels = "WCNSS_CTRL"; > > + > > + qcom,mmio = <&pronto>; > > + > > + bt { > > + compatible = "qcom,wcnss-bt"; > > + }; > > + > > + wifi { > > + compatible = "qcom,wcnss-wlan"; > > + > > + interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>, > > + <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>; > > + interrupt-names = "tx", "rx"; > > + > > + qcom,smem-states = <&apps_smsm 10>, <&apps_smsm 9>; > > + qcom,smem-state-names = "tx-enable", "tx-rings-empty"; > > + }; > > + }; > > + }; > > + }; > > + > > intc: interrupt-controller@b000000 { > > compatible = "qcom,msm-qgic2"; > > interrupt-controller; > > @@ -1070,6 +1338,116 @@ apcs: mailbox@b011000 { > > #mbox-cells = <1>; > > }; > > > > + lpass: remoteproc@c200000 { > > + compatible = "qcom,msm8953-adsp-pil"; > > + reg = <0xc200000 0x100>; > > + > > + interrupts-extended = <&intc 0 293 IRQ_TYPE_EDGE_RISING>, > > + <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>, > > + <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>, > > + <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>, > > + <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>; > > + interrupt-names = "wdog", "fatal", "ready", > > + "handover", "stop-ack"; > > + clocks = <&xo_board>; > > + clock-names = "xo"; > > + > > + power-domains = <&rpmpd MSM8953_VDDCX>; > > + power-domain-names = "cx"; > > + > > + memory-region = <&adsp_fw_mem>; > > + > > + qcom,smem-states = <&smp2p_adsp_out 0>; > > + qcom,smem-state-names = "stop"; > > + > > + smd-edge { > > + interrupts = <GIC_SPI 289 IRQ_TYPE_EDGE_RISING>; > > + > > + label = "lpass"; > > + mboxes = <&apcs 8>; > > + qcom,smd-edge = <1>; > > + qcom,remote-pid = <2>; > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + apr { > > + compatible = "qcom,apr-v2"; > > + qcom,smd-channels = "apr_audio_svc"; > > + qcom,apr-domain = <APR_DOMAIN_ADSP>; > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + q6core { > > + reg = <APR_SVC_ADSP_CORE>; > > + compatible = "qcom,q6core"; > > + }; > > + > > + q6afe: q6afe { > > + compatible = "qcom,q6afe"; > > + reg = <APR_SVC_AFE>; > > + q6afedai: dais { > > + compatible = "qcom,q6afe-dais"; > > + #address-cells = <1>; > > + #size-cells = <0>; > > + #sound-dai-cells = <1>; > > + > > + dai@16 { > > + reg = <PRIMARY_MI2S_RX>; > > + qcom,sd-lines = <0 1>; > > + }; > > + > > + dai@21 { > > + reg = <TERTIARY_MI2S_TX>; > > + qcom,sd-lines = <0 1>; > > + }; > > + }; > > + q6afecc: clock-controller { > > + compatible = "qcom,q6afe-clocks"; > > + #clock-cells = <2>; > > + }; > > + }; > > + > > + q6asm: q6asm { > > + compatible = "qcom,q6asm"; > > + reg = <APR_SVC_ASM>; > > + q6asmdai: dais { > > + compatible = "qcom,q6asm-dais"; > > + #address-cells = <1>; > > + #size-cells = <0>; > > + #sound-dai-cells = <1>; > > + > > + dai@0 { > > + reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>; > > + }; > > + > > + dai@1 { > > + reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>; > > + }; > > + > > + dai@2 { > > + reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>; > > + }; > > + > > + dai@3 { > > + reg = <MSM_FRONTEND_DAI_MULTIMEDIA4>; > > + is-compress-dai; > > + }; > > + }; > > + }; > > + > > + q6adm: q6adm { > > + compatible = "qcom,q6adm"; > > + reg = <APR_SVC_ADM>; > > + q6routing: routing { > > + compatible = "qcom,q6adm-routing"; > > + #sound-dai-cells = <0>; > > + }; > > + }; > > + }; > > + }; > > + > > Remove unneeded blank lines. Will be fixed in v2 > > > + }; > > + > > timer@b120000 { > > compatible = "arm,armv7-timer-mem"; > > reg = <0xb120000 0x1000>; > > > Best regards, > Krzysztof Thanks, Sireesh Kodali
On Wed May 11, 2022 at 10:24 PM IST, Dmitry Baryshkov wrote: > On 11/05/2022 19:15, Sireesh Kodali wrote: > > The modem on the MSM8953 platform is similar to the modem on the MSM8996 > > platform in terms of set up. It differs primarily in the way it needs SCM > > to bless the MPSS firmware region. > > > > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > > --- > > drivers/remoteproc/qcom_q6v5_mss.c | 64 +++++++++++++++++++++++++++--- > > 1 file changed, 58 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c > > index af217de75e4d..a73fdcddeda4 100644 > > --- a/drivers/remoteproc/qcom_q6v5_mss.c > > +++ b/drivers/remoteproc/qcom_q6v5_mss.c > > @@ -234,6 +234,7 @@ struct q6v5 { > > > > enum { > > MSS_MSM8916, > > + MSS_MSM8953, > > MSS_MSM8974, > > MSS_MSM8996, > > MSS_MSM8998, > > @@ -687,12 +688,14 @@ static int q6v5proc_reset(struct q6v5 *qproc) > > } > > goto pbl_wait; > > } else if (qproc->version == MSS_MSM8996 || > > - qproc->version == MSS_MSM8998) { > > + qproc->version == MSS_MSM8998 || > > + qproc->version == MSS_MSM8953) { > > int mem_pwr_ctl; > > > > /* Override the ACC value if required */ > > - writel(QDSP6SS_ACC_OVERRIDE_VAL, > > - qproc->reg_base + QDSP6SS_STRAP_ACC); > > + if (qproc->version != MSS_MSM8953) > > + writel(QDSP6SS_ACC_OVERRIDE_VAL, > > + qproc->reg_base + QDSP6SS_STRAP_ACC); > > > > /* Assert resets, stop core */ > > val = readl(qproc->reg_base + QDSP6SS_RESET_REG); > > @@ -734,7 +737,8 @@ static int q6v5proc_reset(struct q6v5 *qproc) > > writel(val, qproc->reg_base + QDSP6SS_PWR_CTL_REG); > > > > /* Turn on L1, L2, ETB and JU memories 1 at a time */ > > - if (qproc->version == MSS_MSM8996) { > > + if (qproc->version == MSS_MSM8996 || > > + qproc->version == MSS_MSM8953) { > > mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL; > > i = 19; > > } else { > > @@ -1314,7 +1318,16 @@ static int q6v5_mpss_load(struct q6v5 *qproc) > > max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K); > > } > > > > - /* > > + if (qproc->version == MSS_MSM8953) { > > + ret = qcom_scm_pas_mem_setup(5, qproc->mpss_phys, qproc->mpss_size); > > + if (ret) { > > + dev_err(qproc->dev, > > + "setting up mpss memory failed: %d\n", ret); > > + goto release_firmware; > > + } > > + } > > + > > + /** > > Single star please Will fix in v2 > > > * In case of a modem subsystem restart on secure devices, the modem > > * memory can be reclaimed only after MBA is loaded. > > */ > > @@ -1413,7 +1426,6 @@ static int q6v5_mpss_load(struct q6v5 *qproc) > > writel(RMB_CMD_LOAD_READY, qproc->rmb_base + RMB_MBA_COMMAND_REG); > > } > > writel(size, qproc->rmb_base + RMB_PMI_CODE_LENGTH_REG); > > - > > ret = readl(qproc->rmb_base + RMB_MBA_STATUS_REG); > > if (ret < 0) { > > dev_err(qproc->dev, "MPSS authentication failed: %d\n", > > @@ -1422,6 +1434,7 @@ static int q6v5_mpss_load(struct q6v5 *qproc) > > } > > } > > > > + > > Unnecessary Will fix in v2 > > > > /* Transfer ownership of modem ddr region to q6 */ > > ret = q6v5_xfer_mem_ownership(qproc, &qproc->mpss_perm, false, true, > > qproc->mpss_phys, qproc->mpss_size); > > @@ -2198,6 +2211,44 @@ static const struct rproc_hexagon_res msm8996_mss = { > > .version = MSS_MSM8996, > > }; > > > > +static const struct rproc_hexagon_res msm8953_mss = { > > + .hexagon_mba_image = "mba.mbn", > > + .proxy_supply = (struct qcom_mss_reg_res[]) { > > + { > > + .supply = "pll", > > + .uA = 100000, > > + }, > > + {} > > + }, > > + .proxy_pd_names = (char*[]) { > > + "cx", > > + "mx", > > + NULL > > + }, > > + .active_supply = (struct qcom_mss_reg_res[]) { > > + { > > + .supply = "mss", > > + .uV = 1050000, > > + .uA = 100000, > > + }, > > + {} > > + }, > > + .proxy_clk_names = (char*[]){ > > + "xo", > > + NULL > > + }, > > + .active_clk_names = (char*[]){ > > + "iface", > > + "bus", > > + "mem", > > + NULL > > + }, > > + .need_mem_protection = false, > > + .has_alt_reset = false, > > + .has_spare_reg = false, > > > Please follow the custom and define the rest of fields here. Will fix in v2 > > > + .version = MSS_MSM8953, > > +}; > > + > > static const struct rproc_hexagon_res msm8916_mss = { > > .hexagon_mba_image = "mba.mbn", > > .proxy_supply = (struct qcom_mss_reg_res[]) { > > @@ -2301,6 +2352,7 @@ static const struct of_device_id q6v5_of_match[] = { > > { .compatible = "qcom,msm8916-mss-pil", .data = &msm8916_mss}, > > { .compatible = "qcom,msm8974-mss-pil", .data = &msm8974_mss}, > > { .compatible = "qcom,msm8996-mss-pil", .data = &msm8996_mss}, > > + { .compatible = "qcom,msm8953-mss-pil", .data = &msm8953_mss}, > > { .compatible = "qcom,msm8998-mss-pil", .data = &msm8998_mss}, > > { .compatible = "qcom,sc7180-mss-pil", .data = &sc7180_mss}, > > { .compatible = "qcom,sc7280-mss-pil", .data = &sc7280_mss}, > > > -- > With best wishes > Dmitry Thanks, Sireesh
On Wed May 11, 2022 at 10:21 PM IST, Dmitry Baryshkov wrote: > On 11/05/2022 19:15, Sireesh Kodali wrote: > > Add support for the Audio DSP PIL found on the Qualcomm MSM8953 > > platform. The same configuration is used on all SoCs based on the > > MSM8953 platform (SDM450, SDA450, SDM625, SDM632, APQ8053). > > > > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > > --- > > drivers/remoteproc/qcom_q6v5_pas.c | 31 ++++++++++++++++++++++++++++++ > > 1 file changed, 31 insertions(+) > > > > diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c > > index 1ae47cc153e5..4dcb714a1468 100644 > > --- a/drivers/remoteproc/qcom_q6v5_pas.c > > +++ b/drivers/remoteproc/qcom_q6v5_pas.c > > @@ -617,7 +617,37 @@ static const struct adsp_data sm8350_adsp_resource = { > > .ssctl_id = 0x14, > > }; > > > > +static const struct adsp_data msm8953_adsp_resource = { > > + .crash_reason_smem = 423, > > + .firmware_name = "adsp.mdt", > > + .pas_id = 1, > > + .has_aggre2_clk = false, > > + .auto_boot = true, > > + .proxy_pd_names = (char*[]){ > > + "cx", > > + NULL, > > + }, > > + .ssr_name = "lpass", > > + .sysmon_name = "adsp", > > + .ssctl_id = 0x14, > > +}; > > + > > Also it looks like this item is identical to msm8996_adsp_resources. So > you can existing structure instead. > Yes, the msm8953 item is identical to the msm8996_adsp_resource. I wasn't aware that we could re-use structs like this, I will do that in v2 of this patch > > static const struct adsp_data msm8996_adsp_resource = { > > + .crash_reason_smem = 423, > > + .firmware_name = "adsp.mdt", > > + .pas_id = 1, > > + .has_aggre2_clk = false, > > + .auto_boot = true, > > + .proxy_pd_names = (char*[]){ > > + "cx", > > + NULL, > > + }, > > + .ssr_name = "lpass", > > + .sysmon_name = "adsp", > > + .ssctl_id = 0x14, > > +}; > > + > > +static const struct adsp_data msm8998_adsp_resource = { > > .crash_reason_smem = 423, > > .firmware_name = "adsp.mdt", > > .pas_id = 1, > > @@ -850,6 +880,7 @@ static const struct adsp_data sdx55_mpss_resource = { > > static const struct of_device_id adsp_of_match[] = { > > { .compatible = "qcom,msm8974-adsp-pil", .data = &adsp_resource_init}, > > { .compatible = "qcom,msm8996-adsp-pil", .data = &msm8996_adsp_resource}, > > + { .compatible = "qcom,msm8953-adsp-pil", .data = &msm8953_adsp_resource}, > > { .compatible = "qcom,msm8996-slpi-pil", .data = &slpi_resource_init}, > > { .compatible = "qcom,msm8998-adsp-pas", .data = &msm8996_adsp_resource}, > > { .compatible = "qcom,msm8998-slpi-pas", .data = &slpi_resource_init}, > > > -- > With best wishes > Dmitry Thanks, Sireesh
On 12/05/2022 11:19, Sireesh Kodali wrote: > On Wed May 11, 2022 at 11:25 PM IST, Krzysztof Kozlowski wrote: >> On 11/05/2022 18:16, Sireesh Kodali wrote: >>> This commit adds the modem (q6v5_mss), WiFi (wcnss-pil) and audio DSP >>> (q6v5_pas) remote processor nodes for the MSM8953 platform. It also adds >>> the coresponding SMP2P, SMSM and pinctrl nodes that are needed by these >>> remote processors. >>> >>> Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> >>> + }; >>> + >>> + wcnss_sleep: wcnss-sleep-pins { >>> + wcss_wlan2 { >> >> No underscores in node names, unless something needs it? >> > > wcnss_sleep is used by the pronto node defined below wcnss_sleep is not a node name and it is not in the line where I commented. Best regards, Krzysztof
On Thu May 12, 2022 at 8:07 PM IST, Krzysztof Kozlowski wrote: > On 12/05/2022 11:19, Sireesh Kodali wrote: > > On Wed May 11, 2022 at 11:25 PM IST, Krzysztof Kozlowski wrote: > >> On 11/05/2022 18:16, Sireesh Kodali wrote: > >>> This commit adds the modem (q6v5_mss), WiFi (wcnss-pil) and audio DSP > >>> (q6v5_pas) remote processor nodes for the MSM8953 platform. It also adds > >>> the coresponding SMP2P, SMSM and pinctrl nodes that are needed by these > >>> remote processors. > >>> > >>> Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > >>> + }; > >>> + > >>> + wcnss_sleep: wcnss-sleep-pins { > >>> + wcss_wlan2 { > >> > >> No underscores in node names, unless something needs it? > >> > > > > wcnss_sleep is used by the pronto node defined below > > wcnss_sleep is not a node name and it is not in the line where I commented. > Sorry, I'll fix it in v2 > Best regards, > Krzysztof Thanks, Sireesh