Loading Documentation/devicetree/bindings/pil/pil-q6v5-mss.txt +2 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ Optional properties: - qcom,ssctl-instance-id: Instance id used by the subsystem to connect with the SSCTL service. - qcom,sysmon-id: platform device id that sysmon is probed with for the subsystem. - qcom,override-acc: Boolean- Present if we need to override the default ACC settings Example: qcom,mss@fc880000 { Loading Loading @@ -82,6 +83,7 @@ Example: qcom,firmware-name = "mba"; qcom,pil-self-auth; qcom,mba-image-is-not-elf; qcom,override-acc; /* GPIO inputs from mss */ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_1_in 0 0>; Loading drivers/soc/qcom/pil-q6v5.c +11 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #define QDSP6SS_RESET 0x014 #define QDSP6SS_GFMUX_CTL 0x020 #define QDSP6SS_PWR_CTL 0x030 #define QDSP6SS_STRAP_ACC 0x110 /* AXI Halt Register Offsets */ #define AXI_HALTREQ 0x0 Loading Loading @@ -72,6 +73,8 @@ #define HALT_CHECK_MAX_LOOPS (200) #define QDSP6SS_XO_CBCR (0x0038) #define QDSP6SS_ACC_OVERRIDE_VAL 0x20 int pil_q6v5_make_proxy_votes(struct pil_desc *pil) { int ret; Loading Loading @@ -296,6 +299,11 @@ static int __pil_q6v55_reset(struct pil_desc *pil) struct q6v5_data *drv = container_of(pil, struct q6v5_data, desc); u32 val, i; /* Override the ACC value if required */ if (drv->override_acc) writel_relaxed(QDSP6SS_ACC_OVERRIDE_VAL, drv->reg_base + QDSP6SS_STRAP_ACC); /* Assert resets, stop core */ val = readl_relaxed(drv->reg_base + QDSP6SS_RESET); val |= (Q6SS_CORE_ARES | Q6SS_BUS_ARES_ENA | Q6SS_STOP_CORE); Loading Loading @@ -446,6 +454,9 @@ struct q6v5_data *pil_q6v5_init(struct platform_device *pdev) drv->non_elf_image = of_property_read_bool(pdev->dev.of_node, "qcom,mba-image-is-not-elf"); drv->override_acc = of_property_read_bool(pdev->dev.of_node, "qcom,override-acc"); drv->xo = devm_clk_get(&pdev->dev, "xo"); if (IS_ERR(drv->xo)) return ERR_CAST(drv->xo); Loading drivers/soc/qcom/pil-q6v5.h +1 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ struct q6v5_data { bool qdsp6v56; bool non_elf_image; bool restart_reg_sec; bool override_acc; }; int pil_q6v5_make_proxy_votes(struct pil_desc *pil); Loading Loading
Documentation/devicetree/bindings/pil/pil-q6v5-mss.txt +2 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ Optional properties: - qcom,ssctl-instance-id: Instance id used by the subsystem to connect with the SSCTL service. - qcom,sysmon-id: platform device id that sysmon is probed with for the subsystem. - qcom,override-acc: Boolean- Present if we need to override the default ACC settings Example: qcom,mss@fc880000 { Loading Loading @@ -82,6 +83,7 @@ Example: qcom,firmware-name = "mba"; qcom,pil-self-auth; qcom,mba-image-is-not-elf; qcom,override-acc; /* GPIO inputs from mss */ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_1_in 0 0>; Loading
drivers/soc/qcom/pil-q6v5.c +11 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #define QDSP6SS_RESET 0x014 #define QDSP6SS_GFMUX_CTL 0x020 #define QDSP6SS_PWR_CTL 0x030 #define QDSP6SS_STRAP_ACC 0x110 /* AXI Halt Register Offsets */ #define AXI_HALTREQ 0x0 Loading Loading @@ -72,6 +73,8 @@ #define HALT_CHECK_MAX_LOOPS (200) #define QDSP6SS_XO_CBCR (0x0038) #define QDSP6SS_ACC_OVERRIDE_VAL 0x20 int pil_q6v5_make_proxy_votes(struct pil_desc *pil) { int ret; Loading Loading @@ -296,6 +299,11 @@ static int __pil_q6v55_reset(struct pil_desc *pil) struct q6v5_data *drv = container_of(pil, struct q6v5_data, desc); u32 val, i; /* Override the ACC value if required */ if (drv->override_acc) writel_relaxed(QDSP6SS_ACC_OVERRIDE_VAL, drv->reg_base + QDSP6SS_STRAP_ACC); /* Assert resets, stop core */ val = readl_relaxed(drv->reg_base + QDSP6SS_RESET); val |= (Q6SS_CORE_ARES | Q6SS_BUS_ARES_ENA | Q6SS_STOP_CORE); Loading Loading @@ -446,6 +454,9 @@ struct q6v5_data *pil_q6v5_init(struct platform_device *pdev) drv->non_elf_image = of_property_read_bool(pdev->dev.of_node, "qcom,mba-image-is-not-elf"); drv->override_acc = of_property_read_bool(pdev->dev.of_node, "qcom,override-acc"); drv->xo = devm_clk_get(&pdev->dev, "xo"); if (IS_ERR(drv->xo)) return ERR_CAST(drv->xo); Loading
drivers/soc/qcom/pil-q6v5.h +1 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ struct q6v5_data { bool qdsp6v56; bool non_elf_image; bool restart_reg_sec; bool override_acc; }; int pil_q6v5_make_proxy_votes(struct pil_desc *pil); Loading