LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH v5 00/10] Add Modem support on SC7280 SoCs
@ 2021-09-17 13:55 Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 01/10] dt-bindings: remoteproc: qcom: pas: Add SC7280 MPSS support Sibi Sankar
` (11 more replies)
0 siblings, 12 replies; 18+ messages in thread
From: Sibi Sankar @ 2021-09-17 13:55 UTC (permalink / raw)
To: bjorn.andersson, robh+dt, will, saiprakash.ranjan, swboyd, mka
Cc: ohad, agross, mathieu.poirier, robin.murphy, joro, p.zabel,
linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
linux-arm-kernel, evgreen, dianders, Sibi Sankar
This patch series adds support for booting the Modem Q6 DSP found on
Qualcomm's SC7280 SoCs.
Depends on:
qmp_send: https://patchwork.kernel.org/project/linux-arm-msm/cover/1630420228-31075-1-git-send-email-deesin@codeaurora.org/
rproc qmp: https://patchwork.kernel.org/project/linux-arm-msm/cover/1631800770-371-1-git-send-email-sibis@codeaurora.org/
V5:
* Rebased to linux-next and picked up Rbs.
* Add pka to the clock list to boot secure modem devices.
V4:
* Rebased to linux-next and picked up Rbs.
* Fixed typo (patch 10).
V3:
* Keep the memory map version in commit message (patch 6). [Bjorn]
* Rename tcsr node and add qualifying compatibles to tcsr and imem nodes
(patch 8). [Bjorn]
* Place remoteproc_mpss node in alphabetical order above pinctrl
section (patch 10). [Stephen]
V2:
* Misc. typos (patch 3). [Matthias]
* Document the q-channel takedown procedure (patch 5). [Matthias]
* Split reserved memory updates between SoC and platform (patch 6). [Matthias]
Sibi Sankar (10):
dt-bindings: remoteproc: qcom: pas: Add SC7280 MPSS support
remoteproc: qcom: pas: Add SC7280 Modem support
dt-bindings: remoteproc: qcom: Update Q6V5 Modem PIL binding
iommu/arm-smmu-qcom: Request direct mapping for modem device
remoteproc: mss: q6v5-mss: Add modem support on SC7280
arm64: dts: qcom: sc7280: Update reserved memory map
arm64: dts: qcom: sc7280: Add/Delete/Update reserved memory nodes
arm64: dts: qcom: sc7280: Add nodes to boot modem
arm64: dts: qcom: sc7280: Add Q6V5 MSS node
arm64: dts: qcom: sc7280: Update Q6V5 MSS node
.../devicetree/bindings/remoteproc/qcom,adsp.yaml | 5 +
.../devicetree/bindings/remoteproc/qcom,q6v5.txt | 32 ++-
arch/arm64/boot/dts/qcom/sc7280-idp.dtsi | 59 +++++
arch/arm64/boot/dts/qcom/sc7280.dtsi | 107 +++++++++
drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 1 +
drivers/remoteproc/qcom_q6v5_mss.c | 253 ++++++++++++++++++++-
drivers/remoteproc/qcom_q6v5_pas.c | 1 +
7 files changed, 452 insertions(+), 6 deletions(-)
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v5 01/10] dt-bindings: remoteproc: qcom: pas: Add SC7280 MPSS support
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
@ 2021-09-17 13:55 ` Sibi Sankar
2021-09-27 23:13 ` (subset) " Bjorn Andersson
2021-09-17 13:55 ` [PATCH v5 02/10] remoteproc: qcom: pas: Add SC7280 Modem support Sibi Sankar
` (10 subsequent siblings)
11 siblings, 1 reply; 18+ messages in thread
From: Sibi Sankar @ 2021-09-17 13:55 UTC (permalink / raw)
To: bjorn.andersson, robh+dt, will, saiprakash.ranjan, swboyd, mka
Cc: ohad, agross, mathieu.poirier, robin.murphy, joro, p.zabel,
linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
linux-arm-kernel, evgreen, dianders, Sibi Sankar
Add MPSS PAS support for SC7280 SoCs.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Acked-by: Rob Herring <robh@kernel.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
---
Documentation/devicetree/bindings/remoteproc/qcom,adsp.yaml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,adsp.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,adsp.yaml
index ff265aa365de..63e06d93bca3 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,adsp.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,adsp.yaml
@@ -25,6 +25,7 @@ properties:
- qcom,qcs404-cdsp-pas
- qcom,qcs404-wcss-pas
- qcom,sc7180-mpss-pas
+ - qcom,sc7280-mpss-pas
- qcom,sc8180x-adsp-pas
- qcom,sc8180x-cdsp-pas
- qcom,sc8180x-mpss-pas
@@ -151,6 +152,7 @@ allOf:
- qcom,msm8998-adsp-pas
- qcom,qcs404-adsp-pas
- qcom,qcs404-wcss-pas
+ - qcom,sc7280-mpss-pas
- qcom,sc8180x-adsp-pas
- qcom,sc8180x-cdsp-pas
- qcom,sc8180x-mpss-pas
@@ -296,6 +298,7 @@ allOf:
contains:
enum:
- qcom,sc7180-mpss-pas
+ - qcom,sc7280-mpss-pas
- qcom,sc8180x-mpss-pas
- qcom,sdx55-mpss-pas
- qcom,sm8150-mpss-pas
@@ -400,6 +403,7 @@ allOf:
compatible:
contains:
enum:
+ - qcom,sc7280-mpss-pas
- qcom,sdx55-mpss-pas
- qcom,sm8150-mpss-pas
- qcom,sm8350-mpss-pas
@@ -475,6 +479,7 @@ allOf:
contains:
enum:
- qcom,sc7180-mpss-pas
+ - qcom,sc7280-mpss-pas
then:
properties:
resets:
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v5 02/10] remoteproc: qcom: pas: Add SC7280 Modem support
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 01/10] dt-bindings: remoteproc: qcom: pas: Add SC7280 MPSS support Sibi Sankar
@ 2021-09-17 13:55 ` Sibi Sankar
2021-09-27 23:13 ` (subset) " Bjorn Andersson
2021-09-17 13:55 ` [PATCH v5 03/10] dt-bindings: remoteproc: qcom: Update Q6V5 Modem PIL binding Sibi Sankar
` (9 subsequent siblings)
11 siblings, 1 reply; 18+ messages in thread
From: Sibi Sankar @ 2021-09-17 13:55 UTC (permalink / raw)
To: bjorn.andersson, robh+dt, will, saiprakash.ranjan, swboyd, mka
Cc: ohad, agross, mathieu.poirier, robin.murphy, joro, p.zabel,
linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
linux-arm-kernel, evgreen, dianders, Sibi Sankar
Add support for booting the Modem DSP found on QTI SC7280 SoCs.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
---
drivers/remoteproc/qcom_q6v5_pas.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
index 8da0362d3d85..c466b97471a5 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -807,6 +807,7 @@ static const struct of_device_id adsp_of_match[] = {
{ .compatible = "qcom,qcs404-cdsp-pas", .data = &cdsp_resource_init },
{ .compatible = "qcom,qcs404-wcss-pas", .data = &wcss_resource_init },
{ .compatible = "qcom,sc7180-mpss-pas", .data = &mpss_resource_init},
+ { .compatible = "qcom,sc7280-mpss-pas", .data = &mpss_resource_init},
{ .compatible = "qcom,sc8180x-adsp-pas", .data = &sm8150_adsp_resource},
{ .compatible = "qcom,sc8180x-cdsp-pas", .data = &sm8150_cdsp_resource},
{ .compatible = "qcom,sc8180x-mpss-pas", .data = &sc8180x_mpss_resource},
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v5 03/10] dt-bindings: remoteproc: qcom: Update Q6V5 Modem PIL binding
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 01/10] dt-bindings: remoteproc: qcom: pas: Add SC7280 MPSS support Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 02/10] remoteproc: qcom: pas: Add SC7280 Modem support Sibi Sankar
@ 2021-09-17 13:55 ` Sibi Sankar
2021-09-27 23:13 ` (subset) " Bjorn Andersson
2021-09-17 13:55 ` [PATCH v5 04/10] iommu/arm-smmu-qcom: Request direct mapping for modem device Sibi Sankar
` (8 subsequent siblings)
11 siblings, 1 reply; 18+ messages in thread
From: Sibi Sankar @ 2021-09-17 13:55 UTC (permalink / raw)
To: bjorn.andersson, robh+dt, will, saiprakash.ranjan, swboyd, mka
Cc: ohad, agross, mathieu.poirier, robin.murphy, joro, p.zabel,
linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
linux-arm-kernel, evgreen, dianders, Sibi Sankar
Add a new modem compatible string for QTI SC7280 SoCs and introduce the
"qcom,ext-regs" and "qcom,qaccept-regs" properties needed by the modem
sub-system running on SC7280 SoCs.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Acked-by: Rob Herring <robh@kernel.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
---
v5:
* Add pka to the clock list to boot secure modem devices.
.../devicetree/bindings/remoteproc/qcom,q6v5.txt | 32 ++++++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt b/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt
index 494257010629..8f1507052afd 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt
@@ -15,6 +15,7 @@ on the Qualcomm Hexagon core.
"qcom,msm8996-mss-pil"
"qcom,msm8998-mss-pil"
"qcom,sc7180-mss-pil"
+ "qcom,sc7280-mss-pil"
"qcom,sdm845-mss-pil"
- reg:
@@ -47,6 +48,7 @@ on the Qualcomm Hexagon core.
qcom,msm8996-mss-pil:
qcom,msm8998-mss-pil:
qcom,sc7180-mss-pil:
+ qcom,sc7280-mss-pil:
qcom,sdm845-mss-pil:
must be "wdog", "fatal", "ready", "handover", "stop-ack",
"shutdown-ack"
@@ -87,6 +89,8 @@ on the Qualcomm Hexagon core.
qcom,sc7180-mss-pil:
must be "iface", "bus", "xo", "snoc_axi", "mnoc_axi",
"nav"
+ qcom,sc7280-mss-pil:
+ must be "iface", "xo", "snoc_axi", "offline", "pka"
qcom,sdm845-mss-pil:
must be "iface", "bus", "mem", "xo", "gpll0_mss",
"snoc_axi", "mnoc_axi", "prng"
@@ -98,7 +102,7 @@ on the Qualcomm Hexagon core.
reference to the list of 3 reset-controllers for the
wcss sub-system
reference to the list of 2 reset-controllers for the modem
- sub-system on SC7180, SDM845 SoCs
+ sub-system on SC7180, SC7280, SDM845 SoCs
- reset-names:
Usage: required
@@ -107,7 +111,7 @@ on the Qualcomm Hexagon core.
must be "wcss_aon_reset", "wcss_reset", "wcss_q6_reset"
for the wcss sub-system
must be "mss_restart", "pdc_reset" for the modem
- sub-system on SC7180, SDM845 SoCs
+ sub-system on SC7180, SC7280, SDM845 SoCs
For devices where the mba and mpss sub-nodes are not specified, mba/mpss region
should be referenced as follows:
@@ -173,6 +177,9 @@ For the compatible string below the following supplies are required:
qcom,msm8998-mss-pil:
must be "cx", "mx"
qcom,sc7180-mss-pil:
+ must be "cx", "mx", "mss"
+ qcom,sc7280-mss-pil:
+ must be "cx", "mss"
qcom,sdm845-mss-pil:
must be "cx", "mx", "mss"
@@ -198,6 +205,9 @@ For the compatible string below the following supplies are required:
Definition: a phandle reference to a syscon representing TCSR followed
by the three offsets within syscon for q6, modem and nc
halt registers.
+ a phandle reference to a syscon representing TCSR followed
+ by the four offsets within syscon for q6, modem, nc and vq6
+ halt registers on SC7280 SoCs.
For the compatible strings below the following phandle references are required:
"qcom,sc7180-mss-pil"
@@ -208,6 +218,24 @@ For the compatible strings below the following phandle references are required:
by the offset within syscon for conn_box_spare0 register
used by the modem sub-system running on SC7180 SoC.
+For the compatible strings below the following phandle references are required:
+ "qcom,sc7280-mss-pil"
+- qcom,ext-regs:
+ Usage: required
+ Value type: <prop-encoded-array>
+ Definition: two phandle references to syscons representing TCSR_REG and
+ TCSR register space followed by the two offsets within the syscon
+ to force_clk_en/rscc_disable and axim1_clk_off/crypto_clk_off
+ registers respectively.
+
+- qcom,qaccept-regs:
+ Usage: required
+ Value type: <prop-encoded-array>
+ Definition: a phandle reference to a syscon representing TCSR followed
+ by the three offsets within syscon for mdm, cx and axi
+ qaccept registers used by the modem sub-system running on
+ SC7280 SoC.
+
The Hexagon node must contain iommus property as described in ../iommu/iommu.txt
on platforms which do not have TrustZone.
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v5 04/10] iommu/arm-smmu-qcom: Request direct mapping for modem device
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
` (2 preceding siblings ...)
2021-09-17 13:55 ` [PATCH v5 03/10] dt-bindings: remoteproc: qcom: Update Q6V5 Modem PIL binding Sibi Sankar
@ 2021-09-17 13:55 ` Sibi Sankar
2021-10-07 20:08 ` Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 05/10] remoteproc: mss: q6v5-mss: Add modem support on SC7280 Sibi Sankar
` (7 subsequent siblings)
11 siblings, 1 reply; 18+ messages in thread
From: Sibi Sankar @ 2021-09-17 13:55 UTC (permalink / raw)
To: bjorn.andersson, robh+dt, will, saiprakash.ranjan, swboyd, mka
Cc: ohad, agross, mathieu.poirier, robin.murphy, joro, p.zabel,
linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
linux-arm-kernel, evgreen, dianders, Sibi Sankar
The SID configuration requirement for Modem on SC7280 is similar to the
ones found on SC7180/SDM845 SoCs. So, add the SC7280 modem compatible to
the list to defer the programming of the modem SIDs to the kernel.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Reviewed-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
---
drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c
index 55690af1b25d..3b9b46fca0b3 100644
--- a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c
+++ b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c
@@ -231,6 +231,7 @@ static const struct of_device_id qcom_smmu_client_of_match[] __maybe_unused = {
{ .compatible = "qcom,sc7180-mdss" },
{ .compatible = "qcom,sc7180-mss-pil" },
{ .compatible = "qcom,sc7280-mdss" },
+ { .compatible = "qcom,sc7280-mss-pil" },
{ .compatible = "qcom,sc8180x-mdss" },
{ .compatible = "qcom,sdm845-mdss" },
{ .compatible = "qcom,sdm845-mss-pil" },
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v5 05/10] remoteproc: mss: q6v5-mss: Add modem support on SC7280
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
` (3 preceding siblings ...)
2021-09-17 13:55 ` [PATCH v5 04/10] iommu/arm-smmu-qcom: Request direct mapping for modem device Sibi Sankar
@ 2021-09-17 13:55 ` Sibi Sankar
2021-09-27 23:13 ` (subset) " Bjorn Andersson
2021-09-17 13:55 ` [PATCH v5 06/10] arm64: dts: qcom: sc7280: Update reserved memory map Sibi Sankar
` (6 subsequent siblings)
11 siblings, 1 reply; 18+ messages in thread
From: Sibi Sankar @ 2021-09-17 13:55 UTC (permalink / raw)
To: bjorn.andersson, robh+dt, will, saiprakash.ranjan, swboyd, mka
Cc: ohad, agross, mathieu.poirier, robin.murphy, joro, p.zabel,
linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
linux-arm-kernel, evgreen, dianders, Sibi Sankar
Add out of reset sequence support for modem sub-system on SC7280 SoCs.
It requires access to an additional set of qaccept registers, external
power/clk control registers and halt vq6 register to put the modem back
into reset.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
---
v5:
* Add pka to the clock list to boot secure modem devices.
drivers/remoteproc/qcom_q6v5_mss.c | 253 ++++++++++++++++++++++++++++++++++++-
1 file changed, 249 insertions(+), 4 deletions(-)
diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
index 7a1422bd7925..ec0701126ab3 100644
--- a/drivers/remoteproc/qcom_q6v5_mss.c
+++ b/drivers/remoteproc/qcom_q6v5_mss.c
@@ -77,6 +77,14 @@
#define HALT_ACK_TIMEOUT_US 100000
+/* QACCEPT Register Offsets */
+#define QACCEPT_ACCEPT_REG 0x0
+#define QACCEPT_ACTIVE_REG 0x4
+#define QACCEPT_DENY_REG 0x8
+#define QACCEPT_REQ_REG 0xC
+
+#define QACCEPT_TIMEOUT_US 50
+
/* QDSP6SS_RESET */
#define Q6SS_STOP_CORE BIT(0)
#define Q6SS_CORE_ARES BIT(1)
@@ -143,6 +151,9 @@ struct rproc_hexagon_res {
bool has_alt_reset;
bool has_mba_logs;
bool has_spare_reg;
+ bool has_qaccept_regs;
+ bool has_ext_cntl_regs;
+ bool has_vq6;
};
struct q6v5 {
@@ -158,8 +169,18 @@ struct q6v5 {
u32 halt_q6;
u32 halt_modem;
u32 halt_nc;
+ u32 halt_vq6;
u32 conn_box;
+ u32 qaccept_mdm;
+ u32 qaccept_cx;
+ u32 qaccept_axi;
+
+ u32 axim1_clk_off;
+ u32 crypto_clk_off;
+ u32 force_clk_on;
+ u32 rscc_disable;
+
struct reset_control *mss_restart;
struct reset_control *pdc_reset;
@@ -201,6 +222,9 @@ struct q6v5 {
bool has_alt_reset;
bool has_mba_logs;
bool has_spare_reg;
+ bool has_qaccept_regs;
+ bool has_ext_cntl_regs;
+ bool has_vq6;
int mpss_perm;
int mba_perm;
const char *hexagon_mdt_image;
@@ -213,6 +237,7 @@ enum {
MSS_MSM8996,
MSS_MSM8998,
MSS_SC7180,
+ MSS_SC7280,
MSS_SDM845,
};
@@ -473,6 +498,12 @@ static int q6v5_reset_assert(struct q6v5 *qproc)
regmap_update_bits(qproc->conn_map, qproc->conn_box,
AXI_GATING_VALID_OVERRIDE, 0);
ret = reset_control_deassert(qproc->mss_restart);
+ } else if (qproc->has_ext_cntl_regs) {
+ regmap_write(qproc->conn_map, qproc->rscc_disable, 0);
+ reset_control_assert(qproc->pdc_reset);
+ reset_control_assert(qproc->mss_restart);
+ reset_control_deassert(qproc->pdc_reset);
+ ret = reset_control_deassert(qproc->mss_restart);
} else {
ret = reset_control_assert(qproc->mss_restart);
}
@@ -490,7 +521,7 @@ static int q6v5_reset_deassert(struct q6v5 *qproc)
ret = reset_control_reset(qproc->mss_restart);
writel(0, qproc->rmb_base + RMB_MBA_ALT_RESET);
reset_control_deassert(qproc->pdc_reset);
- } else if (qproc->has_spare_reg) {
+ } else if (qproc->has_spare_reg || qproc->has_ext_cntl_regs) {
ret = reset_control_reset(qproc->mss_restart);
} else {
ret = reset_control_deassert(qproc->mss_restart);
@@ -604,7 +635,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
}
goto pbl_wait;
- } else if (qproc->version == MSS_SC7180) {
+ } else if (qproc->version == MSS_SC7180 || qproc->version == MSS_SC7280) {
val = readl(qproc->reg_base + QDSP6SS_SLEEP);
val |= Q6SS_CBCR_CLKEN;
writel(val, qproc->reg_base + QDSP6SS_SLEEP);
@@ -787,6 +818,89 @@ static int q6v5proc_reset(struct q6v5 *qproc)
return ret;
}
+static int q6v5proc_enable_qchannel(struct q6v5 *qproc, struct regmap *map, u32 offset)
+{
+ unsigned int val;
+ int ret;
+
+ if (!qproc->has_qaccept_regs)
+ return 0;
+
+ if (qproc->has_ext_cntl_regs) {
+ regmap_write(qproc->conn_map, qproc->rscc_disable, 0);
+ regmap_write(qproc->conn_map, qproc->force_clk_on, 1);
+
+ ret = regmap_read_poll_timeout(qproc->halt_map, qproc->axim1_clk_off, val,
+ !val, 1, Q6SS_CBCR_TIMEOUT_US);
+ if (ret) {
+ dev_err(qproc->dev, "failed to enable axim1 clock\n");
+ return -ETIMEDOUT;
+ }
+ }
+
+ regmap_write(map, offset + QACCEPT_REQ_REG, 1);
+
+ /* Wait for accept */
+ ret = regmap_read_poll_timeout(map, offset + QACCEPT_ACCEPT_REG, val, val, 5,
+ QACCEPT_TIMEOUT_US);
+ if (ret) {
+ dev_err(qproc->dev, "qchannel enable failed\n");
+ return -ETIMEDOUT;
+ }
+
+ return 0;
+}
+
+static void q6v5proc_disable_qchannel(struct q6v5 *qproc, struct regmap *map, u32 offset)
+{
+ int ret;
+ unsigned int val, retry;
+ unsigned int nretry = 10;
+ bool takedown_complete = false;
+
+ if (!qproc->has_qaccept_regs)
+ return;
+
+ while (!takedown_complete && nretry) {
+ nretry--;
+
+ /* Wait for active transactions to complete */
+ regmap_read_poll_timeout(map, offset + QACCEPT_ACTIVE_REG, val, !val, 5,
+ QACCEPT_TIMEOUT_US);
+
+ /* Request Q-channel transaction takedown */
+ regmap_write(map, offset + QACCEPT_REQ_REG, 0);
+
+ /*
+ * If the request is denied, reset the Q-channel takedown request,
+ * wait for active transactions to complete and retry takedown.
+ */
+ retry = 10;
+ while (retry) {
+ usleep_range(5, 10);
+ retry--;
+ ret = regmap_read(map, offset + QACCEPT_DENY_REG, &val);
+ if (!ret && val) {
+ regmap_write(map, offset + QACCEPT_REQ_REG, 1);
+ break;
+ }
+
+ ret = regmap_read(map, offset + QACCEPT_ACCEPT_REG, &val);
+ if (!ret && !val) {
+ takedown_complete = true;
+ break;
+ }
+ }
+
+ if (!retry)
+ break;
+ }
+
+ /* Rely on mss_restart to clear out pending transactions on takedown failure */
+ if (!takedown_complete)
+ dev_err(qproc->dev, "qchannel takedown failed\n");
+}
+
static void q6v5proc_halt_axi_port(struct q6v5 *qproc,
struct regmap *halt_map,
u32 offset)
@@ -950,6 +1064,12 @@ static int q6v5_mba_load(struct q6v5 *qproc)
goto assert_reset;
}
+ ret = q6v5proc_enable_qchannel(qproc, qproc->halt_map, qproc->qaccept_axi);
+ if (ret) {
+ dev_err(qproc->dev, "failed to enable axi bridge\n");
+ goto disable_active_clks;
+ }
+
/*
* Some versions of the MBA firmware will upon boot wipe the MPSS region as well, so provide
* the Q6 access to this region.
@@ -996,8 +1116,13 @@ static int q6v5_mba_load(struct q6v5 *qproc)
halt_axi_ports:
q6v5proc_halt_axi_port(qproc, qproc->halt_map, qproc->halt_q6);
+ if (qproc->has_vq6)
+ q6v5proc_halt_axi_port(qproc, qproc->halt_map, qproc->halt_vq6);
q6v5proc_halt_axi_port(qproc, qproc->halt_map, qproc->halt_modem);
q6v5proc_halt_axi_port(qproc, qproc->halt_map, qproc->halt_nc);
+ q6v5proc_disable_qchannel(qproc, qproc->halt_map, qproc->qaccept_mdm);
+ q6v5proc_disable_qchannel(qproc, qproc->halt_map, qproc->qaccept_cx);
+ q6v5proc_disable_qchannel(qproc, qproc->halt_map, qproc->qaccept_axi);
mba_load_err = true;
reclaim_mba:
xfermemop_ret = q6v5_xfer_mem_ownership(qproc, &qproc->mba_perm, true,
@@ -1047,6 +1172,8 @@ static void q6v5_mba_reclaim(struct q6v5 *qproc)
qproc->dp_size = 0;
q6v5proc_halt_axi_port(qproc, qproc->halt_map, qproc->halt_q6);
+ if (qproc->has_vq6)
+ q6v5proc_halt_axi_port(qproc, qproc->halt_map, qproc->halt_vq6);
q6v5proc_halt_axi_port(qproc, qproc->halt_map, qproc->halt_modem);
q6v5proc_halt_axi_port(qproc, qproc->halt_map, qproc->halt_nc);
if (qproc->version == MSS_MSM8996) {
@@ -1059,6 +1186,24 @@ static void q6v5_mba_reclaim(struct q6v5 *qproc)
writel(val, qproc->reg_base + QDSP6SS_PWR_CTL_REG);
}
+ if (qproc->has_ext_cntl_regs) {
+ regmap_write(qproc->conn_map, qproc->rscc_disable, 1);
+
+ ret = regmap_read_poll_timeout(qproc->halt_map, qproc->axim1_clk_off, val,
+ !val, 1, Q6SS_CBCR_TIMEOUT_US);
+ if (ret)
+ dev_err(qproc->dev, "failed to enable axim1 clock\n");
+
+ ret = regmap_read_poll_timeout(qproc->halt_map, qproc->crypto_clk_off, val,
+ !val, 1, Q6SS_CBCR_TIMEOUT_US);
+ if (ret)
+ dev_err(qproc->dev, "failed to enable crypto clock\n");
+ }
+
+ q6v5proc_disable_qchannel(qproc, qproc->halt_map, qproc->qaccept_mdm);
+ q6v5proc_disable_qchannel(qproc, qproc->halt_map, qproc->qaccept_cx);
+ q6v5proc_disable_qchannel(qproc, qproc->halt_map, qproc->qaccept_axi);
+
q6v5_reset_assert(qproc);
q6v5_clk_disable(qproc->dev, qproc->reset_clks,
@@ -1471,6 +1616,7 @@ static int q6v5_init_mem(struct q6v5 *qproc, struct platform_device *pdev)
{
struct of_phandle_args args;
struct resource *res;
+ int halt_cell_cnt = 3;
int ret;
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "qdsp6");
@@ -1483,8 +1629,11 @@ static int q6v5_init_mem(struct q6v5 *qproc, struct platform_device *pdev)
if (IS_ERR(qproc->rmb_base))
return PTR_ERR(qproc->rmb_base);
+ if (qproc->has_vq6)
+ halt_cell_cnt++;
+
ret = of_parse_phandle_with_fixed_args(pdev->dev.of_node,
- "qcom,halt-regs", 3, 0, &args);
+ "qcom,halt-regs", halt_cell_cnt, 0, &args);
if (ret < 0) {
dev_err(&pdev->dev, "failed to parse qcom,halt-regs\n");
return -EINVAL;
@@ -1499,6 +1648,52 @@ static int q6v5_init_mem(struct q6v5 *qproc, struct platform_device *pdev)
qproc->halt_modem = args.args[1];
qproc->halt_nc = args.args[2];
+ if (qproc->has_vq6)
+ qproc->halt_vq6 = args.args[3];
+
+ if (qproc->has_qaccept_regs) {
+ ret = of_parse_phandle_with_fixed_args(pdev->dev.of_node,
+ "qcom,qaccept-regs",
+ 3, 0, &args);
+ if (ret < 0) {
+ dev_err(&pdev->dev, "failed to parse qaccept-regs\n");
+ return -EINVAL;
+ }
+
+ qproc->qaccept_mdm = args.args[0];
+ qproc->qaccept_cx = args.args[1];
+ qproc->qaccept_axi = args.args[2];
+ }
+
+ if (qproc->has_ext_cntl_regs) {
+ ret = of_parse_phandle_with_fixed_args(pdev->dev.of_node,
+ "qcom,ext-regs",
+ 2, 0, &args);
+ if (ret < 0) {
+ dev_err(&pdev->dev, "failed to parse ext-regs index 0\n");
+ return -EINVAL;
+ }
+
+ qproc->conn_map = syscon_node_to_regmap(args.np);
+ of_node_put(args.np);
+ if (IS_ERR(qproc->conn_map))
+ return PTR_ERR(qproc->conn_map);
+
+ qproc->force_clk_on = args.args[0];
+ qproc->rscc_disable = args.args[1];
+
+ ret = of_parse_phandle_with_fixed_args(pdev->dev.of_node,
+ "qcom,ext-regs",
+ 2, 1, &args);
+ if (ret < 0) {
+ dev_err(&pdev->dev, "failed to parse ext-regs index 1\n");
+ return -EINVAL;
+ }
+
+ qproc->axim1_clk_off = args.args[0];
+ qproc->crypto_clk_off = args.args[1];
+ }
+
if (qproc->has_spare_reg) {
ret = of_parse_phandle_with_fixed_args(pdev->dev.of_node,
"qcom,spare-regs",
@@ -1590,7 +1785,7 @@ static int q6v5_init_reset(struct q6v5 *qproc)
return PTR_ERR(qproc->mss_restart);
}
- if (qproc->has_alt_reset || qproc->has_spare_reg) {
+ if (qproc->has_alt_reset || qproc->has_spare_reg || qproc->has_ext_cntl_regs) {
qproc->pdc_reset = devm_reset_control_get_exclusive(qproc->dev,
"pdc_reset");
if (IS_ERR(qproc->pdc_reset)) {
@@ -1697,6 +1892,9 @@ static int q6v5_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, qproc);
+ qproc->has_qaccept_regs = desc->has_qaccept_regs;
+ qproc->has_ext_cntl_regs = desc->has_ext_cntl_regs;
+ qproc->has_vq6 = desc->has_vq6;
qproc->has_spare_reg = desc->has_spare_reg;
ret = q6v5_init_mem(qproc, pdev);
if (ret)
@@ -1857,9 +2055,40 @@ static const struct rproc_hexagon_res sc7180_mss = {
.has_alt_reset = false,
.has_mba_logs = true,
.has_spare_reg = true,
+ .has_qaccept_regs = false,
+ .has_ext_cntl_regs = false,
+ .has_vq6 = false,
.version = MSS_SC7180,
};
+static const struct rproc_hexagon_res sc7280_mss = {
+ .hexagon_mba_image = "mba.mbn",
+ .proxy_clk_names = (char*[]){
+ "xo",
+ "pka",
+ NULL
+ },
+ .active_clk_names = (char*[]){
+ "iface",
+ "offline",
+ "snoc_axi",
+ NULL
+ },
+ .proxy_pd_names = (char*[]){
+ "cx",
+ "mss",
+ NULL
+ },
+ .need_mem_protection = true,
+ .has_alt_reset = false,
+ .has_mba_logs = true,
+ .has_spare_reg = false,
+ .has_qaccept_regs = true,
+ .has_ext_cntl_regs = true,
+ .has_vq6 = true,
+ .version = MSS_SC7280,
+};
+
static const struct rproc_hexagon_res sdm845_mss = {
.hexagon_mba_image = "mba.mbn",
.proxy_clk_names = (char*[]){
@@ -1889,6 +2118,9 @@ static const struct rproc_hexagon_res sdm845_mss = {
.has_alt_reset = true,
.has_mba_logs = false,
.has_spare_reg = false,
+ .has_qaccept_regs = false,
+ .has_ext_cntl_regs = false,
+ .has_vq6 = false,
.version = MSS_SDM845,
};
@@ -1917,6 +2149,9 @@ static const struct rproc_hexagon_res msm8998_mss = {
.has_alt_reset = false,
.has_mba_logs = false,
.has_spare_reg = false,
+ .has_qaccept_regs = false,
+ .has_ext_cntl_regs = false,
+ .has_vq6 = false,
.version = MSS_MSM8998,
};
@@ -1948,6 +2183,9 @@ static const struct rproc_hexagon_res msm8996_mss = {
.has_alt_reset = false,
.has_mba_logs = false,
.has_spare_reg = false,
+ .has_qaccept_regs = false,
+ .has_ext_cntl_regs = false,
+ .has_vq6 = false,
.version = MSS_MSM8996,
};
@@ -1990,6 +2228,9 @@ static const struct rproc_hexagon_res msm8916_mss = {
.has_alt_reset = false,
.has_mba_logs = false,
.has_spare_reg = false,
+ .has_qaccept_regs = false,
+ .has_ext_cntl_regs = false,
+ .has_vq6 = false,
.version = MSS_MSM8916,
};
@@ -2040,6 +2281,9 @@ static const struct rproc_hexagon_res msm8974_mss = {
.has_alt_reset = false,
.has_mba_logs = false,
.has_spare_reg = false,
+ .has_qaccept_regs = false,
+ .has_ext_cntl_regs = false,
+ .has_vq6 = false,
.version = MSS_MSM8974,
};
@@ -2050,6 +2294,7 @@ static const struct of_device_id q6v5_of_match[] = {
{ .compatible = "qcom,msm8996-mss-pil", .data = &msm8996_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},
{ .compatible = "qcom,sdm845-mss-pil", .data = &sdm845_mss},
{ },
};
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v5 06/10] arm64: dts: qcom: sc7280: Update reserved memory map
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
` (4 preceding siblings ...)
2021-09-17 13:55 ` [PATCH v5 05/10] remoteproc: mss: q6v5-mss: Add modem support on SC7280 Sibi Sankar
@ 2021-09-17 13:55 ` Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 07/10] arm64: dts: qcom: sc7280: Add/Delete/Update reserved memory nodes Sibi Sankar
` (5 subsequent siblings)
11 siblings, 0 replies; 18+ messages in thread
From: Sibi Sankar @ 2021-09-17 13:55 UTC (permalink / raw)
To: bjorn.andersson, robh+dt, will, saiprakash.ranjan, swboyd, mka
Cc: ohad, agross, mathieu.poirier, robin.murphy, joro, p.zabel,
linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
linux-arm-kernel, evgreen, dianders, Sibi Sankar
Add missing reserved regions as described in v1 of SC7280 memory map.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
---
arch/arm64/boot/dts/qcom/sc7280.dtsi | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi
index 89ed7f2b5583..386c559351d5 100644
--- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
@@ -48,6 +48,16 @@
#size-cells = <2>;
ranges;
+ hyp_mem: memory@80000000 {
+ reg = <0x0 0x80000000 0x0 0x600000>;
+ no-map;
+ };
+
+ xbl_mem: memory@80600000 {
+ reg = <0x0 0x80600000 0x0 0x200000>;
+ no-map;
+ };
+
aop_mem: memory@80800000 {
reg = <0x0 0x80800000 0x0 0x60000>;
no-map;
@@ -59,6 +69,16 @@
no-map;
};
+ reserved_xbl_uefi_log: memory@80880000 {
+ reg = <0x0 0x80884000 0x0 0x10000>;
+ no-map;
+ };
+
+ sec_apps_mem: memory@808ff000 {
+ reg = <0x0 0x808ff000 0x0 0x1000>;
+ no-map;
+ };
+
smem_mem: memory@80900000 {
reg = <0x0 0x80900000 0x0 0x200000>;
no-map;
@@ -69,10 +89,24 @@
reg = <0x0 0x80b00000 0x0 0x100000>;
};
+ wlan_fw_mem: memory@80c00000 {
+ reg = <0x0 0x80c00000 0x0 0xc00000>;
+ no-map;
+ };
+
ipa_fw_mem: memory@8b700000 {
reg = <0 0x8b700000 0 0x10000>;
no-map;
};
+
+ rmtfs_mem: memory@9c900000 {
+ compatible = "qcom,rmtfs-mem";
+ reg = <0x0 0x9c900000 0x0 0x280000>;
+ no-map;
+
+ qcom,client-id = <1>;
+ qcom,vmid = <15>;
+ };
};
cpus {
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v5 07/10] arm64: dts: qcom: sc7280: Add/Delete/Update reserved memory nodes
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
` (5 preceding siblings ...)
2021-09-17 13:55 ` [PATCH v5 06/10] arm64: dts: qcom: sc7280: Update reserved memory map Sibi Sankar
@ 2021-09-17 13:55 ` Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 08/10] arm64: dts: qcom: sc7280: Add nodes to boot modem Sibi Sankar
` (4 subsequent siblings)
11 siblings, 0 replies; 18+ messages in thread
From: Sibi Sankar @ 2021-09-17 13:55 UTC (permalink / raw)
To: bjorn.andersson, robh+dt, will, saiprakash.ranjan, swboyd, mka
Cc: ohad, agross, mathieu.poirier, robin.murphy, joro, p.zabel,
linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
linux-arm-kernel, evgreen, dianders, Sibi Sankar
Add, delete and update platform specific reserved memory nodes.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
---
arch/arm64/boot/dts/qcom/sc7280-idp.dtsi | 52 ++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi b/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi
index 99f9ee5d13f5..21f29645d648 100644
--- a/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi
@@ -12,6 +12,58 @@
#include "pm8350c.dtsi"
#include "pmk8350.dtsi"
+/*
+ * Reserved memory changes
+ *
+ * Delete all unused memory nodes and define the peripheral memory regions
+ * required by the board dts.
+ *
+ */
+
+/delete-node/ &hyp_mem;
+/delete-node/ &xbl_mem;
+/delete-node/ &reserved_xbl_uefi_log;
+/delete-node/ &sec_apps_mem;
+
+/* Increase the size from 2.5MB to 8MB */
+&rmtfs_mem {
+ reg = <0x0 0x9c900000 0x0 0x800000>;
+};
+
+/ {
+ reserved-memory {
+ adsp_mem: memory@86700000 {
+ reg = <0x0 0x86700000 0x0 0x2800000>;
+ no-map;
+ };
+
+ camera_mem: memory@8ad00000 {
+ reg = <0x0 0x8ad00000 0x0 0x500000>;
+ no-map;
+ };
+
+ venus_mem: memory@8b200000 {
+ reg = <0x0 0x8b200000 0x0 0x500000>;
+ no-map;
+ };
+
+ mpss_mem: memory@8b800000 {
+ reg = <0x0 0x8b800000 0x0 0xf600000>;
+ no-map;
+ };
+
+ wpss_mem: memory@9ae00000 {
+ reg = <0x0 0x9ae00000 0x0 0x1900000>;
+ no-map;
+ };
+
+ mba_mem: memory@9c700000 {
+ reg = <0x0 0x9c700000 0x0 0x200000>;
+ no-map;
+ };
+ };
+};
+
&apps_rsc {
pm7325-regulators {
compatible = "qcom,pm7325-rpmh-regulators";
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v5 08/10] arm64: dts: qcom: sc7280: Add nodes to boot modem
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
` (6 preceding siblings ...)
2021-09-17 13:55 ` [PATCH v5 07/10] arm64: dts: qcom: sc7280: Add/Delete/Update reserved memory nodes Sibi Sankar
@ 2021-09-17 13:55 ` Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 09/10] arm64: dts: qcom: sc7280: Add Q6V5 MSS node Sibi Sankar
` (3 subsequent siblings)
11 siblings, 0 replies; 18+ messages in thread
From: Sibi Sankar @ 2021-09-17 13:55 UTC (permalink / raw)
To: bjorn.andersson, robh+dt, will, saiprakash.ranjan, swboyd, mka
Cc: ohad, agross, mathieu.poirier, robin.murphy, joro, p.zabel,
linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
linux-arm-kernel, evgreen, dianders, Sibi Sankar
Add miscellaneous nodes to boot the modem and support post-mortem debug
on SC7280 SoCs.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
---
arch/arm64/boot/dts/qcom/sc7280.dtsi | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi
index 386c559351d5..84f56dae241b 100644
--- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
@@ -662,6 +662,11 @@
#hwlock-cells = <1>;
};
+ tcsr: syscon@1fc0000 {
+ compatible = "qcom,sc7280-tcsr", "syscon";
+ reg = <0 0x01fc0000 0 0x30000>;
+ };
+
lpasscc: lpasscc@3000000 {
compatible = "qcom,sc7280-lpasscc";
reg = <0 0x03000000 0 0x40>,
@@ -1632,6 +1637,21 @@
};
};
+ imem@146a5000 {
+ compatible = "qcom,sc7280-imem", "syscon";
+ reg = <0 0x146a5000 0 0x6000>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ ranges = <0 0 0x146a5000 0x6000>;
+
+ pil-reloc@594c {
+ compatible = "qcom,pil-reloc-info";
+ reg = <0x594c 0xc8>;
+ };
+ };
+
apps_smmu: iommu@15000000 {
compatible = "qcom,sc7280-smmu-500", "arm,mmu-500";
reg = <0 0x15000000 0 0x100000>;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v5 09/10] arm64: dts: qcom: sc7280: Add Q6V5 MSS node
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
` (7 preceding siblings ...)
2021-09-17 13:55 ` [PATCH v5 08/10] arm64: dts: qcom: sc7280: Add nodes to boot modem Sibi Sankar
@ 2021-09-17 13:55 ` Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 10/10] arm64: dts: qcom: sc7280: Update " Sibi Sankar
` (2 subsequent siblings)
11 siblings, 0 replies; 18+ messages in thread
From: Sibi Sankar @ 2021-09-17 13:55 UTC (permalink / raw)
To: bjorn.andersson, robh+dt, will, saiprakash.ranjan, swboyd, mka
Cc: ohad, agross, mathieu.poirier, robin.murphy, joro, p.zabel,
linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
linux-arm-kernel, evgreen, dianders, Sibi Sankar
This patch adds Q6V5 MSS PAS remoteproc node for SC7280 SoCs.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
arch/arm64/boot/dts/qcom/sc7280.dtsi | 40 ++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi
index 84f56dae241b..2b9c28329f1e 100644
--- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
@@ -699,6 +699,46 @@
#power-domain-cells = <1>;
};
+ remoteproc_mpss: remoteproc@4080000 {
+ compatible = "qcom,sc7280-mpss-pas";
+ reg = <0 0x04080000 0 0x10000>;
+
+ interrupts-extended = <&intc GIC_SPI 264 IRQ_TYPE_EDGE_RISING>,
+ <&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+ <&modem_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
+ <&modem_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
+ <&modem_smp2p_in 3 IRQ_TYPE_EDGE_RISING>,
+ <&modem_smp2p_in 7 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "wdog", "fatal", "ready", "handover",
+ "stop-ack", "shutdown-ack";
+
+ clocks = <&rpmhcc RPMH_CXO_CLK>;
+ clock-names = "xo";
+
+ power-domains = <&rpmhpd SC7280_CX>,
+ <&rpmhpd SC7280_MSS>;
+ power-domain-names = "cx", "mss";
+
+ memory-region = <&mpss_mem>;
+
+ qcom,qmp = <&aoss_qmp>;
+
+ qcom,smem-states = <&modem_smp2p_out 0>;
+ qcom,smem-state-names = "stop";
+
+ status = "disabled";
+
+ glink-edge {
+ interrupts-extended = <&ipcc IPCC_CLIENT_MPSS
+ IPCC_MPROC_SIGNAL_GLINK_QMP
+ IRQ_TYPE_EDGE_RISING>;
+ mboxes = <&ipcc IPCC_CLIENT_MPSS
+ IPCC_MPROC_SIGNAL_GLINK_QMP>;
+ label = "modem";
+ qcom,remote-pid = <1>;
+ };
+ };
+
stm@6002000 {
compatible = "arm,coresight-stm", "arm,primecell";
reg = <0 0x06002000 0 0x1000>,
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v5 10/10] arm64: dts: qcom: sc7280: Update Q6V5 MSS node
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
` (8 preceding siblings ...)
2021-09-17 13:55 ` [PATCH v5 09/10] arm64: dts: qcom: sc7280: Add Q6V5 MSS node Sibi Sankar
@ 2021-09-17 13:55 ` Sibi Sankar
2021-09-27 22:56 ` (subset) [PATCH v5 00/10] Add Modem support on SC7280 SoCs Bjorn Andersson
2021-10-08 12:53 ` Will Deacon
11 siblings, 0 replies; 18+ messages in thread
From: Sibi Sankar @ 2021-09-17 13:55 UTC (permalink / raw)
To: bjorn.andersson, robh+dt, will, saiprakash.ranjan, swboyd, mka
Cc: ohad, agross, mathieu.poirier, robin.murphy, joro, p.zabel,
linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
linux-arm-kernel, evgreen, dianders, Sibi Sankar
Update MSS node to support MSA based modem boot on SC7280 SoCs.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
---
v5:
* Add pka to the clock list to boot secure modem devices.
arch/arm64/boot/dts/qcom/sc7280-idp.dtsi | 7 +++++++
arch/arm64/boot/dts/qcom/sc7280.dtsi | 19 ++++++++++++++++---
2 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi b/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi
index 21f29645d648..a50217722f1d 100644
--- a/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi
@@ -267,6 +267,13 @@
status = "okay";
};
+&remoteproc_mpss {
+ status = "okay";
+ compatible = "qcom,sc7280-mss-pil";
+ iommus = <&apps_smmu 0x124 0x0>, <&apps_smmu 0x488 0x7>;
+ memory-region = <&mba_mem &mpss_mem>;
+};
+
&sdhc_1 {
status = "okay";
diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi
index 2b9c28329f1e..85622c64774d 100644
--- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
@@ -701,7 +701,8 @@
remoteproc_mpss: remoteproc@4080000 {
compatible = "qcom,sc7280-mpss-pas";
- reg = <0 0x04080000 0 0x10000>;
+ reg = <0 0x04080000 0 0x10000>, <0 0x04180000 0 0x48>;
+ reg-names = "qdsp6", "rmb";
interrupts-extended = <&intc GIC_SPI 264 IRQ_TYPE_EDGE_RISING>,
<&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
@@ -712,8 +713,12 @@
interrupt-names = "wdog", "fatal", "ready", "handover",
"stop-ack", "shutdown-ack";
- clocks = <&rpmhcc RPMH_CXO_CLK>;
- clock-names = "xo";
+ clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
+ <&gcc GCC_MSS_OFFLINE_AXI_CLK>,
+ <&gcc GCC_MSS_SNOC_AXI_CLK>,
+ <&rpmhcc RPMH_PKA_CLK>,
+ <&rpmhcc RPMH_CXO_CLK>;
+ clock-names = "iface", "offline", "snoc_axi", "pka", "xo";
power-domains = <&rpmhpd SC7280_CX>,
<&rpmhpd SC7280_MSS>;
@@ -726,6 +731,14 @@
qcom,smem-states = <&modem_smp2p_out 0>;
qcom,smem-state-names = "stop";
+ resets = <&aoss_reset AOSS_CC_MSS_RESTART>,
+ <&pdc_reset PDC_MODEM_SYNC_RESET>;
+ reset-names = "mss_restart", "pdc_reset";
+
+ qcom,halt-regs = <&tcsr_mutex 0x23000 0x25000 0x28000 0x33000>;
+ qcom,ext-regs = <&tcsr 0x10000 0x10004 &tcsr_mutex 0x26004 0x26008>;
+ qcom,qaccept-regs = <&tcsr_mutex 0x23030 0x23040 0x23020>;
+
status = "disabled";
glink-edge {
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: (subset) [PATCH v5 00/10] Add Modem support on SC7280 SoCs
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
` (9 preceding siblings ...)
2021-09-17 13:55 ` [PATCH v5 10/10] arm64: dts: qcom: sc7280: Update " Sibi Sankar
@ 2021-09-27 22:56 ` Bjorn Andersson
2021-10-08 12:53 ` Will Deacon
11 siblings, 0 replies; 18+ messages in thread
From: Bjorn Andersson @ 2021-09-27 22:56 UTC (permalink / raw)
To: robh+dt, mka, Sibi Sankar, saiprakash.ranjan, will, swboyd
Cc: robin.murphy, linux-kernel, joro, linux-arm-kernel,
linux-remoteproc, linux-arm-msm, evgreen, dianders, p.zabel,
mathieu.poirier, ohad, devicetree, agross
On Fri, 17 Sep 2021 19:25:25 +0530, Sibi Sankar wrote:
> This patch series adds support for booting the Modem Q6 DSP found on
> Qualcomm's SC7280 SoCs.
>
> Depends on:
> qmp_send: https://patchwork.kernel.org/project/linux-arm-msm/cover/1630420228-31075-1-git-send-email-deesin@codeaurora.org/
> rproc qmp: https://patchwork.kernel.org/project/linux-arm-msm/cover/1631800770-371-1-git-send-email-sibis@codeaurora.org/
>
> [...]
Applied, thanks!
[06/10] arm64: dts: qcom: sc7280: Update reserved memory map
commit: eca7d3a366b3ab9f31e142c13a43c5b0f94a920d
[07/10] arm64: dts: qcom: sc7280: Add/Delete/Update reserved memory nodes
commit: f83146890172da67443c7b80e529fd1781046c65
[08/10] arm64: dts: qcom: sc7280: Add nodes to boot modem
commit: dddf4b0621d61b8203d500ef85a853626ff42432
[09/10] arm64: dts: qcom: sc7280: Add Q6V5 MSS node
commit: 4882cafb99c2b004b9773631fb00ca6d96dc0124
[10/10] arm64: dts: qcom: sc7280: Update Q6V5 MSS node
commit: 0025fac17b313cca5c640dd57cbf38d01ce10b27
Best regards,
--
Bjorn Andersson <bjorn.andersson@linaro.org>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: (subset) [PATCH v5 01/10] dt-bindings: remoteproc: qcom: pas: Add SC7280 MPSS support
2021-09-17 13:55 ` [PATCH v5 01/10] dt-bindings: remoteproc: qcom: pas: Add SC7280 MPSS support Sibi Sankar
@ 2021-09-27 23:13 ` Bjorn Andersson
0 siblings, 0 replies; 18+ messages in thread
From: Bjorn Andersson @ 2021-09-27 23:13 UTC (permalink / raw)
To: robh+dt, mka, will, Sibi Sankar, swboyd, saiprakash.ranjan
Cc: evgreen, linux-remoteproc, robin.murphy, linux-arm-msm,
linux-kernel, p.zabel, linux-arm-kernel, devicetree, agross,
joro, dianders, ohad, mathieu.poirier
On Fri, 17 Sep 2021 19:25:26 +0530, Sibi Sankar wrote:
> Add MPSS PAS support for SC7280 SoCs.
>
>
Applied, thanks!
[01/10] dt-bindings: remoteproc: qcom: pas: Add SC7280 MPSS support
commit: 6c62a1eb101c040056cfe03c6bfc3c24c6b3a023
Best regards,
--
Bjorn Andersson <bjorn.andersson@linaro.org>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: (subset) [PATCH v5 02/10] remoteproc: qcom: pas: Add SC7280 Modem support
2021-09-17 13:55 ` [PATCH v5 02/10] remoteproc: qcom: pas: Add SC7280 Modem support Sibi Sankar
@ 2021-09-27 23:13 ` Bjorn Andersson
0 siblings, 0 replies; 18+ messages in thread
From: Bjorn Andersson @ 2021-09-27 23:13 UTC (permalink / raw)
To: robh+dt, mka, will, Sibi Sankar, swboyd, saiprakash.ranjan
Cc: evgreen, linux-remoteproc, robin.murphy, linux-arm-msm,
linux-kernel, linux-arm-kernel, p.zabel, devicetree, joro,
agross, dianders, ohad, mathieu.poirier
On Fri, 17 Sep 2021 19:25:27 +0530, Sibi Sankar wrote:
> Add support for booting the Modem DSP found on QTI SC7280 SoCs.
>
>
Applied, thanks!
[02/10] remoteproc: qcom: pas: Add SC7280 Modem support
commit: dacce1c92b3d13232ac72a0e1edc8cfb693400f9
Best regards,
--
Bjorn Andersson <bjorn.andersson@linaro.org>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: (subset) [PATCH v5 03/10] dt-bindings: remoteproc: qcom: Update Q6V5 Modem PIL binding
2021-09-17 13:55 ` [PATCH v5 03/10] dt-bindings: remoteproc: qcom: Update Q6V5 Modem PIL binding Sibi Sankar
@ 2021-09-27 23:13 ` Bjorn Andersson
0 siblings, 0 replies; 18+ messages in thread
From: Bjorn Andersson @ 2021-09-27 23:13 UTC (permalink / raw)
To: robh+dt, mka, will, Sibi Sankar, swboyd, saiprakash.ranjan
Cc: evgreen, linux-remoteproc, robin.murphy, linux-arm-msm, joro,
linux-kernel, linux-arm-kernel, devicetree, agross, p.zabel,
dianders, ohad, mathieu.poirier
On Fri, 17 Sep 2021 19:25:28 +0530, Sibi Sankar wrote:
> Add a new modem compatible string for QTI SC7280 SoCs and introduce the
> "qcom,ext-regs" and "qcom,qaccept-regs" properties needed by the modem
> sub-system running on SC7280 SoCs.
>
>
Applied, thanks!
[03/10] dt-bindings: remoteproc: qcom: Update Q6V5 Modem PIL binding
commit: b577e51c8c2afc8e00dc99c0a3bd7d67cd06de44
Best regards,
--
Bjorn Andersson <bjorn.andersson@linaro.org>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: (subset) [PATCH v5 05/10] remoteproc: mss: q6v5-mss: Add modem support on SC7280
2021-09-17 13:55 ` [PATCH v5 05/10] remoteproc: mss: q6v5-mss: Add modem support on SC7280 Sibi Sankar
@ 2021-09-27 23:13 ` Bjorn Andersson
0 siblings, 0 replies; 18+ messages in thread
From: Bjorn Andersson @ 2021-09-27 23:13 UTC (permalink / raw)
To: robh+dt, mka, will, Sibi Sankar, swboyd, saiprakash.ranjan
Cc: evgreen, linux-remoteproc, robin.murphy, linux-kernel, joro,
p.zabel, linux-arm-kernel, linux-arm-msm, agross, devicetree,
dianders, ohad, mathieu.poirier
On Fri, 17 Sep 2021 19:25:30 +0530, Sibi Sankar wrote:
> Add out of reset sequence support for modem sub-system on SC7280 SoCs.
> It requires access to an additional set of qaccept registers, external
> power/clk control registers and halt vq6 register to put the modem back
> into reset.
>
>
Applied, thanks!
[05/10] remoteproc: mss: q6v5-mss: Add modem support on SC7280
commit: 529a0113177abe487614a0cba462d9973caa8c2a
Best regards,
--
Bjorn Andersson <bjorn.andersson@linaro.org>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v5 04/10] iommu/arm-smmu-qcom: Request direct mapping for modem device
2021-09-17 13:55 ` [PATCH v5 04/10] iommu/arm-smmu-qcom: Request direct mapping for modem device Sibi Sankar
@ 2021-10-07 20:08 ` Sibi Sankar
0 siblings, 0 replies; 18+ messages in thread
From: Sibi Sankar @ 2021-10-07 20:08 UTC (permalink / raw)
To: will
Cc: bjorn.andersson, robh+dt, saiprakash.ranjan, swboyd, mka, ohad,
agross, mathieu.poirier, robin.murphy, joro, p.zabel,
linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
linux-arm-kernel, evgreen, dianders, sibis=codeaurora.org
Hey Will,
Can you pick this patch up, the rest of
the series is now in linux-next.
On 2021-09-17 19:25, Sibi Sankar wrote:
> The SID configuration requirement for Modem on SC7280 is similar to the
> ones found on SC7180/SDM845 SoCs. So, add the SC7280 modem compatible
> to
> the list to defer the programming of the modem SIDs to the kernel.
>
> Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
> Reviewed-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> ---
> drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c
> b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c
> index 55690af1b25d..3b9b46fca0b3 100644
> --- a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c
> +++ b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c
> @@ -231,6 +231,7 @@ static const struct of_device_id
> qcom_smmu_client_of_match[] __maybe_unused = {
> { .compatible = "qcom,sc7180-mdss" },
> { .compatible = "qcom,sc7180-mss-pil" },
> { .compatible = "qcom,sc7280-mdss" },
> + { .compatible = "qcom,sc7280-mss-pil" },
> { .compatible = "qcom,sc8180x-mdss" },
> { .compatible = "qcom,sdm845-mdss" },
> { .compatible = "qcom,sdm845-mss-pil" },
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v5 00/10] Add Modem support on SC7280 SoCs
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
` (10 preceding siblings ...)
2021-09-27 22:56 ` (subset) [PATCH v5 00/10] Add Modem support on SC7280 SoCs Bjorn Andersson
@ 2021-10-08 12:53 ` Will Deacon
11 siblings, 0 replies; 18+ messages in thread
From: Will Deacon @ 2021-10-08 12:53 UTC (permalink / raw)
To: bjorn.andersson, Sibi Sankar, swboyd, mka, saiprakash.ranjan, robh+dt
Cc: catalin.marinas, kernel-team, Will Deacon, dianders,
robin.murphy, joro, linux-arm-kernel, devicetree, linux-arm-msm,
linux-kernel, ohad, evgreen, p.zabel, agross, linux-remoteproc,
mathieu.poirier
On Fri, 17 Sep 2021 19:25:25 +0530, Sibi Sankar wrote:
> This patch series adds support for booting the Modem Q6 DSP found on
> Qualcomm's SC7280 SoCs.
>
> Depends on:
> qmp_send: https://patchwork.kernel.org/project/linux-arm-msm/cover/1630420228-31075-1-git-send-email-deesin@codeaurora.org/
> rproc qmp: https://patchwork.kernel.org/project/linux-arm-msm/cover/1631800770-371-1-git-send-email-sibis@codeaurora.org/
>
> [...]
Applied SMMU patch to will (for-joerg/arm-smmu/updates), thanks!
[04/10] iommu/arm-smmu-qcom: Request direct mapping for modem device
https://git.kernel.org/will/c/e37f1fe43324
Cheers,
--
Will
https://fixes.arm64.dev
https://next.arm64.dev
https://will.arm64.dev
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2021-10-08 12:53 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-17 13:55 [PATCH v5 00/10] Add Modem support on SC7280 SoCs Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 01/10] dt-bindings: remoteproc: qcom: pas: Add SC7280 MPSS support Sibi Sankar
2021-09-27 23:13 ` (subset) " Bjorn Andersson
2021-09-17 13:55 ` [PATCH v5 02/10] remoteproc: qcom: pas: Add SC7280 Modem support Sibi Sankar
2021-09-27 23:13 ` (subset) " Bjorn Andersson
2021-09-17 13:55 ` [PATCH v5 03/10] dt-bindings: remoteproc: qcom: Update Q6V5 Modem PIL binding Sibi Sankar
2021-09-27 23:13 ` (subset) " Bjorn Andersson
2021-09-17 13:55 ` [PATCH v5 04/10] iommu/arm-smmu-qcom: Request direct mapping for modem device Sibi Sankar
2021-10-07 20:08 ` Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 05/10] remoteproc: mss: q6v5-mss: Add modem support on SC7280 Sibi Sankar
2021-09-27 23:13 ` (subset) " Bjorn Andersson
2021-09-17 13:55 ` [PATCH v5 06/10] arm64: dts: qcom: sc7280: Update reserved memory map Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 07/10] arm64: dts: qcom: sc7280: Add/Delete/Update reserved memory nodes Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 08/10] arm64: dts: qcom: sc7280: Add nodes to boot modem Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 09/10] arm64: dts: qcom: sc7280: Add Q6V5 MSS node Sibi Sankar
2021-09-17 13:55 ` [PATCH v5 10/10] arm64: dts: qcom: sc7280: Update " Sibi Sankar
2021-09-27 22:56 ` (subset) [PATCH v5 00/10] Add Modem support on SC7280 SoCs Bjorn Andersson
2021-10-08 12:53 ` Will Deacon
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).