Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/808021/?format=api
{ "id": 808021, "url": "http://patchwork.ozlabs.org/api/patches/808021/?format=api", "web_url": "http://patchwork.ozlabs.org/project/devicetree-bindings/patch/1504154734-12175-6-git-send-email-sricharan@codeaurora.org/", "project": { "id": 37, "url": "http://patchwork.ozlabs.org/api/projects/37/?format=api", "name": "Devicetree Bindings", "link_name": "devicetree-bindings", "list_id": "devicetree.vger.kernel.org", "list_email": "devicetree@vger.kernel.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1504154734-12175-6-git-send-email-sricharan@codeaurora.org>", "list_archive_url": null, "date": "2017-08-31T04:45:33", "name": "[v3,5/6] remoteproc: qcom: Add support for q6v5-wcss pil", "commit_ref": null, "pull_url": null, "state": "not-applicable", "archived": true, "hash": "c3d87ad8c373b161cc0152b49ba7128eb9b1a7d6", "submitter": { "id": 65960, "url": "http://patchwork.ozlabs.org/api/people/65960/?format=api", "name": "Sricharan Ramabadhran", "email": "sricharan@codeaurora.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/devicetree-bindings/patch/1504154734-12175-6-git-send-email-sricharan@codeaurora.org/mbox/", "series": [ { "id": 743, "url": "http://patchwork.ozlabs.org/api/series/743/?format=api", "web_url": "http://patchwork.ozlabs.org/project/devicetree-bindings/list/?series=743", "date": "2017-08-31T04:45:33", "name": "Add support for Hexagon q6v5-wcss integrated core", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/743/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/808021/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/808021/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<devicetree-owner@vger.kernel.org>", "X-Original-To": "incoming-dt@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming-dt@bilbo.ozlabs.org", "Authentication-Results": [ "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=devicetree-owner@vger.kernel.org; receiver=<UNKNOWN>)", "ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=codeaurora.org header.i=@codeaurora.org\n\theader.b=\"QwD+ZaT7\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key)\n\theader.d=codeaurora.org header.i=@codeaurora.org header.b=\"HSW0smWe\"; \n\tdkim-atps=neutral", "pdx-caf-mail.web.codeaurora.org;\n\tdmarc=none (p=none dis=none) header.from=codeaurora.org", "pdx-caf-mail.web.codeaurora.org;\n\tspf=none smtp.mailfrom=sricharan@codeaurora.org" ], "Received": [ "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xjVG04Bspz9s81\n\tfor <incoming-dt@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 14:46:48 +1000 (AEST)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751803AbdHaEqa (ORCPT\n\t<rfc822;incoming-dt@patchwork.ozlabs.org>);\n\tThu, 31 Aug 2017 00:46:30 -0400", "from smtp.codeaurora.org ([198.145.29.96]:37762 \"EHLO\n\tsmtp.codeaurora.org\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751739AbdHaEqX (ORCPT\n\t<rfc822; devicetree@vger.kernel.org>); Thu, 31 Aug 2017 00:46:23 -0400", "by smtp.codeaurora.org (Postfix, from userid 1000)\n\tid 059A862CC3; Thu, 31 Aug 2017 04:46:12 +0000 (UTC)", "from srichara-linux.qualcomm.com\n\t(blr-c-bdr-fw-01_globalnat_allzones-outside.qualcomm.com\n\t[103.229.19.19])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\t(Authenticated sender: sricharan@smtp.codeaurora.org)\n\tby smtp.codeaurora.org (Postfix) with ESMTPSA id 7B4E462CA5;\n\tThu, 31 Aug 2017 04:46:07 +0000 (UTC)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org;\n\ts=default; t=1504154783;\n\tbh=nzN0dd6tXFzuScW2HpCHeXBFniM4GuQP9R2GEkyinug=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=QwD+ZaT7TBtrIbSYVP1zPELw0KhdYffxVlEpqH1vw2Qarp2g/mJELPd6R3BOCtdho\n\tzrlFj7jHYm3vJ7vBeuEn2vn5gO2mg1ctZWGdvEAdtS3Lq3q66avy+Rwo3OzWgC9/nV\n\t0ReIkDRubR6HBkaGeewZyI51U1wViZ9cg+jRJiuU=", "v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org;\n\ts=default; t=1504154771;\n\tbh=nzN0dd6tXFzuScW2HpCHeXBFniM4GuQP9R2GEkyinug=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=HSW0smWeuVECFrY5k6ExZCwUdLxS7bIimkv2AKuKsdDP2kc/OhFN+Ar3I92EGeJFg\n\tIWU6DL3X3dlB1uEr4H1QI7fKD8mA4IMhBXGhEpANiklsN8W+Hz28VrJg6RCg0afDhb\n\tEGskGgQQYlVeIHi72IBFJHJj0ldG8tQ9A7mXiCo8=" ], "X-Spam-Checker-Version": "SpamAssassin 3.4.0 (2014-02-07) on\n\tpdx-caf-mail.web.codeaurora.org", "X-Spam-Level": "", "X-Spam-Status": "No, score=-2.8 required=2.0 tests=ALL_TRUSTED,BAYES_00,\n\tDKIM_SIGNED,\n\tT_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0", "DMARC-Filter": "OpenDMARC Filter v1.3.2 smtp.codeaurora.org 7B4E462CA5", "From": "Sricharan R <sricharan@codeaurora.org>", "To": "bjorn.andersson@linaro.org, ohad@wizery.com, robh+dt@kernel.org,\n\tmark.rutland@arm.com, andy.gross@linaro.org,\n\tdavid.brown@linaro.org, linux-remoteproc@vger.kernel.org,\n\tdevicetree@vger.kernel.org, linux-kernel@vger.kernel.org,\n\tlinux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org", "Cc": "sricharan@codeaurora.org", "Subject": "[PATCH v3 5/6] remoteproc: qcom: Add support for q6v5-wcss pil", "Date": "Thu, 31 Aug 2017 10:15:33 +0530", "Message-Id": "<1504154734-12175-6-git-send-email-sricharan@codeaurora.org>", "X-Mailer": "git-send-email 1.9.1", "In-Reply-To": "<1504154734-12175-1-git-send-email-sricharan@codeaurora.org>", "References": "<1504154734-12175-1-git-send-email-sricharan@codeaurora.org>", "Sender": "devicetree-owner@vger.kernel.org", "Precedence": "bulk", "List-ID": "<devicetree.vger.kernel.org>", "X-Mailing-List": "devicetree@vger.kernel.org" }, "content": "IPQ8074 has an integrated Hexagon dsp core q6v5 and a wireless lan\n(Lithium) IP. An mdt type single image format is used for the\nfirmware. So the mdt_load function can be directly used to load\nthe firmware. Also add the relevant resets required for this core.\n\nSigned-off-by: Sricharan R <sricharan@codeaurora.org>\n---\n .../devicetree/bindings/remoteproc/qcom,q6v5.txt | 7 ++-\n drivers/remoteproc/Kconfig | 1 +\n drivers/remoteproc/qcom_q6v5_pil.c | 53 +++++++++++++++++++++-\n 3 files changed, 59 insertions(+), 2 deletions(-)", "diff": "diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt b/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt\nindex 87a8e51..a0a9ad3 100644\n--- a/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt\n+++ b/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt\n@@ -12,6 +12,7 @@ on the Qualcomm Hexagon core.\n \t\t \"qcom,msm8974-mss-pil\"\n \n \t\t \"qcom,msm8996-mss-pil\"\n+\t\t \"qcom,ipq8074-wcss-pil\"\n - reg:\n \tUsage: required\n \tValue type: <prop-encoded-array>\n@@ -49,11 +50,15 @@ on the Qualcomm Hexagon core.\n \tUsage: required\n \tValue type: <phandle>\n \tDefinition: reference to the reset-controller for the modem sub-system\n+\t\t reference to the list of 3 reset-controllers for the\n+\t\t wcss sub-system\n \n - reset-names:\n \tUsage: required\n \tValue type: <stringlist>\n-\tDefinition: must be \"mss_restart\"\n+\tDefinition: must be \"mss_restart\" for the modem sub-system\n+\tDefinition: must be \"wcss_aon_reset\", \"wcss_reset\", \"wcss_q6_reset\"\n+\t\t for the wcss syb-system\n \n - cx-supply:\n - mss-supply:\ndiff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig\nindex 8891a8e..99930a4 100644\n--- a/drivers/remoteproc/Kconfig\n+++ b/drivers/remoteproc/Kconfig\n@@ -102,6 +102,7 @@ config QCOM_Q6V5_PIL\n \tselect MFD_SYSCON\n \tselect QCOM_RPROC_COMMON\n \tselect QCOM_SCM\n+\tselect QCOM_MDT_LOADER\n \thelp\n \t Say y here to support the Qualcomm Peripherial Image Loader for the\n \t Hexagon V5 based remote processors.\ndiff --git a/drivers/remoteproc/qcom_q6v5_pil.c b/drivers/remoteproc/qcom_q6v5_pil.c\nindex 19f453f..284fb12 100644\n--- a/drivers/remoteproc/qcom_q6v5_pil.c\n+++ b/drivers/remoteproc/qcom_q6v5_pil.c\n@@ -129,6 +129,9 @@ struct q6v5 {\n \tu32 halt_nc;\n \n \tstruct reset_control *mss_restart;\n+\tstruct reset_control *wcss_aon_reset;\n+\tstruct reset_control *wcss_reset;\n+\tstruct reset_control *wcss_q6_reset;\n \n \tstruct qcom_smem_state *state;\n \tunsigned stop_bit;\n@@ -180,6 +183,7 @@ enum {\n \tMSS_MSM8916,\n \tMSS_MSM8974,\n \tMSS_MSM8996,\n+\tWCSS_IPQ8074,\n };\n \n static int q6v5_regulator_init(struct device *dev, struct reg_info *regs,\n@@ -354,6 +358,21 @@ static int q6v5_load(struct rproc *rproc, const struct firmware *fw)\n \treturn 0;\n }\n \n+static int q6v5_wcss_load(struct rproc *rproc, const struct firmware *fw)\n+{\n+\tstruct q6v5 *qproc = rproc->priv;\n+\n+\treturn qcom_mdt_load_no_init(qproc->dev, fw, rproc->firmware,\n+\t\t\t\t 0, qproc->mba_region, qproc->mba_phys,\n+\t\t\t\t qproc->mba_size);\n+}\n+\n+static const struct rproc_fw_ops q6v5_wcss_fw_ops = {\n+\t.find_rsc_table = q6v5_find_rsc_table,\n+\t.load = q6v5_wcss_load,\n+\t.get_boot_addr = rproc_elf_get_boot_addr,\n+};\n+\n static const struct rproc_fw_ops q6v5_fw_ops = {\n \t.find_rsc_table = q6v5_find_rsc_table,\n \t.load = q6v5_load,\n@@ -1055,6 +1074,26 @@ static int q6v5_init_clocks(struct device *dev, struct clk **clks,\n \treturn i;\n }\n \n+static int q6v5_wcss_init_reset(struct q6v5 *qproc)\n+{\n+\tqproc->wcss_aon_reset = devm_reset_control_get(qproc->dev,\n+\t\t\t\t\t\t \"wcss_aon_reset\");\n+\tif (IS_ERR(qproc->wcss_aon_reset))\n+\t\treturn PTR_ERR(qproc->wcss_aon_reset);\n+\n+\tqproc->wcss_reset = devm_reset_control_get(qproc->dev,\n+\t\t\t\t\t\t \"wcss_reset\");\n+\tif (IS_ERR(qproc->wcss_reset))\n+\t\treturn PTR_ERR(qproc->wcss_reset);\n+\n+\tqproc->wcss_q6_reset = devm_reset_control_get(qproc->dev,\n+\t\t\t\t\t\t \"wcss_q6_reset\");\n+\tif (IS_ERR(qproc->wcss_q6_reset))\n+\t\treturn PTR_ERR(qproc->wcss_q6_reset);\n+\n+\treturn 0;\n+}\n+\n static int q6v5_init_reset(struct q6v5 *qproc)\n {\n \tqproc->mss_restart = devm_reset_control_get(qproc->dev, NULL);\n@@ -1113,6 +1152,9 @@ static int q6v5_alloc_memory_region(struct q6v5 *qproc)\n \t\treturn -EBUSY;\n \t}\n \n+\tif (qproc->version == WCSS_IPQ8074)\n+\t\treturn 0;\n+\n \tchild = of_get_child_by_name(qproc->dev->of_node, \"mpss\");\n \tnode = of_parse_phandle(child, \"memory-region\", 0);\n \tret = of_address_to_resource(node, 0, &r);\n@@ -1156,6 +1198,7 @@ static int q6v5_probe(struct platform_device *pdev)\n \tqproc = (struct q6v5 *)rproc->priv;\n \tqproc->dev = &pdev->dev;\n \tqproc->rproc = rproc;\n+\tqproc->version = desc->version;\n \tplatform_set_drvdata(pdev, qproc);\n \n \tinit_completion(&qproc->start_done);\n@@ -1205,7 +1248,6 @@ static int q6v5_probe(struct platform_device *pdev)\n \tif (ret)\n \t\tgoto free_rproc;\n \n-\tqproc->version = desc->version;\n \tqproc->need_mem_protection = desc->need_mem_protection;\n \tret = q6v5_request_irq(qproc, pdev, \"wdog\", q6v5_wdog_interrupt);\n \tif (ret < 0)\n@@ -1353,11 +1395,20 @@ static int q6v5_remove(struct platform_device *pdev)\n \t.ops = &q6v5_ops,\n };\n \n+static const struct rproc_hexagon_res ipq8074_wcss = {\n+\t.hexagon_mba_image = \"IPQ8074/q6_fw.mdt\",\n+\t.need_mem_protection = false,\n+\t.version = WCSS_IPQ8074,\n+\t.init_reset = q6v5_wcss_init_reset,\n+\t.fw_ops = &q6v5_wcss_fw_ops,\n+};\n+\n static const struct of_device_id q6v5_of_match[] = {\n \t{ .compatible = \"qcom,q6v5-pil\", .data = &msm8916_mss},\n \t{ .compatible = \"qcom,msm8916-mss-pil\", .data = &msm8916_mss},\n \t{ .compatible = \"qcom,msm8974-mss-pil\", .data = &msm8974_mss},\n \t{ .compatible = \"qcom,msm8996-mss-pil\", .data = &msm8996_mss},\n+\t{ .compatible = \"qcom,ipq8074-wcss-pil\", .data = &ipq8074_wcss},\n \t{ },\n };\n MODULE_DEVICE_TABLE(of, q6v5_of_match);\n", "prefixes": [ "v3", "5/6" ] }