From nobody Sun May 10 20:33:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 93B37C43219 for ; Sun, 24 Apr 2022 17:28:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236581AbiDXRbI (ORCPT ); Sun, 24 Apr 2022 13:31:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229914AbiDXRbF (ORCPT ); Sun, 24 Apr 2022 13:31:05 -0400 Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com [66.111.4.26]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0819A14AAEB; Sun, 24 Apr 2022 10:28:04 -0700 (PDT) Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 66C2F5C017D; Sun, 24 Apr 2022 13:28:03 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Sun, 24 Apr 2022 13:28:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= cc:cc:content-transfer-encoding:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm2; t=1650821283; x=1650907683; bh=gL LJXvPow1EyaPPDjH9fdOoNOR+1/wWYRGyiSoUxs+o=; b=FBiV7wxx+kBiVJhw2U 0nRo8+CDjUOHCyi5GqiRsWvwOig/uYHw1SlQBbZX/iXWCKJKPI2yRxePjoRjiFb8 AuCykvcWThzH0gCEts2FzQj7rR9JFMmqSj7T/GEL2GVelwztcc/+q5Z1xCWVGLNo e0idrdtcZi11zWn++NIGIPPijXKKJDX55pcux2oLXK511IhlipsnDJjn8DZSqQLh mYdF8Y2ldSE6LYE1fnS2+XbUztwulNXvbH5mgMhuG6LfFoWcK/VuFbaCojfK8meD ckIFqiP9vntIpKcVvpoy6Ko+uKloWFyuJIVH9VXOskhi7pNvz+De+4fpdVmUHdw5 6kYw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1650821283; x=1650907683; bh=gLLJXvPow1EyaPPDjH9fdOoNOR+1/wWYRGy iSoUxs+o=; b=pOuiUpJw2LCW2hxJZeEPCCiZskRIeJvHr8tHUqpFVMCXzoOPk+p qd7VA6xlZHvsI5ubofpt4YX/5MerC/hMV7J0tsw6Hf8UHHB+qd1hu1q4gqp6nUxv E9nQpN3nWntW9rsysxl5ale3AoBGmh7TZjLoixtubltRZ5C4KLK0ltOZQJFWmCFw BulYuOLhE5kuV8POEG9/obxDFHW1mYA66KsWOyTbEyeRLlMoHL53rH4Hu1Aiilib eeu1Kh6W/c8f4WHX5EiV9wyNg1DSEt+0tfsErjWqHEnVpXsb2H1ZlpB9dykPAKdJ BEGFDzX/vpptylkiq/i0za2IfYJsrUnGcgg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrtdelgdduudegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvvefufffkofgjfhgggfestdekredtredttdenucfhrhhomhepufgrmhhu vghlucfjohhllhgrnhguuceoshgrmhhuvghlsehshhholhhlrghnugdrohhrgheqnecugg ftrfgrthhtvghrnhepudekteeuudehtdelteevgfduvddvjefhfedulefgudevgeeghefg udefiedtveetnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrh homhepshgrmhhuvghlsehshhholhhlrghnugdrohhrgh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 24 Apr 2022 13:28:02 -0400 (EDT) From: Samuel Holland To: Vinod Koul , dmaengine@vger.kernel.org Cc: Samuel Holland , Chen-Yu Tsai , Jernej Skrabec , Krzysztof Kozlowski , Maxime Ripard , Rob Herring , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev, Rob Herring , Maxime Ripard Subject: [PATCH v3 1/4] dt-bindings: dma: sun50i-a64: Add compatible for D1 Date: Sun, 24 Apr 2022 12:27:55 -0500 Message-Id: <20220424172759.33383-2-samuel@sholland.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220424172759.33383-1-samuel@sholland.org> References: <20220424172759.33383-1-samuel@sholland.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" D1 has a DMA controller similar to the one in other Allwinner SoCs. Add its compatible, and include it in the list of variants with a separate MBUS clock gate. Acked-by: Rob Herring Acked-by: Maxime Ripard Signed-off-by: Samuel Holland --- (no changes since v1) .../bindings/dma/allwinner,sun50i-a64-dma.yaml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma= .yaml b/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml index b6e1ebfaf366..ff0a5c58d78c 100644 --- a/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml +++ b/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml @@ -20,9 +20,11 @@ properties: =20 compatible: oneOf: - - const: allwinner,sun50i-a64-dma - - const: allwinner,sun50i-a100-dma - - const: allwinner,sun50i-h6-dma + - enum: + - allwinner,sun20i-d1-dma + - allwinner,sun50i-a64-dma + - allwinner,sun50i-a100-dma + - allwinner,sun50i-h6-dma - items: - const: allwinner,sun8i-r40-dma - const: allwinner,sun50i-a64-dma @@ -58,6 +60,7 @@ if: properties: compatible: enum: + - allwinner,sun20i-d1-dma - allwinner,sun50i-a100-dma - allwinner,sun50i-h6-dma =20 --=20 2.35.1 From nobody Sun May 10 20:33:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F1631C433F5 for ; Sun, 24 Apr 2022 17:28:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236661AbiDXRbO (ORCPT ); Sun, 24 Apr 2022 13:31:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33190 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236540AbiDXRbG (ORCPT ); Sun, 24 Apr 2022 13:31:06 -0400 Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com [66.111.4.26]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D65E114AADC; Sun, 24 Apr 2022 10:28:05 -0700 (PDT) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 463995C00FF; Sun, 24 Apr 2022 13:28:05 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Sun, 24 Apr 2022 13:28:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= cc:cc:content-transfer-encoding:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm2; t=1650821285; x=1650907685; bh=pI 0+xczgj9HddQyvNbQNgf/Wfc3FJNTjyj7iSZol1+M=; b=llu6M6Fn/i/c82i7lR Qa7p1yspcKaLcuDmMDHAuNG0uUZGTgzHA6NuvOODCqtFbIpLLOubmwnqC/YEe/RW j8MdG3R/G4OGCajnmCaO9vJZnUcW0103PAWXHNVKfzSD09tIa/q1vsr2wat8qsSM S++f9d2bq/dI7NzQemlHn1oQj/jNbflVr6S+7+961Z9za1KT2+2jVuUdPt/Sf41h 9OIxlESn6T7Rg88Tt2UtYUwJMXb0/GgByjnrY+W/cw1rlI82m384s76nKzIwIUqA yR/jbvqa+M6yxiszs+MZEhAr3bS42AZl8muVmiDfP8Pkrpev6toMAc0qURzfQSO3 /Eig== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1650821285; x=1650907685; bh=pI0+xczgj9HddQyvNbQNgf/Wfc3FJNTjyj7 iSZol1+M=; b=j+0Qg41KoUB3K9eML1A26l6UXCykrN2VzUJZEJVoU01V3jGvDva Tfr5c3qebt+ygWliuKJf+ReCwuaR+5XMlqnqOEXYdxvB0ox5QMIww51X0i+BZPvd opESplhvlUL9Ms/gCNcTINtslwwzK7yEL96NauiQn94W5EHetaaK4/ASRBhgpMLn TV1ykqkP1gJpMUUcpbpAz66vx1mmuQRvtO88/YZD8TM18KKgRpYrC2ZamivYHnyR vcSxY/o6tNbf7c2PKz8s/jXIOEGUnlCog2QtJ9BUAEj3EIhfiBpU2dMUeMm21SlM lwutUWFeGjPJtEGRODDHGyWvBlEOGHmBk1w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrtdelgdduudehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvvefufffkofgjfhgggfestdekredtredttdenucfhrhhomhepufgrmhhu vghlucfjohhllhgrnhguuceoshgrmhhuvghlsehshhholhhlrghnugdrohhrgheqnecugg ftrfgrthhtvghrnhepudekteeuudehtdelteevgfduvddvjefhfedulefgudevgeeghefg udefiedtveetnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrh homhepshgrmhhuvghlsehshhholhhlrghnugdrohhrgh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 24 Apr 2022 13:28:04 -0400 (EDT) From: Samuel Holland To: Vinod Koul , dmaengine@vger.kernel.org Cc: Samuel Holland , Chen-Yu Tsai , Jernej Skrabec , Krzysztof Kozlowski , Maxime Ripard , Rob Herring , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev, Maxime Ripard Subject: [PATCH v3 2/4] dmaengine: sun6i: Do not use virt_to_phys Date: Sun, 24 Apr 2022 12:27:56 -0500 Message-Id: <20220424172759.33383-3-samuel@sholland.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220424172759.33383-1-samuel@sholland.org> References: <20220424172759.33383-1-samuel@sholland.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This breaks on RISC-V, because dma_pool_alloc returns addresses which are not in the linear map. Instead, plumb through the physical address which is already known anyway. Acked-by: Maxime Ripard Signed-off-by: Samuel Holland --- Changes in v3: - Fix format warnings drivers/dma/sun6i-dma.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c index 5cadd4d2b824..4436fbd70445 100644 --- a/drivers/dma/sun6i-dma.c +++ b/drivers/dma/sun6i-dma.c @@ -241,9 +241,7 @@ static inline void sun6i_dma_dump_com_regs(struct sun6i= _dma_dev *sdev) static inline void sun6i_dma_dump_chan_regs(struct sun6i_dma_dev *sdev, struct sun6i_pchan *pchan) { - phys_addr_t reg =3D virt_to_phys(pchan->base); - - dev_dbg(sdev->slave.dev, "Chan %d reg: %pa\n" + dev_dbg(sdev->slave.dev, "Chan %d reg:\n" "\t___en(%04x): \t0x%08x\n" "\tpause(%04x): \t0x%08x\n" "\tstart(%04x): \t0x%08x\n" @@ -252,7 +250,7 @@ static inline void sun6i_dma_dump_chan_regs(struct sun6= i_dma_dev *sdev, "\t__dst(%04x): \t0x%08x\n" "\tcount(%04x): \t0x%08x\n" "\t_para(%04x): \t0x%08x\n\n", - pchan->idx, ®, + pchan->idx, DMA_CHAN_ENABLE, readl(pchan->base + DMA_CHAN_ENABLE), DMA_CHAN_PAUSE, @@ -385,17 +383,16 @@ static void *sun6i_dma_lli_add(struct sun6i_dma_lli *= prev, } =20 static inline void sun6i_dma_dump_lli(struct sun6i_vchan *vchan, - struct sun6i_dma_lli *lli) + struct sun6i_dma_lli *v_lli, + dma_addr_t p_lli) { - phys_addr_t p_lli =3D virt_to_phys(lli); - dev_dbg(chan2dev(&vchan->vc.chan), - "\n\tdesc: p - %pa v - 0x%p\n" + "\n\tdesc:\tp - %pad v - 0x%p\n" "\t\tc - 0x%08x s - 0x%08x d - 0x%08x\n" "\t\tl - 0x%08x p - 0x%08x n - 0x%08x\n", - &p_lli, lli, - lli->cfg, lli->src, lli->dst, - lli->len, lli->para, lli->p_lli_next); + &p_lli, v_lli, + v_lli->cfg, v_lli->src, v_lli->dst, + v_lli->len, v_lli->para, v_lli->p_lli_next); } =20 static void sun6i_dma_free_desc(struct virt_dma_desc *vd) @@ -445,7 +442,7 @@ static int sun6i_dma_start_desc(struct sun6i_vchan *vch= an) pchan->desc =3D to_sun6i_desc(&desc->tx); pchan->done =3D NULL; =20 - sun6i_dma_dump_lli(vchan, pchan->desc->v_lli); + sun6i_dma_dump_lli(vchan, pchan->desc->v_lli, pchan->desc->p_lli); =20 irq_reg =3D pchan->idx / DMA_IRQ_CHAN_NR; irq_offset =3D pchan->idx % DMA_IRQ_CHAN_NR; @@ -670,7 +667,7 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_d= ma_memcpy( =20 sun6i_dma_lli_add(NULL, v_lli, p_lli, txd); =20 - sun6i_dma_dump_lli(vchan, v_lli); + sun6i_dma_dump_lli(vchan, v_lli, p_lli); =20 return vchan_tx_prep(&vchan->vc, &txd->vd, flags); =20 @@ -746,14 +743,16 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep= _slave_sg( } =20 dev_dbg(chan2dev(chan), "First: %pad\n", &txd->p_lli); - for (prev =3D txd->v_lli; prev; prev =3D prev->v_lli_next) - sun6i_dma_dump_lli(vchan, prev); + for (p_lli =3D txd->p_lli, v_lli =3D txd->v_lli; v_lli; + p_lli =3D v_lli->p_lli_next, v_lli =3D v_lli->v_lli_next) + sun6i_dma_dump_lli(vchan, v_lli, p_lli); =20 return vchan_tx_prep(&vchan->vc, &txd->vd, flags); =20 err_lli_free: - for (prev =3D txd->v_lli; prev; prev =3D prev->v_lli_next) - dma_pool_free(sdev->pool, prev, virt_to_phys(prev)); + for (p_lli =3D txd->p_lli, v_lli =3D txd->v_lli; v_lli; + p_lli =3D v_lli->p_lli_next, v_lli =3D v_lli->v_lli_next) + dma_pool_free(sdev->pool, v_lli, p_lli); kfree(txd); return NULL; } @@ -820,8 +819,9 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_d= ma_cyclic( return vchan_tx_prep(&vchan->vc, &txd->vd, flags); =20 err_lli_free: - for (prev =3D txd->v_lli; prev; prev =3D prev->v_lli_next) - dma_pool_free(sdev->pool, prev, virt_to_phys(prev)); + for (p_lli =3D txd->p_lli, v_lli =3D txd->v_lli; v_lli; + p_lli =3D v_lli->p_lli_next, v_lli =3D v_lli->v_lli_next) + dma_pool_free(sdev->pool, v_lli, p_lli); kfree(txd); return NULL; } --=20 2.35.1 From nobody Sun May 10 20:33:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 18B82C433EF for ; Sun, 24 Apr 2022 17:28:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236758AbiDXRbS (ORCPT ); Sun, 24 Apr 2022 13:31:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33364 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229914AbiDXRbI (ORCPT ); Sun, 24 Apr 2022 13:31:08 -0400 Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com [66.111.4.26]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C34F214AAED; Sun, 24 Apr 2022 10:28:07 -0700 (PDT) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 2FC6A5C00FD; Sun, 24 Apr 2022 13:28:07 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Sun, 24 Apr 2022 13:28:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= cc:cc:content-transfer-encoding:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm2; t=1650821287; x=1650907687; bh=KX ud8aNEo3GPSzdUwZ+M0Sz/KQJhb4LbGLSizThDo/8=; b=pMMge4SiMS/fgZXb8g pjZlAR1AFQU94Pqaz0bHGqr9f+waSEyzAP9huQ8sd0eoakRqOGrLdObZy4ZyQQei GfJJscBSrlmDcBsPyXR7eI4kOikUWB65r5pI4Aay1vXv8W79xIAKxd5IkvWV9tzN hRGGn9XbqCxLGApwArJmmK/+zy/pteEzJVVmxU0DJpG+u6hO/BQ30SaTssL7e4IB eRvlcaijaFiqLNBXIS+oOALY5rFmyH+IvQikXOGrRAGJYOnfIP01BwnqrT4oaOT8 xFa8LRJ6B2QTlGrfk5idW87efy0miyJ+8DSTA6lrtHe++gxDkP8EJYYCD+AIh+4z EZDg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1650821287; x=1650907687; bh=KXud8aNEo3GPSzdUwZ+M0Sz/KQJhb4LbGLS izThDo/8=; b=xr1I/ToiYHYh4WrTNdeYIyMwC3vFcnLESDuGMfZVorAkLPrsZbS hhIjRJ5AA/gJAxEDVzzFHijIDTaZeVFTRf41rCWfy9nZqhgw+hUjrLEFpbDugvVU W4R8zhx4N5g84Hj81MyT+U6USd3yMlJldKtSufVfjEQkfGXymXNCKYUh1DDXg13y DJ7N5OksTEPGHGb1bWhYbPQ7iN74l6V4JDZjXidO0/9Kvq7x3/TzSZBiMTs2ICHH CrkzFOzQZMfSDk0RuZPdv7jT+Wgr+HvanpW2hweyoJjlsILybEv8tiOxz2QhuIDF dH0Iw8SfKXgek8rpBPqm/sYPvHOyp9bHTcA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrtdelgdduudehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvvefufffkofgjfhgggfestdekredtredttdenucfhrhhomhepufgrmhhu vghlucfjohhllhgrnhguuceoshgrmhhuvghlsehshhholhhlrghnugdrohhrgheqnecugg ftrfgrthhtvghrnhepudekteeuudehtdelteevgfduvddvjefhfedulefgudevgeeghefg udefiedtveetnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrh homhepshgrmhhuvghlsehshhholhhlrghnugdrohhrgh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 24 Apr 2022 13:28:06 -0400 (EDT) From: Samuel Holland To: Vinod Koul , dmaengine@vger.kernel.org Cc: Samuel Holland , Chen-Yu Tsai , Jernej Skrabec , Krzysztof Kozlowski , Maxime Ripard , Rob Herring , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev Subject: [PATCH v3 3/4] dmaengine: sun6i: Add support for 34-bit physical addresses Date: Sun, 24 Apr 2022 12:27:57 -0500 Message-Id: <20220424172759.33383-4-samuel@sholland.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220424172759.33383-1-samuel@sholland.org> References: <20220424172759.33383-1-samuel@sholland.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Recent Allwinner SoCs support >4 GiB of DRAM, so those variants of the DMA engine support >32 bit physical addresses. This is accomplished by placing the high bits in the "para" word in the DMA descriptor. DMA descriptors themselves can be located at >32 bit addresses by putting the high bits in the LSBs of the descriptor address register, taking advantage of the required DMA descriptor alignment. However, support for this is not really necessary, so we can avoid the complication by allocating them from the DMA_32 zone. Signed-off-by: Samuel Holland Acked-by: Jernej Skrabec --- Changes in v3: - Fix shift warnings for 32-bit dma_addr_t and 32-bit phys_addr_t - Make explicit that v_lli->src/dst only hold the low 32 bits Changes in v2: - Fix `checkpatch.pl --strict` style issues (missing spaces) drivers/dma/sun6i-dma.c | 53 +++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c index 4436fbd70445..1eb3bafa7324 100644 --- a/drivers/dma/sun6i-dma.c +++ b/drivers/dma/sun6i-dma.c @@ -90,6 +90,14 @@ =20 #define DMA_CHAN_CUR_PARA 0x1c =20 +/* + * LLI address mangling + * + * The LLI link physical address is also mangled, but we avoid dealing + * with that by allocating LLIs from the DMA32 zone. + */ +#define SRC_HIGH_ADDR(x) (((x) & 0x3U) << 16) +#define DST_HIGH_ADDR(x) (((x) & 0x3U) << 18) =20 /* * Various hardware related defines @@ -132,6 +140,7 @@ struct sun6i_dma_config { u32 dst_burst_lengths; u32 src_addr_widths; u32 dst_addr_widths; + bool has_high_addr; bool has_mbus_clk; }; =20 @@ -623,6 +632,18 @@ static int set_config(struct sun6i_dma_dev *sdev, return 0; } =20 +static inline void sun6i_dma_set_addr(struct sun6i_dma_dev *sdev, + struct sun6i_dma_lli *v_lli, + dma_addr_t src, dma_addr_t dst) +{ + v_lli->src =3D lower_32_bits(src); + v_lli->dst =3D lower_32_bits(dst); + + if (sdev->cfg->has_high_addr) + v_lli->para |=3D SRC_HIGH_ADDR(upper_32_bits(src)) | + DST_HIGH_ADDR(upper_32_bits(dst)); +} + static struct dma_async_tx_descriptor *sun6i_dma_prep_dma_memcpy( struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, size_t len, unsigned long flags) @@ -645,16 +666,15 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep= _dma_memcpy( if (!txd) return NULL; =20 - v_lli =3D dma_pool_alloc(sdev->pool, GFP_NOWAIT, &p_lli); + v_lli =3D dma_pool_alloc(sdev->pool, GFP_DMA32 | GFP_NOWAIT, &p_lli); if (!v_lli) { dev_err(sdev->slave.dev, "Failed to alloc lli memory\n"); goto err_txd_free; } =20 - v_lli->src =3D src; - v_lli->dst =3D dest; v_lli->len =3D len; v_lli->para =3D NORMAL_WAIT; + sun6i_dma_set_addr(sdev, v_lli, src, dest); =20 burst =3D convert_burst(8); width =3D convert_buswidth(DMA_SLAVE_BUSWIDTH_4_BYTES); @@ -705,7 +725,7 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_s= lave_sg( return NULL; =20 for_each_sg(sgl, sg, sg_len, i) { - v_lli =3D dma_pool_alloc(sdev->pool, GFP_NOWAIT, &p_lli); + v_lli =3D dma_pool_alloc(sdev->pool, GFP_DMA32 | GFP_NOWAIT, &p_lli); if (!v_lli) goto err_lli_free; =20 @@ -713,8 +733,9 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_s= lave_sg( v_lli->para =3D NORMAL_WAIT; =20 if (dir =3D=3D DMA_MEM_TO_DEV) { - v_lli->src =3D sg_dma_address(sg); - v_lli->dst =3D sconfig->dst_addr; + sun6i_dma_set_addr(sdev, v_lli, + sg_dma_address(sg), + sconfig->dst_addr); v_lli->cfg =3D lli_cfg; sdev->cfg->set_drq(&v_lli->cfg, DRQ_SDRAM, vchan->port); sdev->cfg->set_mode(&v_lli->cfg, LINEAR_MODE, IO_MODE); @@ -726,8 +747,9 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_s= lave_sg( sg_dma_len(sg), flags); =20 } else { - v_lli->src =3D sconfig->src_addr; - v_lli->dst =3D sg_dma_address(sg); + sun6i_dma_set_addr(sdev, v_lli, + sconfig->src_addr, + sg_dma_address(sg)); v_lli->cfg =3D lli_cfg; sdev->cfg->set_drq(&v_lli->cfg, vchan->port, DRQ_SDRAM); sdev->cfg->set_mode(&v_lli->cfg, IO_MODE, LINEAR_MODE); @@ -786,7 +808,7 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_d= ma_cyclic( return NULL; =20 for (i =3D 0; i < periods; i++) { - v_lli =3D dma_pool_alloc(sdev->pool, GFP_NOWAIT, &p_lli); + v_lli =3D dma_pool_alloc(sdev->pool, GFP_DMA32 | GFP_NOWAIT, &p_lli); if (!v_lli) { dev_err(sdev->slave.dev, "Failed to alloc lli memory\n"); goto err_lli_free; @@ -796,14 +818,16 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep= _dma_cyclic( v_lli->para =3D NORMAL_WAIT; =20 if (dir =3D=3D DMA_MEM_TO_DEV) { - v_lli->src =3D buf_addr + period_len * i; - v_lli->dst =3D sconfig->dst_addr; + sun6i_dma_set_addr(sdev, v_lli, + buf_addr + period_len * i, + sconfig->dst_addr); v_lli->cfg =3D lli_cfg; sdev->cfg->set_drq(&v_lli->cfg, DRQ_SDRAM, vchan->port); sdev->cfg->set_mode(&v_lli->cfg, LINEAR_MODE, IO_MODE); } else { - v_lli->src =3D sconfig->src_addr; - v_lli->dst =3D buf_addr + period_len * i; + sun6i_dma_set_addr(sdev, v_lli, + sconfig->src_addr, + buf_addr + period_len * i); v_lli->cfg =3D lli_cfg; sdev->cfg->set_drq(&v_lli->cfg, vchan->port, DRQ_SDRAM); sdev->cfg->set_mode(&v_lli->cfg, IO_MODE, LINEAR_MODE); @@ -1174,8 +1198,6 @@ static struct sun6i_dma_config sun50i_a64_dma_cfg =3D= { }; =20 /* - * TODO: Add support for more than 4g physical addressing. - * * The A100 binding uses the number of dma channels from the * device tree node. */ @@ -1194,6 +1216,7 @@ static struct sun6i_dma_config sun50i_a100_dma_cfg = =3D { BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | BIT(DMA_SLAVE_BUSWIDTH_4_BYTES) | BIT(DMA_SLAVE_BUSWIDTH_8_BYTES), + .has_high_addr =3D true, .has_mbus_clk =3D true, }; =20 --=20 2.35.1 From nobody Sun May 10 20:33:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2F4A9C433F5 for ; Sun, 24 Apr 2022 17:28:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236793AbiDXRbV (ORCPT ); Sun, 24 Apr 2022 13:31:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33550 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236597AbiDXRbK (ORCPT ); Sun, 24 Apr 2022 13:31:10 -0400 Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com [66.111.4.26]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B2BEE14AAF3; Sun, 24 Apr 2022 10:28:09 -0700 (PDT) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 0F01C5C017E; Sun, 24 Apr 2022 13:28:09 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Sun, 24 Apr 2022 13:28:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= cc:cc:content-transfer-encoding:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm2; t=1650821289; x=1650907689; bh=HV olP6ZkMyb65XG1QvbeY08lLQkAYv1LBjKVDIgum5k=; b=YJ+7dCtdDGuT9u3w5g 5qjQiu9grty/l+q8FCL3g/SAefYxN4xDgAOXAqfVG29eNasMrYScvpXlqtONbjpJ 7Mhf7uBXBjYVViSrst0u15HsOhe7mloWQ8JFmfdKtaswVo7yh53NnjpzhHdDnZve fGjSqIY/lbMqIihq3sPS4RZAQTQEmZS3mP68H7YpW1bQmo7pHUdfBdWPOwHK0hr2 Fdp6z5L14lpxyFs2qncBp1oYJwIULb8HAKTvRb0zuZUox8X+hrn4IRKqSBP2gi5L z7pV4OdAm7TZWfaQI5ILRNyAsVJicQNYbZmjuHGusIRWMr/+lBVpi4C7TgWreaBs VeHQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1650821289; x=1650907689; bh=HVolP6ZkMyb65XG1QvbeY08lLQkAYv1LBjK VDIgum5k=; b=sXHT+ylENl6l8k7rlDj9Ox832v31yLcMK4oGuAZ8+YYaCF6awLb eDgvCKo2M6Dvl1hpUGYIcOG0lA0pjZSRf44YLZFZ+th7FwK6y/S/3YlaqjjFmji9 RDDiHSMJvCBnrz97iBn6UeoNXd+RfLezQx3lStqRUgrChPAGoRizgimejzEGYVaI KEg0fOW1sBk4lg2yaAJCyQoDHqquRVZgm1tU5gpOTLQPfsQsICgtBwvD1ZhFjMVy 7qze4h3E2uboe2rmMNgbXCmdT9MjCSFZShxzjzXApyUVugCCMLs8wjOwrNaZsOtB w7f3g+NmiMxmqlXbaoCdDUYqaLNiC0gCS/A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrtdelgdduudeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvvefufffkofgjfhgggfestdekredtredttdenucfhrhhomhepufgrmhhu vghlucfjohhllhgrnhguuceoshgrmhhuvghlsehshhholhhlrghnugdrohhrgheqnecugg ftrfgrthhtvghrnhepudekteeuudehtdelteevgfduvddvjefhfedulefgudevgeeghefg udefiedtveetnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrh homhepshgrmhhuvghlsehshhholhhlrghnugdrohhrgh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 24 Apr 2022 13:28:08 -0400 (EDT) From: Samuel Holland To: Vinod Koul , dmaengine@vger.kernel.org Cc: Samuel Holland , Chen-Yu Tsai , Jernej Skrabec , Krzysztof Kozlowski , Maxime Ripard , Rob Herring , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev, Maxime Ripard Subject: [PATCH v3 4/4] dmaengine: sun6i: Add support for the D1 variant Date: Sun, 24 Apr 2022 12:27:58 -0500 Message-Id: <20220424172759.33383-5-samuel@sholland.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220424172759.33383-1-samuel@sholland.org> References: <20220424172759.33383-1-samuel@sholland.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" So far it appears to match the configuration of the A100 variant. Since D1 is a RISC-V chip, it does not meet any of the existing dependencies for this driver, so relax the dependency somewhat. Acked-by: Maxime Ripard Signed-off-by: Samuel Holland --- (no changes since v1) drivers/dma/Kconfig | 2 +- drivers/dma/sun6i-dma.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig index d5de3f77d3aa..b6845303cf7e 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig @@ -163,7 +163,7 @@ config DMA_SUN4I =20 config DMA_SUN6I tristate "Allwinner A31 SoCs DMA support" - depends on MACH_SUN6I || MACH_SUN8I || (ARM64 && ARCH_SUNXI) || COMPILE_T= EST + depends on ARCH_SUNXI || COMPILE_TEST depends on RESET_CONTROLLER select DMA_ENGINE select DMA_VIRTUAL_CHANNELS diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c index 1eb3bafa7324..b7557f437936 100644 --- a/drivers/dma/sun6i-dma.c +++ b/drivers/dma/sun6i-dma.c @@ -1271,6 +1271,7 @@ static const struct of_device_id sun6i_dma_match[] = =3D { { .compatible =3D "allwinner,sun8i-a83t-dma", .data =3D &sun8i_a83t_dma_c= fg }, { .compatible =3D "allwinner,sun8i-h3-dma", .data =3D &sun8i_h3_dma_cfg }, { .compatible =3D "allwinner,sun8i-v3s-dma", .data =3D &sun8i_v3s_dma_cfg= }, + { .compatible =3D "allwinner,sun20i-d1-dma", .data =3D &sun50i_a100_dma_c= fg }, { .compatible =3D "allwinner,sun50i-a64-dma", .data =3D &sun50i_a64_dma_c= fg }, { .compatible =3D "allwinner,sun50i-a100-dma", .data =3D &sun50i_a100_dma= _cfg }, { .compatible =3D "allwinner,sun50i-h6-dma", .data =3D &sun50i_h6_dma_cfg= }, --=20 2.35.1