Merge "ARM: dts: msm: Add support for Modem PIL on msmtriton"

This commit is contained in:
Linux Build Service Account 2016-10-27 15:48:54 -07:00 committed by Gerrit - the friendly Code Review server
commit 28c2768ca1
5 changed files with 91 additions and 3 deletions

View file

@ -79,6 +79,7 @@ Optional properties:
current issue. current issue.
- qcom,qdsp6v61-1-1: Boolean- Present if the qdsp version is v61 1.1 - qcom,qdsp6v61-1-1: Boolean- Present if the qdsp version is v61 1.1
- qcom,qdsp6v62-1-2: Boolean- Present if the qdsp version is v62 1.2 - qcom,qdsp6v62-1-2: Boolean- Present if the qdsp version is v62 1.2
- qcom,qdsp6v62-1-5: Boolean- Present if the qdsp version is v62 1.5
- qcom,mx-spike-wa: Boolean- Present if we need to assert QDSP6 I/O clamp, memory - qcom,mx-spike-wa: Boolean- Present if we need to assert QDSP6 I/O clamp, memory
wordline clamp, and compiler memory clamp during MSS restart. wordline clamp, and compiler memory clamp during MSS restart.
- qcom,qdsp6v56-1-10: Boolean- Present if the qdsp version is v56 1.10 - qcom,qdsp6v56-1-10: Boolean- Present if the qdsp version is v56 1.10

View file

@ -134,6 +134,29 @@
gpios = <&smp2pgpio_sleepstate_2_out 0 0>; gpios = <&smp2pgpio_sleepstate_2_out 0 0>;
}; };
/* ssr - inbound entry from mss */
smp2pgpio_ssr_smp2p_1_in: qcom,smp2pgpio-ssr-smp2p-1-in {
compatible = "qcom,smp2pgpio";
qcom,entry-name = "slave-kernel";
qcom,remote-pid = <1>;
qcom,is-inbound;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
/* ssr - outbound entry to mss */
smp2pgpio_ssr_smp2p_1_out: qcom,smp2pgpio-ssr-smp2p-1-out {
compatible = "qcom,smp2pgpio";
qcom,entry-name = "master-kernel";
qcom,remote-pid = <1>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
/* ssr - inbound entry from lpass */ /* ssr - inbound entry from lpass */
smp2pgpio_ssr_smp2p_2_in: qcom,smp2pgpio-ssr-smp2p-2-in { smp2pgpio_ssr_smp2p_2_in: qcom,smp2pgpio-ssr-smp2p-2-in {
compatible = "qcom,smp2pgpio"; compatible = "qcom,smp2pgpio";

View file

@ -609,6 +609,59 @@
memory-region = <&venus_fw_mem>; memory-region = <&venus_fw_mem>;
status = "ok"; status = "ok";
}; };
pil_modem: qcom,mss@4080000 {
compatible = "qcom,pil-q6v55-mss";
reg = <0x4080000 0x100>,
<0x1f63000 0x008>,
<0x1f65000 0x008>,
<0x1f64000 0x008>,
<0x4180000 0x040>,
<0x00179000 0x004>;
reg-names = "qdsp6_base", "halt_q6", "halt_modem",
"halt_nc", "rmb_base", "restart_reg";
clocks = <&clock_rpmcc RPM_XO_CLK_SRC>,
<&clock_gcc GCC_MSS_CFG_AHB_CLK>,
<&clock_gcc GCC_BIMC_MSS_Q6_AXI_CLK>,
<&clock_gcc GCC_BOOT_ROM_AHB_CLK>,
<&clock_gcc GPLL0_OUT_MSSCC>,
<&clock_gcc GCC_MSS_SNOC_AXI_CLK>,
<&clock_gcc GCC_MSS_MNOC_BIMC_AXI_CLK>,
<&clock_rpmcc RPM_QDSS_CLK>;
clock-names = "xo", "iface_clk", "bus_clk",
"mem_clk", "gpll0_mss_clk", "snoc_axi_clk",
"mnoc_axi_clk", "qdss_clk";
qcom,proxy-clock-names = "xo", "qdss_clk";
qcom,active-clock-names = "iface_clk", "bus_clk", "mem_clk",
"gpll0_mss_clk", "snoc_axi_clk",
"mnoc_axi_clk";
interrupts = <0 448 1>;
vdd_cx-supply = <&pmfalcon_s3b_level>;
vdd_cx-voltage = <RPM_SMD_REGULATOR_LEVEL_TURBO>;
vdd_mx-supply = <&pmfalcon_s5b_level>;
vdd_mx-uV = <RPM_SMD_REGULATOR_LEVEL_TURBO>;
qcom,firmware-name = "modem";
qcom,pil-self-auth;
qcom,sysmon-id = <0>;
qcom,ssctl-instance-id = <0x12>;
qcom,override-acc;
qcom,qdsp6v62-1-5;
memory-region = <&modem_fw_mem>;
qcom,mem-protect-id = <0xF>;
/* GPIO inputs from mss */
qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_1_in 0 0>;
qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_1_in 1 0>;
qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_1_in 2 0>;
qcom,gpio-stop-ack = <&smp2pgpio_ssr_smp2p_1_in 3 0>;
qcom,gpio-shutdown-ack = <&smp2pgpio_ssr_smp2p_1_in 7 0>;
/* GPIO output to mss */
qcom,gpio-force-stop = <&smp2pgpio_ssr_smp2p_1_out 0 0>;
status = "ok";
};
}; };
#include "msmtriton-ion.dtsi" #include "msmtriton-ion.dtsi"

View file

@ -388,7 +388,7 @@ static int __pil_q6v55_reset(struct pil_desc *pil)
mb(); mb();
udelay(1); udelay(1);
if (drv->qdsp6v62_1_2) { if (drv->qdsp6v62_1_2 || drv->qdsp6v62_1_5) {
for (i = BHS_CHECK_MAX_LOOPS; i > 0; i--) { for (i = BHS_CHECK_MAX_LOOPS; i > 0; i--) {
if (readl_relaxed(drv->reg_base + QDSP6V62SS_BHS_STATUS) if (readl_relaxed(drv->reg_base + QDSP6V62SS_BHS_STATUS)
& QDSP6v55_BHS_EN_REST_ACK) & QDSP6v55_BHS_EN_REST_ACK)
@ -488,7 +488,8 @@ static int __pil_q6v55_reset(struct pil_desc *pil)
*/ */
udelay(1); udelay(1);
} }
} else if (drv->qdsp6v61_1_1 || drv->qdsp6v62_1_2) { } else if (drv->qdsp6v61_1_1 || drv->qdsp6v62_1_2 ||
drv->qdsp6v62_1_5) {
/* Deassert QDSP6 compiler memory clamp */ /* Deassert QDSP6 compiler memory clamp */
val = readl_relaxed(drv->reg_base + QDSP6SS_PWR_CTL); val = readl_relaxed(drv->reg_base + QDSP6SS_PWR_CTL);
val &= ~QDSP6v55_CLAMP_QMC_MEM; val &= ~QDSP6v55_CLAMP_QMC_MEM;
@ -501,7 +502,13 @@ static int __pil_q6v55_reset(struct pil_desc *pil)
/* Turn on L1, L2, ETB and JU memories 1 at a time */ /* Turn on L1, L2, ETB and JU memories 1 at a time */
val = readl_relaxed(drv->reg_base + val = readl_relaxed(drv->reg_base +
QDSP6V6SS_MEM_PWR_CTL); QDSP6V6SS_MEM_PWR_CTL);
for (i = 28; i >= 0; i--) {
if (drv->qdsp6v62_1_5)
i = 29;
else
i = 28;
for ( ; i >= 0; i--) {
val |= BIT(i); val |= BIT(i);
writel_relaxed(val, drv->reg_base + writel_relaxed(val, drv->reg_base +
QDSP6V6SS_MEM_PWR_CTL); QDSP6V6SS_MEM_PWR_CTL);
@ -663,6 +670,9 @@ struct q6v5_data *pil_q6v5_init(struct platform_device *pdev)
drv->qdsp6v62_1_2 = of_property_read_bool(pdev->dev.of_node, drv->qdsp6v62_1_2 = of_property_read_bool(pdev->dev.of_node,
"qcom,qdsp6v62-1-2"); "qcom,qdsp6v62-1-2");
drv->qdsp6v62_1_5 = of_property_read_bool(pdev->dev.of_node,
"qcom,qdsp6v62-1-5");
drv->non_elf_image = of_property_read_bool(pdev->dev.of_node, drv->non_elf_image = of_property_read_bool(pdev->dev.of_node,
"qcom,mba-image-is-not-elf"); "qcom,mba-image-is-not-elf");

View file

@ -62,6 +62,7 @@ struct q6v5_data {
bool qdsp6v56_1_10; bool qdsp6v56_1_10;
bool qdsp6v61_1_1; bool qdsp6v61_1_1;
bool qdsp6v62_1_2; bool qdsp6v62_1_2;
bool qdsp6v62_1_5;
bool non_elf_image; bool non_elf_image;
bool restart_reg_sec; bool restart_reg_sec;
bool override_acc; bool override_acc;