* [PATCH v2 0/8] Update ADSP pil loader for SC7280 platform
@ 2022-08-04 11:15 Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 1/8] dt-bindings: remoteproc: qcom: adsp: Make ADSP pil loader as generic Srinivasa Rao Mandadapu
` (7 more replies)
0 siblings, 8 replies; 12+ messages in thread
From: Srinivasa Rao Mandadapu @ 2022-08-04 11:15 UTC (permalink / raw)
To: linux-remoteproc, agross, bjorn.andersson, lgirdwood, broonie,
robh+dt, quic_plai, bgoswami, perex, tiwai, srinivas.kandagatla,
quic_rohkumar, linux-arm-msm, linux-kernel, swboyd, judyhsiao,
devicetree
Cc: Srinivasa Rao Mandadapu
Update ADSP pil loader driver for SC7280 platforms.
Changes since V1:
-- Change reg property maxItems to minItems and update description.
-- Fix typo errors.
Srinivasa Rao Mandadapu (8):
dt-bindings: remoteproc: qcom: adsp: Make ADSP pil loader as generic
dt-bindings: remoteproc: qcom: adsp: Add compatible name for SC7280
remoteproc: qcom: Add compatible name for SC7280 ADSP
remoteproc: qcom: Update hard coded values with macros
remoteproc: qcom: Add efuse evb selection control
remoteproc: qcom: Add flag in adsp private data structure
remoteproc: qcom: Add support for memory sandbox
remoteproc: qcom: Update QDSP6 out-of-reset timeout value
.../bindings/remoteproc/qcom,lpass-adsp-pil.yaml | 162 +++++++++++++++++++++
.../bindings/remoteproc/qcom,sdm845-adsp-pil.yaml | 160 --------------------
drivers/remoteproc/qcom_q6v5_adsp.c | 145 +++++++++++++++++-
3 files changed, 301 insertions(+), 166 deletions(-)
create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml
delete mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,sdm845-adsp-pil.yaml
--
2.7.4
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 1/8] dt-bindings: remoteproc: qcom: adsp: Make ADSP pil loader as generic
2022-08-04 11:15 [PATCH v2 0/8] Update ADSP pil loader for SC7280 platform Srinivasa Rao Mandadapu
@ 2022-08-04 11:15 ` Srinivasa Rao Mandadapu
2022-08-09 18:36 ` Rob Herring
2022-08-04 11:15 ` [PATCH v2 2/8] dt-bindings: remoteproc: qcom: adsp: Add compatible name for SC7280 Srinivasa Rao Mandadapu
` (6 subsequent siblings)
7 siblings, 1 reply; 12+ messages in thread
From: Srinivasa Rao Mandadapu @ 2022-08-04 11:15 UTC (permalink / raw)
To: linux-remoteproc, agross, bjorn.andersson, lgirdwood, broonie,
robh+dt, quic_plai, bgoswami, perex, tiwai, srinivas.kandagatla,
quic_rohkumar, linux-arm-msm, linux-kernel, swboyd, judyhsiao,
devicetree
Cc: Srinivasa Rao Mandadapu
Rename sdm845 adsp pil bindings to generic name, for using same binings
file for subsequent SoCs.
Signed-off-by: Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>
---
.../bindings/remoteproc/qcom,lpass-adsp-pil.yaml | 160 +++++++++++++++++++++
.../bindings/remoteproc/qcom,sdm845-adsp-pil.yaml | 160 ---------------------
2 files changed, 160 insertions(+), 160 deletions(-)
create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml
delete mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,sdm845-adsp-pil.yaml
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml
new file mode 100644
index 0000000..9f11332
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml
@@ -0,0 +1,160 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/qcom,lpass-adsp-pil.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm LPASS ADSP Peripheral Image Loader
+
+maintainers:
+ - Bjorn Andersson <bjorn.andersson@linaro.org>
+
+description:
+ This document defines the binding for a component that loads and boots firmware
+ on the Qualcomm Technology Inc. ADSP.
+
+properties:
+ compatible:
+ enum:
+ - qcom,sdm845-adsp-pil
+
+ reg:
+ maxItems: 1
+ description:
+ The base address and size of the qdsp6ss register
+
+ interrupts:
+ items:
+ - description: Watchdog interrupt
+ - description: Fatal interrupt
+ - description: Ready interrupt
+ - description: Handover interrupt
+ - description: Stop acknowledge interrupt
+
+ interrupt-names:
+ items:
+ - const: wdog
+ - const: fatal
+ - const: ready
+ - const: handover
+ - const: stop-ack
+
+ clocks:
+ items:
+ - description: XO clock
+ - description: SWAY clock
+ - description: LPASS AHBS AON clock
+ - description: LPASS AHBM AON clock
+ - description: QDSP XO clock
+ - description: Q6SP6SS SLEEP clock
+ - description: Q6SP6SS CORE clock
+
+ clock-names:
+ items:
+ - const: xo
+ - const: sway_cbcr
+ - const: lpass_ahbs_aon_cbcr
+ - const: lpass_ahbm_aon_cbcr
+ - const: qdsp6ss_xo
+ - const: qdsp6ss_sleep
+ - const: qdsp6ss_core
+
+ power-domains:
+ items:
+ - description: CX power domain
+
+ resets:
+ items:
+ - description: PDC AUDIO SYNC RESET
+ - description: CC LPASS restart
+
+ reset-names:
+ items:
+ - const: pdc_sync
+ - const: cc_lpass
+
+ memory-region:
+ maxItems: 1
+ description: Reference to the reserved-memory for the Hexagon core
+
+ qcom,halt-regs:
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+ description:
+ Phandle reference to a syscon representing TCSR followed by the
+ three offsets within syscon for q6, modem and nc halt registers.
+
+ qcom,smem-states:
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+ description: States used by the AP to signal the Hexagon core
+ items:
+ - description: Stop the modem
+
+ qcom,smem-state-names:
+ $ref: /schemas/types.yaml#/definitions/string
+ description: The names of the state bits used for SMP2P output
+ items:
+ - const: stop
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - interrupt-names
+ - clocks
+ - clock-names
+ - power-domains
+ - resets
+ - reset-names
+ - qcom,halt-regs
+ - memory-region
+ - qcom,smem-states
+ - qcom,smem-state-names
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/clock/qcom,rpmh.h>
+ #include <dt-bindings/clock/qcom,gcc-sdm845.h>
+ #include <dt-bindings/clock/qcom,lpass-sdm845.h>
+ #include <dt-bindings/power/qcom-rpmpd.h>
+ #include <dt-bindings/reset/qcom,sdm845-pdc.h>
+ #include <dt-bindings/reset/qcom,sdm845-aoss.h>
+ remoteproc@17300000 {
+ compatible = "qcom,sdm845-adsp-pil";
+ reg = <0x17300000 0x40c>;
+
+ interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
+ <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+ <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
+ <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
+ <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "wdog", "fatal", "ready",
+ "handover", "stop-ack";
+
+ clocks = <&rpmhcc RPMH_CXO_CLK>,
+ <&gcc GCC_LPASS_SWAY_CLK>,
+ <&lpasscc LPASS_Q6SS_AHBS_AON_CLK>,
+ <&lpasscc LPASS_Q6SS_AHBM_AON_CLK>,
+ <&lpasscc LPASS_QDSP6SS_XO_CLK>,
+ <&lpasscc LPASS_QDSP6SS_SLEEP_CLK>,
+ <&lpasscc LPASS_QDSP6SS_CORE_CLK>;
+ clock-names = "xo", "sway_cbcr",
+ "lpass_ahbs_aon_cbcr",
+ "lpass_ahbm_aon_cbcr", "qdsp6ss_xo",
+ "qdsp6ss_sleep", "qdsp6ss_core";
+
+ power-domains = <&rpmhpd SDM845_CX>;
+
+ resets = <&pdc_reset PDC_AUDIO_SYNC_RESET>,
+ <&aoss_reset AOSS_CC_LPASS_RESTART>;
+ reset-names = "pdc_sync", "cc_lpass";
+
+ qcom,halt-regs = <&tcsr_mutex_regs 0x22000>;
+
+ memory-region = <&pil_adsp_mem>;
+
+ qcom,smem-states = <&adsp_smp2p_out 0>;
+ qcom,smem-state-names = "stop";
+ };
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sdm845-adsp-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sdm845-adsp-pil.yaml
deleted file mode 100644
index 1535bbb..0000000
--- a/Documentation/devicetree/bindings/remoteproc/qcom,sdm845-adsp-pil.yaml
+++ /dev/null
@@ -1,160 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/remoteproc/qcom,sdm845-adsp-pil.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Qualcomm SDM845 ADSP Peripheral Image Loader
-
-maintainers:
- - Bjorn Andersson <bjorn.andersson@linaro.org>
-
-description:
- This document defines the binding for a component that loads and boots firmware
- on the Qualcomm Technology Inc. ADSP.
-
-properties:
- compatible:
- enum:
- - qcom,sdm845-adsp-pil
-
- reg:
- maxItems: 1
- description:
- The base address and size of the qdsp6ss register
-
- interrupts:
- items:
- - description: Watchdog interrupt
- - description: Fatal interrupt
- - description: Ready interrupt
- - description: Handover interrupt
- - description: Stop acknowledge interrupt
-
- interrupt-names:
- items:
- - const: wdog
- - const: fatal
- - const: ready
- - const: handover
- - const: stop-ack
-
- clocks:
- items:
- - description: XO clock
- - description: SWAY clock
- - description: LPASS AHBS AON clock
- - description: LPASS AHBM AON clock
- - description: QDSP XO clock
- - description: Q6SP6SS SLEEP clock
- - description: Q6SP6SS CORE clock
-
- clock-names:
- items:
- - const: xo
- - const: sway_cbcr
- - const: lpass_ahbs_aon_cbcr
- - const: lpass_ahbm_aon_cbcr
- - const: qdsp6ss_xo
- - const: qdsp6ss_sleep
- - const: qdsp6ss_core
-
- power-domains:
- items:
- - description: CX power domain
-
- resets:
- items:
- - description: PDC AUDIO SYNC RESET
- - description: CC LPASS restart
-
- reset-names:
- items:
- - const: pdc_sync
- - const: cc_lpass
-
- memory-region:
- maxItems: 1
- description: Reference to the reserved-memory for the Hexagon core
-
- qcom,halt-regs:
- $ref: /schemas/types.yaml#/definitions/phandle-array
- description:
- Phandle reference to a syscon representing TCSR followed by the
- three offsets within syscon for q6, modem and nc halt registers.
-
- qcom,smem-states:
- $ref: /schemas/types.yaml#/definitions/phandle-array
- description: States used by the AP to signal the Hexagon core
- items:
- - description: Stop the modem
-
- qcom,smem-state-names:
- $ref: /schemas/types.yaml#/definitions/string
- description: The names of the state bits used for SMP2P output
- items:
- - const: stop
-
-required:
- - compatible
- - reg
- - interrupts
- - interrupt-names
- - clocks
- - clock-names
- - power-domains
- - resets
- - reset-names
- - qcom,halt-regs
- - memory-region
- - qcom,smem-states
- - qcom,smem-state-names
-
-additionalProperties: false
-
-examples:
- - |
- #include <dt-bindings/interrupt-controller/arm-gic.h>
- #include <dt-bindings/clock/qcom,rpmh.h>
- #include <dt-bindings/clock/qcom,gcc-sdm845.h>
- #include <dt-bindings/clock/qcom,lpass-sdm845.h>
- #include <dt-bindings/power/qcom-rpmpd.h>
- #include <dt-bindings/reset/qcom,sdm845-pdc.h>
- #include <dt-bindings/reset/qcom,sdm845-aoss.h>
- remoteproc@17300000 {
- compatible = "qcom,sdm845-adsp-pil";
- reg = <0x17300000 0x40c>;
-
- interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
- <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
- <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
- <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
- <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
- interrupt-names = "wdog", "fatal", "ready",
- "handover", "stop-ack";
-
- clocks = <&rpmhcc RPMH_CXO_CLK>,
- <&gcc GCC_LPASS_SWAY_CLK>,
- <&lpasscc LPASS_Q6SS_AHBS_AON_CLK>,
- <&lpasscc LPASS_Q6SS_AHBM_AON_CLK>,
- <&lpasscc LPASS_QDSP6SS_XO_CLK>,
- <&lpasscc LPASS_QDSP6SS_SLEEP_CLK>,
- <&lpasscc LPASS_QDSP6SS_CORE_CLK>;
- clock-names = "xo", "sway_cbcr",
- "lpass_ahbs_aon_cbcr",
- "lpass_ahbm_aon_cbcr", "qdsp6ss_xo",
- "qdsp6ss_sleep", "qdsp6ss_core";
-
- power-domains = <&rpmhpd SDM845_CX>;
-
- resets = <&pdc_reset PDC_AUDIO_SYNC_RESET>,
- <&aoss_reset AOSS_CC_LPASS_RESTART>;
- reset-names = "pdc_sync", "cc_lpass";
-
- qcom,halt-regs = <&tcsr_mutex_regs 0x22000>;
-
- memory-region = <&pil_adsp_mem>;
-
- qcom,smem-states = <&adsp_smp2p_out 0>;
- qcom,smem-state-names = "stop";
- };
--
2.7.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 2/8] dt-bindings: remoteproc: qcom: adsp: Add compatible name for SC7280
2022-08-04 11:15 [PATCH v2 0/8] Update ADSP pil loader for SC7280 platform Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 1/8] dt-bindings: remoteproc: qcom: adsp: Make ADSP pil loader as generic Srinivasa Rao Mandadapu
@ 2022-08-04 11:15 ` Srinivasa Rao Mandadapu
2022-08-09 18:37 ` Rob Herring
2022-08-04 11:15 ` [PATCH v2 3/8] remoteproc: qcom: Add compatible name for SC7280 ADSP Srinivasa Rao Mandadapu
` (5 subsequent siblings)
7 siblings, 1 reply; 12+ messages in thread
From: Srinivasa Rao Mandadapu @ 2022-08-04 11:15 UTC (permalink / raw)
To: linux-remoteproc, agross, bjorn.andersson, lgirdwood, broonie,
robh+dt, quic_plai, bgoswami, perex, tiwai, srinivas.kandagatla,
quic_rohkumar, linux-arm-msm, linux-kernel, swboyd, judyhsiao,
devicetree
Cc: Srinivasa Rao Mandadapu
Add compatible name and update max reg items for SC7280 base platforms.
Signed-off-by: Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>
---
Changes since V1:
-- Change reg property maxItems to minItems and update description.
.../devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml
index 9f11332..c4dd5d5 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml
@@ -17,11 +17,13 @@ properties:
compatible:
enum:
- qcom,sdm845-adsp-pil
+ - qcom,sc7280-adsp-pil
reg:
- maxItems: 1
- description:
- The base address and size of the qdsp6ss register
+ minItems: 1
+ items:
+ - description: qdsp6ss register
+ - description: mcc register
interrupts:
items:
--
2.7.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 3/8] remoteproc: qcom: Add compatible name for SC7280 ADSP
2022-08-04 11:15 [PATCH v2 0/8] Update ADSP pil loader for SC7280 platform Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 1/8] dt-bindings: remoteproc: qcom: adsp: Make ADSP pil loader as generic Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 2/8] dt-bindings: remoteproc: qcom: adsp: Add compatible name for SC7280 Srinivasa Rao Mandadapu
@ 2022-08-04 11:15 ` Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 4/8] remoteproc: qcom: Update hard coded values with macros Srinivasa Rao Mandadapu
` (4 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: Srinivasa Rao Mandadapu @ 2022-08-04 11:15 UTC (permalink / raw)
To: linux-remoteproc, agross, bjorn.andersson, lgirdwood, broonie,
robh+dt, quic_plai, bgoswami, perex, tiwai, srinivas.kandagatla,
quic_rohkumar, linux-arm-msm, linux-kernel, swboyd, judyhsiao,
devicetree
Cc: Srinivasa Rao Mandadapu
Update adsp pil data and compatible name for loading ADSP
binary on SC7280 based platforms.
Signed-off-by: Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>
---
drivers/remoteproc/qcom_q6v5_adsp.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c b/drivers/remoteproc/qcom_q6v5_adsp.c
index 2f3b9f5..bb4494c 100644
--- a/drivers/remoteproc/qcom_q6v5_adsp.c
+++ b/drivers/remoteproc/qcom_q6v5_adsp.c
@@ -697,6 +697,24 @@ static const struct adsp_pil_data adsp_resource_init = {
},
};
+static const struct adsp_pil_data adsp_sc7280_resource_init = {
+ .crash_reason_smem = 423,
+ .firmware_name = "adsp.mbn",
+ .load_state = "adsp",
+ .ssr_name = "lpass",
+ .sysmon_name = "adsp",
+ .ssctl_id = 0x14,
+ .is_wpss = false,
+ .auto_boot = true,
+ .clk_ids = (const char*[]) {
+ "gcc_cfg_noc_lpass", NULL
+ },
+ .num_clks = 1,
+ .proxy_pd_names = (const char*[]) {
+ NULL
+ },
+};
+
static const struct adsp_pil_data cdsp_resource_init = {
.crash_reason_smem = 601,
.firmware_name = "cdsp.mdt",
@@ -737,6 +755,7 @@ static const struct of_device_id adsp_of_match[] = {
{ .compatible = "qcom,qcs404-cdsp-pil", .data = &cdsp_resource_init },
{ .compatible = "qcom,sc7280-wpss-pil", .data = &wpss_resource_init },
{ .compatible = "qcom,sdm845-adsp-pil", .data = &adsp_resource_init },
+ { .compatible = "qcom,sc7280-adsp-pil", .data = &adsp_sc7280_resource_init },
{ },
};
MODULE_DEVICE_TABLE(of, adsp_of_match);
--
2.7.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 4/8] remoteproc: qcom: Update hard coded values with macros
2022-08-04 11:15 [PATCH v2 0/8] Update ADSP pil loader for SC7280 platform Srinivasa Rao Mandadapu
` (2 preceding siblings ...)
2022-08-04 11:15 ` [PATCH v2 3/8] remoteproc: qcom: Add compatible name for SC7280 ADSP Srinivasa Rao Mandadapu
@ 2022-08-04 11:15 ` Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 5/8] remoteproc: qcom: Add efuse evb selection control Srinivasa Rao Mandadapu
` (3 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: Srinivasa Rao Mandadapu @ 2022-08-04 11:15 UTC (permalink / raw)
To: linux-remoteproc, agross, bjorn.andersson, lgirdwood, broonie,
robh+dt, quic_plai, bgoswami, perex, tiwai, srinivas.kandagatla,
quic_rohkumar, linux-arm-msm, linux-kernel, swboyd, judyhsiao,
devicetree
Cc: Srinivasa Rao Mandadapu
Update hard coded values with appropriate macro names.
Signed-off-by: Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>
---
drivers/remoteproc/qcom_q6v5_adsp.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c b/drivers/remoteproc/qcom_q6v5_adsp.c
index bb4494c..a9fcb5c 100644
--- a/drivers/remoteproc/qcom_q6v5_adsp.c
+++ b/drivers/remoteproc/qcom_q6v5_adsp.c
@@ -54,6 +54,9 @@
#define QCOM_Q6V5_RPROC_PROXY_PD_MAX 3
+#define LPASS_BOOT_CORE_START BIT(0)
+#define LPASS_BOOT_CMD_START BIT(0)
+
struct adsp_pil_data {
int crash_reason_smem;
const char *firmware_name;
@@ -364,10 +367,10 @@ static int adsp_start(struct rproc *rproc)
writel(adsp->mem_phys >> 4, adsp->qdsp6ss_base + RST_EVB_REG);
/* De-assert QDSP6 stop core. QDSP6 will execute after out of reset */
- writel(0x1, adsp->qdsp6ss_base + CORE_START_REG);
+ writel(LPASS_BOOT_CORE_START, adsp->qdsp6ss_base + CORE_START_REG);
/* Trigger boot FSM to start QDSP6 */
- writel(0x1, adsp->qdsp6ss_base + BOOT_CMD_REG);
+ writel(LPASS_BOOT_CMD_START, adsp->qdsp6ss_base + BOOT_CMD_REG);
/* Wait for core to come out of reset */
ret = readl_poll_timeout(adsp->qdsp6ss_base + BOOT_STATUS_REG,
--
2.7.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 5/8] remoteproc: qcom: Add efuse evb selection control
2022-08-04 11:15 [PATCH v2 0/8] Update ADSP pil loader for SC7280 platform Srinivasa Rao Mandadapu
` (3 preceding siblings ...)
2022-08-04 11:15 ` [PATCH v2 4/8] remoteproc: qcom: Update hard coded values with macros Srinivasa Rao Mandadapu
@ 2022-08-04 11:15 ` Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 6/8] remoteproc: qcom: Add flag in adsp private data structure Srinivasa Rao Mandadapu
` (2 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: Srinivasa Rao Mandadapu @ 2022-08-04 11:15 UTC (permalink / raw)
To: linux-remoteproc, agross, bjorn.andersson, lgirdwood, broonie,
robh+dt, quic_plai, bgoswami, perex, tiwai, srinivas.kandagatla,
quic_rohkumar, linux-arm-msm, linux-kernel, swboyd, judyhsiao,
devicetree
Cc: Srinivasa Rao Mandadapu
Add efuse evb selection control and enable it for starting ADSP.
Signed-off-by: Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>
---
drivers/remoteproc/qcom_q6v5_adsp.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c b/drivers/remoteproc/qcom_q6v5_adsp.c
index a9fcb5c..201cc21 100644
--- a/drivers/remoteproc/qcom_q6v5_adsp.c
+++ b/drivers/remoteproc/qcom_q6v5_adsp.c
@@ -56,6 +56,7 @@
#define LPASS_BOOT_CORE_START BIT(0)
#define LPASS_BOOT_CMD_START BIT(0)
+#define LPASS_EFUSE_Q6SS_EVB_SEL 0x0
struct adsp_pil_data {
int crash_reason_smem;
@@ -85,6 +86,7 @@ struct qcom_adsp {
struct clk_bulk_data *clks;
void __iomem *qdsp6ss_base;
+ void __iomem *lpass_efuse;
struct reset_control *pdc_sync_reset;
struct reset_control *restart;
@@ -366,6 +368,9 @@ static int adsp_start(struct rproc *rproc)
/* Program boot address */
writel(adsp->mem_phys >> 4, adsp->qdsp6ss_base + RST_EVB_REG);
+ if (adsp->lpass_efuse)
+ writel(LPASS_EFUSE_Q6SS_EVB_SEL, adsp->lpass_efuse);
+
/* De-assert QDSP6 stop core. QDSP6 will execute after out of reset */
writel(LPASS_BOOT_CORE_START, adsp->qdsp6ss_base + CORE_START_REG);
@@ -520,6 +525,11 @@ static int adsp_init_mmio(struct qcom_adsp *adsp,
return PTR_ERR(adsp->qdsp6ss_base);
}
+ adsp->lpass_efuse = devm_platform_ioremap_resource_byname(pdev, "lpass_efuse");
+ if (IS_ERR(adsp->lpass_efuse)) {
+ adsp->lpass_efuse = NULL;
+ dev_dbg(adsp->dev, "failed to map LPASS efuse registers\n");
+ }
syscon = of_parse_phandle(pdev->dev.of_node, "qcom,halt-regs", 0);
if (!syscon) {
dev_err(&pdev->dev, "failed to parse qcom,halt-regs\n");
--
2.7.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 6/8] remoteproc: qcom: Add flag in adsp private data structure
2022-08-04 11:15 [PATCH v2 0/8] Update ADSP pil loader for SC7280 platform Srinivasa Rao Mandadapu
` (4 preceding siblings ...)
2022-08-04 11:15 ` [PATCH v2 5/8] remoteproc: qcom: Add efuse evb selection control Srinivasa Rao Mandadapu
@ 2022-08-04 11:15 ` Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 7/8] remoteproc: qcom: Add support for memory sandbox Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 8/8] remoteproc: qcom: Update QDSP6 out-of-reset timeout value Srinivasa Rao Mandadapu
7 siblings, 0 replies; 12+ messages in thread
From: Srinivasa Rao Mandadapu @ 2022-08-04 11:15 UTC (permalink / raw)
To: linux-remoteproc, agross, bjorn.andersson, lgirdwood, broonie,
robh+dt, quic_plai, bgoswami, perex, tiwai, srinivas.kandagatla,
quic_rohkumar, linux-arm-msm, linux-kernel, swboyd, judyhsiao,
devicetree
Cc: Srinivasa Rao Mandadapu
Add flag in qcom_adsp private data structure and initialize
it to distinguish ADSP and WPSS modules.
Signed-off-by: Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>
---
drivers/remoteproc/qcom_q6v5_adsp.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c b/drivers/remoteproc/qcom_q6v5_adsp.c
index 201cc21..3dbd035 100644
--- a/drivers/remoteproc/qcom_q6v5_adsp.c
+++ b/drivers/remoteproc/qcom_q6v5_adsp.c
@@ -104,6 +104,7 @@ struct qcom_adsp {
phys_addr_t mem_reloc;
void *mem_region;
size_t mem_size;
+ bool is_wpss;
struct device *proxy_pds[QCOM_Q6V5_RPROC_PROXY_PD_MAX];
size_t proxy_pd_count;
@@ -615,6 +616,8 @@ static int adsp_probe(struct platform_device *pdev)
adsp->dev = &pdev->dev;
adsp->rproc = rproc;
adsp->info_name = desc->sysmon_name;
+ adsp->is_wpss = desc->is_wpss;
+
platform_set_drvdata(pdev, adsp);
if (desc->is_wpss)
--
2.7.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 7/8] remoteproc: qcom: Add support for memory sandbox
2022-08-04 11:15 [PATCH v2 0/8] Update ADSP pil loader for SC7280 platform Srinivasa Rao Mandadapu
` (5 preceding siblings ...)
2022-08-04 11:15 ` [PATCH v2 6/8] remoteproc: qcom: Add flag in adsp private data structure Srinivasa Rao Mandadapu
@ 2022-08-04 11:15 ` Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 8/8] remoteproc: qcom: Update QDSP6 out-of-reset timeout value Srinivasa Rao Mandadapu
7 siblings, 0 replies; 12+ messages in thread
From: Srinivasa Rao Mandadapu @ 2022-08-04 11:15 UTC (permalink / raw)
To: linux-remoteproc, agross, bjorn.andersson, lgirdwood, broonie,
robh+dt, quic_plai, bgoswami, perex, tiwai, srinivas.kandagatla,
quic_rohkumar, linux-arm-msm, linux-kernel, swboyd, judyhsiao,
devicetree
Cc: Srinivasa Rao Mandadapu
Add memory sandbox support for ADSP based platforms secure booting.
Signed-off-by: Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>
---
drivers/remoteproc/qcom_q6v5_adsp.c | 101 +++++++++++++++++++++++++++++++++++-
1 file changed, 99 insertions(+), 2 deletions(-)
diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c b/drivers/remoteproc/qcom_q6v5_adsp.c
index 3dbd035..f81da47 100644
--- a/drivers/remoteproc/qcom_q6v5_adsp.c
+++ b/drivers/remoteproc/qcom_q6v5_adsp.c
@@ -9,6 +9,7 @@
#include <linux/firmware.h>
#include <linux/interrupt.h>
#include <linux/io.h>
+#include <linux/iommu.h>
#include <linux/iopoll.h>
#include <linux/kernel.h>
#include <linux/mfd/syscon.h>
@@ -48,6 +49,8 @@
#define LPASS_PWR_ON_REG 0x10
#define LPASS_HALTREQ_REG 0x0
+#define SID_MASK_DEFAULT 0xF
+
#define QDSP6SS_XO_CBCR 0x38
#define QDSP6SS_CORE_CBCR 0x20
#define QDSP6SS_SLEEP_CBCR 0x3c
@@ -77,7 +80,7 @@ struct adsp_pil_data {
struct qcom_adsp {
struct device *dev;
struct rproc *rproc;
-
+ struct iommu_domain *iommu_dom;
struct qcom_q6v5 q6v5;
struct clk *xo;
@@ -332,6 +335,91 @@ static int adsp_load(struct rproc *rproc, const struct firmware *fw)
return 0;
}
+static int adsp_map_smmu(struct qcom_adsp *adsp, struct rproc *rproc)
+{
+ struct of_phandle_args args;
+ int ret, rc, i;
+ long long sid;
+
+ unsigned long mem_phys;
+ unsigned long iova;
+ const __be32 *prop;
+ int access_level;
+ uint32_t len, flag, mem_size;
+ int offset;
+ struct fw_rsc_hdr *hdr;
+ struct fw_rsc_devmem *rsc_fw;
+
+ rc = of_parse_phandle_with_fixed_args(adsp->dev->of_node, "iommus", 1, 0, &args);
+ if (rc < 0)
+ sid = -1;
+ else
+ sid = args.args[0] & SID_MASK_DEFAULT;
+
+ adsp->iommu_dom = iommu_domain_alloc(&platform_bus_type);
+ if (!adsp->iommu_dom) {
+ dev_err(adsp->dev, "failed to allocate iommu domain\n");
+ return -ENOMEM;
+ }
+
+ ret = iommu_attach_device(adsp->iommu_dom, adsp->dev);
+ if (ret) {
+ dev_err(adsp->dev, "could not attach device ret = %d\n", ret);
+ return -EBUSY;
+ }
+
+ /* Add SID configuration for ADSP Firmware to SMMU */
+ adsp->mem_phys = adsp->mem_phys | (sid << 32);
+
+ ret = iommu_map(adsp->iommu_dom, adsp->mem_phys, adsp->mem_phys,
+ adsp->mem_size, IOMMU_READ | IOMMU_WRITE);
+ if (ret) {
+ dev_err(adsp->dev, "Unable to map ADSP Physical Memory\n");
+ return ret;
+ }
+
+ prop = of_get_property(adsp->dev->of_node, "qcom,adsp-memory", &len);
+ if (prop) {
+ len /= sizeof(__be32);
+ for (i = 0; i < len; i++) {
+ iova = be32_to_cpu(prop[i++]);
+ mem_phys = be32_to_cpu(prop[i++]);
+ mem_size = be32_to_cpu(prop[i++]);
+ access_level = be32_to_cpu(prop[i]);
+
+ if (access_level)
+ flag = IOMMU_READ | IOMMU_WRITE;
+ else
+ flag = IOMMU_READ;
+
+ ret = iommu_map(adsp->iommu_dom, iova, mem_phys, mem_size, flag);
+ if (ret) {
+ dev_err(adsp->dev, "failed to map addr = %p mem_size = %x\n",
+ &(mem_phys), mem_size);
+ return ret;
+ }
+ }
+ } else {
+ if (!rproc->table_ptr)
+ return 0;
+
+ for (i = 0; i < rproc->table_ptr->num; i++) {
+ offset = rproc->table_ptr->offset[i];
+ hdr = (void *)rproc->table_ptr + offset;
+ rsc_fw = (struct fw_rsc_devmem *)hdr + sizeof(*hdr);
+
+ ret = iommu_map(rproc->domain, rsc_fw->da, rsc_fw->pa,
+ rsc_fw->len, rsc_fw->flags);
+ if (ret) {
+ pr_err("%s; unable to map adsp memory address\n", __func__);
+ return ret;
+ }
+ }
+ }
+ return 0;
+}
+
+
static int adsp_start(struct rproc *rproc)
{
struct qcom_adsp *adsp = (struct qcom_adsp *)rproc->priv;
@@ -341,7 +429,13 @@ static int adsp_start(struct rproc *rproc)
ret = qcom_q6v5_prepare(&adsp->q6v5);
if (ret)
return ret;
-
+ if (!adsp->is_wpss) {
+ ret = adsp_map_smmu(adsp, rproc);
+ if (ret) {
+ dev_err(adsp->dev, "ADSP smmu mapping failed\n");
+ goto adsp_smmu_unmap;
+ }
+ }
ret = clk_prepare_enable(adsp->xo);
if (ret)
goto disable_irqs;
@@ -402,6 +496,9 @@ static int adsp_start(struct rproc *rproc)
clk_disable_unprepare(adsp->xo);
disable_irqs:
qcom_q6v5_unprepare(&adsp->q6v5);
+adsp_smmu_unmap:
+ iommu_unmap(adsp->iommu_dom, adsp->mem_phys, adsp->mem_size);
+ iommu_domain_free(adsp->iommu_dom);
return ret;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 8/8] remoteproc: qcom: Update QDSP6 out-of-reset timeout value
2022-08-04 11:15 [PATCH v2 0/8] Update ADSP pil loader for SC7280 platform Srinivasa Rao Mandadapu
` (6 preceding siblings ...)
2022-08-04 11:15 ` [PATCH v2 7/8] remoteproc: qcom: Add support for memory sandbox Srinivasa Rao Mandadapu
@ 2022-08-04 11:15 ` Srinivasa Rao Mandadapu
7 siblings, 0 replies; 12+ messages in thread
From: Srinivasa Rao Mandadapu @ 2022-08-04 11:15 UTC (permalink / raw)
To: linux-remoteproc, agross, bjorn.andersson, lgirdwood, broonie,
robh+dt, quic_plai, bgoswami, perex, tiwai, srinivas.kandagatla,
quic_rohkumar, linux-arm-msm, linux-kernel, swboyd, judyhsiao,
devicetree
Cc: Srinivasa Rao Mandadapu
Update QDSP6 out-of-reset timeout value to 1 second, as sometimes
ADSP boot failing on SC7280 based platforms with existing value.
Also add few micro seconds sleep after enabling boot core
start register.
Signed-off-by: Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>
---
Changes since V1:
-- Fix typo error.
drivers/remoteproc/qcom_q6v5_adsp.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c b/drivers/remoteproc/qcom_q6v5_adsp.c
index f81da47..18a6bf6 100644
--- a/drivers/remoteproc/qcom_q6v5_adsp.c
+++ b/drivers/remoteproc/qcom_q6v5_adsp.c
@@ -34,7 +34,7 @@
/* time out value */
#define ACK_TIMEOUT 1000
#define ACK_TIMEOUT_US 1000000
-#define BOOT_FSM_TIMEOUT 10000
+#define BOOT_FSM_TIMEOUT 1000000
/* mask values */
#define EVB_MASK GENMASK(27, 4)
/*QDSP6SS register offsets*/
@@ -468,13 +468,14 @@ static int adsp_start(struct rproc *rproc)
/* De-assert QDSP6 stop core. QDSP6 will execute after out of reset */
writel(LPASS_BOOT_CORE_START, adsp->qdsp6ss_base + CORE_START_REG);
+ usleep_range(100, 110);
/* Trigger boot FSM to start QDSP6 */
writel(LPASS_BOOT_CMD_START, adsp->qdsp6ss_base + BOOT_CMD_REG);
/* Wait for core to come out of reset */
ret = readl_poll_timeout(adsp->qdsp6ss_base + BOOT_STATUS_REG,
- val, (val & BIT(0)) != 0, 10, BOOT_FSM_TIMEOUT);
+ val, (val & BIT(0)) != 0, 100, BOOT_FSM_TIMEOUT);
if (ret) {
dev_err(adsp->dev, "failed to bootup adsp\n");
goto disable_adsp_clks;
--
2.7.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/8] dt-bindings: remoteproc: qcom: adsp: Make ADSP pil loader as generic
2022-08-04 11:15 ` [PATCH v2 1/8] dt-bindings: remoteproc: qcom: adsp: Make ADSP pil loader as generic Srinivasa Rao Mandadapu
@ 2022-08-09 18:36 ` Rob Herring
2022-08-11 7:28 ` Srinivasa Rao Mandadapu
0 siblings, 1 reply; 12+ messages in thread
From: Rob Herring @ 2022-08-09 18:36 UTC (permalink / raw)
To: Srinivasa Rao Mandadapu
Cc: linux-remoteproc, agross, bjorn.andersson, lgirdwood, broonie,
quic_plai, bgoswami, perex, tiwai, srinivas.kandagatla,
quic_rohkumar, linux-arm-msm, linux-kernel, swboyd, judyhsiao,
devicetree
On Thu, Aug 04, 2022 at 04:45:44PM +0530, Srinivasa Rao Mandadapu wrote:
> Rename sdm845 adsp pil bindings to generic name, for using same binings
> file for subsequent SoCs.
>
> Signed-off-by: Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>
> ---
> .../bindings/remoteproc/qcom,lpass-adsp-pil.yaml | 160 +++++++++++++++++++++
> .../bindings/remoteproc/qcom,sdm845-adsp-pil.yaml | 160 ---------------------
> 2 files changed, 160 insertions(+), 160 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml
> delete mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,sdm845-adsp-pil.yaml
Please use the git-format-patch -M option so I'm not reviewing the whole
doc again. You also can (and should) change your git config to default
to this.
Rob
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/8] dt-bindings: remoteproc: qcom: adsp: Add compatible name for SC7280
2022-08-04 11:15 ` [PATCH v2 2/8] dt-bindings: remoteproc: qcom: adsp: Add compatible name for SC7280 Srinivasa Rao Mandadapu
@ 2022-08-09 18:37 ` Rob Herring
0 siblings, 0 replies; 12+ messages in thread
From: Rob Herring @ 2022-08-09 18:37 UTC (permalink / raw)
To: Srinivasa Rao Mandadapu
Cc: bgoswami, broonie, swboyd, srinivas.kandagatla, perex, judyhsiao,
linux-arm-msm, tiwai, devicetree, bjorn.andersson,
linux-remoteproc, robh+dt, linux-kernel, quic_rohkumar,
quic_plai, lgirdwood, agross
On Thu, 04 Aug 2022 16:45:45 +0530, Srinivasa Rao Mandadapu wrote:
> Add compatible name and update max reg items for SC7280 base platforms.
>
> Signed-off-by: Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>
> ---
> Changes since V1:
> -- Change reg property maxItems to minItems and update description.
>
> .../devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/8] dt-bindings: remoteproc: qcom: adsp: Make ADSP pil loader as generic
2022-08-09 18:36 ` Rob Herring
@ 2022-08-11 7:28 ` Srinivasa Rao Mandadapu
0 siblings, 0 replies; 12+ messages in thread
From: Srinivasa Rao Mandadapu @ 2022-08-11 7:28 UTC (permalink / raw)
To: Rob Herring
Cc: linux-remoteproc, agross, bjorn.andersson, lgirdwood, broonie,
quic_plai, bgoswami, perex, tiwai, srinivas.kandagatla,
quic_rohkumar, linux-arm-msm, linux-kernel, swboyd, judyhsiao,
devicetree
On 8/10/2022 12:06 AM, Rob Herring wrote:
Thanks for Your time Rob!!!
> On Thu, Aug 04, 2022 at 04:45:44PM +0530, Srinivasa Rao Mandadapu wrote:
>> Rename sdm845 adsp pil bindings to generic name, for using same binings
>> file for subsequent SoCs.
>>
>> Signed-off-by: Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>
>> ---
>> .../bindings/remoteproc/qcom,lpass-adsp-pil.yaml | 160 +++++++++++++++++++++
>> .../bindings/remoteproc/qcom,sdm845-adsp-pil.yaml | 160 ---------------------
>> 2 files changed, 160 insertions(+), 160 deletions(-)
>> create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,lpass-adsp-pil.yaml
>> delete mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,sdm845-adsp-pil.yaml
> Please use the git-format-patch -M option so I'm not reviewing the whole
> doc again. You also can (and should) change your git config to default
> to this.
Actually here Common dt bindings for SDM845 and SC7280 is not working,
as it has conflicts with clock headers.
I Would like to revert this patch and create new dt bindings file for
SC7280 platform.
>
> Rob
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2022-08-11 7:30 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-04 11:15 [PATCH v2 0/8] Update ADSP pil loader for SC7280 platform Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 1/8] dt-bindings: remoteproc: qcom: adsp: Make ADSP pil loader as generic Srinivasa Rao Mandadapu
2022-08-09 18:36 ` Rob Herring
2022-08-11 7:28 ` Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 2/8] dt-bindings: remoteproc: qcom: adsp: Add compatible name for SC7280 Srinivasa Rao Mandadapu
2022-08-09 18:37 ` Rob Herring
2022-08-04 11:15 ` [PATCH v2 3/8] remoteproc: qcom: Add compatible name for SC7280 ADSP Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 4/8] remoteproc: qcom: Update hard coded values with macros Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 5/8] remoteproc: qcom: Add efuse evb selection control Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 6/8] remoteproc: qcom: Add flag in adsp private data structure Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 7/8] remoteproc: qcom: Add support for memory sandbox Srinivasa Rao Mandadapu
2022-08-04 11:15 ` [PATCH v2 8/8] remoteproc: qcom: Update QDSP6 out-of-reset timeout value Srinivasa Rao Mandadapu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).