* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.