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: 550754 Return-Path: X-Original-To: incoming-dt@patchwork.ozlabs.org Delivered-To: patchwork-incoming-dt@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 7E75E140281 for ; Tue, 1 Dec 2015 20:16:26 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=linaro-org.20150623.gappssmtp.com header.i=@linaro-org.20150623.gappssmtp.com header.b=cTZEmNTi; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756047AbbLAJQP (ORCPT ); Tue, 1 Dec 2015 04:16:15 -0500 Received: from mail-wm0-f54.google.com ([74.125.82.54]:37133 "EHLO mail-wm0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756030AbbLAJQJ (ORCPT ); Tue, 1 Dec 2015 04:16:09 -0500 Received: by wmww144 with SMTP id w144so4132113wmw.0 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=iohX5panclVivk/voPuS8riAlDaCuZeg8071TBhU133LayxjjNhfAnIvo2WBeDIdNr fFw9JISxeSERNZgiWu5pm1jwWzV9UdbE1+iTQviyJ4RZMFfP1jJlAmmz1ilEkwMyV7ly LGa954UXXtqhE+QSj6fBQgHLDxErju9fkk5aC2Zyv+ardz8kZ9dbseSor/j93UynhDn9 E+RwHwY4hVEvToYyfn3fYMNMNaTNXNFGcXLgoSbSPlTq2mS5/YYQ8iIEmMFnbVlMePoW Gc2THVqL+R0xACZGqlg87wjJWTirmJJ163s7leTGoq/o5G5NPE6QfExbV0Q6w0dw7/PB uP5w== X-Gm-Message-State: ALoCoQlyaTJ8eTJfw1iO7lD506y9698TOnNiKR6Uyshz1uM+ebtUw2Y0T3vSrVxrV1CAUnbrcRez 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: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@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 Reviewed-by: Andy Gross --- .../devicetree/bindings/dma/qcom_bam_dma.txt | 2 ++ drivers/dma/qcom_bam_dma.c | 7 +++++++ 2 files changed, 9 insertions(+) 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);