From patchwork Tue Dec 1 09:14:59 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanimir Varbanov X-Patchwork-Id: 57479 Delivered-To: patch@linaro.org Received: by 10.112.155.196 with SMTP id vy4csp2040290lbb; Tue, 1 Dec 2015 01:16:19 -0800 (PST) X-Received: by 10.66.251.193 with SMTP id zm1mr97096245pac.154.1448961379360; Tue, 01 Dec 2015 01:16:19 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id se8si6401070pac.136.2015.12.01.01.16.19; Tue, 01 Dec 2015 01:16:19 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-arm-msm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-arm-msm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-arm-msm-owner@vger.kernel.org; dkim=neutral (body hash did not verify) header.i=@linaro-org.20150623.gappssmtp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756048AbbLAJQP (ORCPT + 6 others); Tue, 1 Dec 2015 04:16:15 -0500 Received: from mail-wm0-f43.google.com ([74.125.82.43]:38443 "EHLO mail-wm0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756028AbbLAJQJ (ORCPT ); Tue, 1 Dec 2015 04:16:09 -0500 Received: by wmec201 with SMTP id c201so4132664wme.1 for ; Tue, 01 Dec 2015 01:16:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ow1482y0FNiRmClaR5YqX9uJHR2YkAQjjxvFSy2r+ck=; b=cTZEmNTifk/Xe2S2AJmtmbvsTH+dPqsJHoowhoKXWwgsIiN/VnEnNwlZOL+LbcYz9N 9xCB2S+1yHCNlFY2iLbvz2P3HutonLF2Jm5hXLQxwEfcfAr8Jn9T91QXhbSQq2DuzCgZ ucqXd4g5whvDnjD6kmGAh3rLkNuQU2ThCPtVPR0GbVEdpg0onvfd3V9xxQ8G3/nxjr7j ykLXbf2hfeFj8UijP20RI+/2TDUcpk6ex7GOT/jtBrxnUjWFP2JrgTQ+zFZzdbkUuGmr eLfTq0jGasoOij9JDwocXWvC5aQOPjoyeEHOcO/sRD2upSYyGdrONqUV6SKEiM34tNTL MG3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ow1482y0FNiRmClaR5YqX9uJHR2YkAQjjxvFSy2r+ck=; b=DpoHfwYT7Kl7M5YPCOyC90FcnDZUIyZDVg1tvwwDG7js3cOiV1WtJ9Der9/HYWv3fn Zxe+EU5wq43YkQY6Id3mgVsyCHdmvqRcVeUkhj5dcgt26TwVaEi9BYVOdXbynUNn76HE TF6cUIe4bbMwc4Rg0Gpxf7FLAD87MdbxXF4VG6J9jvac5IPnRKr8c+V/Xo9GcjSWwbm8 h7kjrhRG71SVi4MUJt7MB0jXp9tfwdgCvfhstj9QMB0caz2N5WXgkdhunjBpk9QTdRmu R7Mkfyp0uVH+41GPQuaT3RrfpBNLGE7EBtPNztLh6cmjU70MtcFDIB+cydpt7QDM0SUo 1pMg== X-Gm-Message-State: ALoCoQkhFNpuht83u88eOfrySlIPZ+l05kc5vQEWNhwBp6vATJrWqhg5uVEpqYGRHNiM6utW0I6L X-Received: by 10.194.92.4 with SMTP id ci4mr92529280wjb.175.1448961368216; Tue, 01 Dec 2015 01:16:08 -0800 (PST) Received: from mms734.qualcomm.mm-sol.com ([37.157.136.206]) by smtp.gmail.com with ESMTPSA id t64sm25290428wmf.23.2015.12.01.01.16.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 01 Dec 2015 01:16:07 -0800 (PST) From: Stanimir Varbanov To: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, dmaengine@vger.kernel.org, Vinod Koul Cc: Rob Herring , Rob Herring , Mark Rutland , Pawel Moll , Ian Campbell , Andy Gross , Archit Taneja , Stanimir Varbanov Subject: [PATCH 4/4] dmaengine: qcom_bam_dma: add controlled remotely dt property Date: Tue, 1 Dec 2015 11:14:59 +0200 Message-Id: <1448961299-15161-5-git-send-email-stanimir.varbanov@linaro.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1448961299-15161-1-git-send-email-stanimir.varbanov@linaro.org> References: <1448961299-15161-1-git-send-email-stanimir.varbanov@linaro.org> Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Some of the peripherals has bam which is controlled by remote processor, thus the bam dma driver must avoid register writes which initialise bam hw block. Those registers are protected from xPU block and any writes to them will lead to secure violation and system reboot. Adding the contolled_remotely flag in bam driver to avoid not permitted register writes in bam_init function. Signed-off-by: Stanimir Varbanov --- .../devicetree/bindings/dma/qcom_bam_dma.txt | 2 ++ drivers/dma/qcom_bam_dma.c | 7 +++++++ 2 files changed, 9 insertions(+) -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt b/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt index 1c9d48ea4914..87b6b2bf5e1e 100644 --- a/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt +++ b/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt @@ -13,6 +13,8 @@ Required properties: - clock-names: must contain "bam_clk" entry - qcom,ee : indicates the active Execution Environment identifier (0-7) used in the secure world. +- qcom,controlled-remotely : optional, indicates that the bam is controled by + remote proccessor i.e. execution enviroment. Example: diff --git a/drivers/dma/qcom_bam_dma.c b/drivers/dma/qcom_bam_dma.c index 6d290de9ab2b..5dedab77180a 100644 --- a/drivers/dma/qcom_bam_dma.c +++ b/drivers/dma/qcom_bam_dma.c @@ -387,6 +387,7 @@ struct bam_device { /* execution environment ID, from DT */ u32 ee; + bool controlled_remotely; const struct reg_offset_data *layout; @@ -1039,6 +1040,9 @@ static int bam_init(struct bam_device *bdev) val = readl_relaxed(bam_addr(bdev, 0, BAM_NUM_PIPES)); bdev->num_channels = val & BAM_NUM_PIPES_MASK; + if (bdev->controlled_remotely) + return 0; + /* s/w reset bam */ /* after reset all pipes are disabled and idle */ val = readl_relaxed(bam_addr(bdev, 0, BAM_CTRL)); @@ -1126,6 +1130,9 @@ static int bam_dma_probe(struct platform_device *pdev) return ret; } + bdev->controlled_remotely = of_property_read_bool(pdev->dev.of_node, + "qcom,controlled-remotely"); + bdev->bamclk = devm_clk_get(bdev->dev, "bam_clk"); if (IS_ERR(bdev->bamclk)) return PTR_ERR(bdev->bamclk);