sunxi: drop earlier SPI/T113 patch in favour of proper upstreamed ones
authorZoltan HERPAI <wigyori@uid0.hu>
Thu, 20 Jul 2023 11:49:58 +0000 (13:49 +0200)
committerZoltan HERPAI <wigyori@uid0.hu>
Thu, 20 Jul 2023 11:49:58 +0000 (13:49 +0200)
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
target/linux/sunxi/patches-6.1/0007-1-add-SPI-on-T113.patch [new file with mode: 0644]
target/linux/sunxi/patches-6.1/0007-2-add-QSPI-support-for-T113.patch [new file with mode: 0644]
target/linux/sunxi/patches-6.1/0007-dt-bindings-spi-sun6i-add-DT-bindings-for-Allwinner-.patch [deleted file]

diff --git a/target/linux/sunxi/patches-6.1/0007-1-add-SPI-on-T113.patch b/target/linux/sunxi/patches-6.1/0007-1-add-SPI-on-T113.patch
new file mode 100644 (file)
index 0000000..23b9f04
--- /dev/null
@@ -0,0 +1,1051 @@
+From patchwork Sun May  7 15:03:33 2023
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Maksim Kiselev <bigunclemax@gmail.com>
+X-Patchwork-Id: 13233752
+Return-Path: 
+ <linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org>
+X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
+       aws-us-west-2-korg-lkml-1.web.codeaurora.org
+Received: from bombadil.infradead.org (bombadil.infradead.org
+ [198.137.202.133])
+       (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+       (No client certificate requested)
+       by smtp.lore.kernel.org (Postfix) with ESMTPS id 7762AC77B7C
+       for <linux-arm-kernel@archiver.kernel.org>;
+ Sun,  7 May 2023 15:06:28 +0000 (UTC)
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
+       d=lists.infradead.org; s=bombadil.20210309; h=Sender:
+       Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:
+       List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:
+       Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:
+       Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
+       List-Owner; bh=pWxNmcj7fZ1/Sf8o4CIzEQ2ksG79QCu+kgwsUD68WPs=; b=WCFOjQcLSR+zk0
+       YurvQImRTQE5NYNgdXKLlOxYTkOGJ5+BfZx6IF5CtA2eEYX6yIrJ4PDdjbErjLDVJm3XQo9fcghxf
+       pvefHhL28tCQoWJqoWVQ0IAidl1Ek1zGjfY/yADmbPIKF6VwlGPcXHmqntXOriNCyo506nSkpGhZs
+       o4kozLiHdmuBNpipXPWkQLfYZvAGkQGqoe88+cYEMcCD7Ghyk717ui5M8Tuh1wqbbo09d9OC/ibAz
+       JzSiCDc3x2WE35ewOYy3lnXb4bDTNFzB+s2t6dvenem8wVUuYIdCfHzI9tEIFQDA4fZ9Us3w47M+u
+       mt1YrZyeQaZ1SBVm8cFQ==;
+Received: from localhost ([::1] helo=bombadil.infradead.org)
+       by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux))
+       id 1pvfx9-00GFJ5-0m;
+       Sun, 07 May 2023 15:05:35 +0000
+Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e])
+       by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux))
+       id 1pvfx7-00GFIU-1P;
+       Sun, 07 May 2023 15:05:34 +0000
+Received: by mail-wm1-x32e.google.com with SMTP id
+ 5b1f17b1804b1-3f315712406so144870145e9.0;
+        Sun, 07 May 2023 08:05:31 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=gmail.com; s=20221208; t=1683471930; x=1686063930;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
+         :message-id:reply-to;
+        bh=BWPFIpbopZ/dSPc8BXucXK0MKlLp5Nt0gvsNK/0CeEE=;
+        b=NqJNHxlpTZEGCLOOoR9ynNB7nWMm5du5oJdDZV//VB8baAumsI9K0DyAbkEMe9f6dH
+         ayQetIhPKX6l9aayF9h2FeVblROcT/I4vIWocwEkl25UMX+c7tEG9YfzgDEzFK2/FfrF
+         fRsiI5Boh6Sjt9BmlZVQxn+kVIxKuQboI/25h5QHI2F52o11ah9WZVx+qog680vLB4Dn
+         pVGpus9Qm9pPjK8jys4VOUyM1k9bZQRiKoVGcHttBD2xnltNLF7NNB56hg7eRo3rQmt0
+         rha+vtWIdVgIGf2QJbbUe3vvyGJarCUjybV8rZ0aKNXIQcLrEwgqVHO03d9d8OUZ1Npi
+         /wWw==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=1e100.net; s=20221208; t=1683471930; x=1686063930;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
+         :subject:date:message-id:reply-to;
+        bh=BWPFIpbopZ/dSPc8BXucXK0MKlLp5Nt0gvsNK/0CeEE=;
+        b=Rij2EL16hAYicC76IpYHMzfkaZcd0nIZgylPHtv6TwSo8Pjro7VJhBUXaFhjKAsvFk
+         Bu46Azwd22uxZEE5uvHpXHClRtsIr6KM7j9QEmc1tfNqbikNLt9a2fLivT7WlfGnsGAe
+         BvQMtPH02REoAAh0r1tiukr21Y6Qb2C6iC2IP5lzbi5IyhZBmT2e1yIxVVQUXrdGQciL
+         7bcZWLdIif+Rz5EoZPDHBxMYivp2iw5gsdJUSKLx7yLiSy6zYtCGygUj6CQdCli2fdOu
+         vaSD0xMe3i6oYHIPcLzOBElotVD6jzddsYHpxK/RTvyht5UPV8axGpGKTPR5iWXOd8L6
+         KFvA==
+X-Gm-Message-State: AC+VfDxxrsJpNFK0KJOOTw+Ros8P/dpRjA4Z+q7Hptf3c3vCuBIzfl4B
+       RNyoGnEiDfqCKU7dhqySNsg=
+X-Google-Smtp-Source: 
+ ACHHUZ7/e5Bbc9zRgx5V/xn6mDpperMU1AZZ37UdqDuQFjv/5xA2kL53z6k4AGG30/D4C2f50XJROQ==
+X-Received: by 2002:a05:6000:100d:b0:306:3ec9:99c5 with SMTP id
+ a13-20020a056000100d00b003063ec999c5mr5382942wrx.9.1683471930289;
+        Sun, 07 May 2023 08:05:30 -0700 (PDT)
+Received: from localhost.localdomain ([176.221.215.212])
+        by smtp.gmail.com with ESMTPSA id
+ e15-20020a5d594f000000b0030771c6e443sm8437998wri.42.2023.05.07.08.05.27
+        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
+        Sun, 07 May 2023 08:05:29 -0700 (PDT)
+From: Maksim Kiselev <bigunclemax@gmail.com>
+To: Andre Przywara <andre.przywara@arm.com>
+Cc: Icenowy Zheng <icenowy@aosc.io>,
+       Maksim Kiselev <bigunclemax@gmail.com>,
+       Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
+       Mark Brown <broonie@kernel.org>,
+       Rob Herring <robh+dt@kernel.org>,
+       Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
+       Conor Dooley <conor+dt@kernel.org>,
+       Chen-Yu Tsai <wens@csie.org>,
+       Jernej Skrabec <jernej.skrabec@gmail.com>,
+       Samuel Holland <samuel@sholland.org>,
+       Paul Walmsley <paul.walmsley@sifive.com>,
+       Palmer Dabbelt <palmer@dabbelt.com>,
+       Albert Ou <aou@eecs.berkeley.edu>,
+       Cristian Ciocaltea <cristian.ciocaltea@collabora.com>,
+       Maxime Ripard <mripard@kernel.org>,
+       linux-spi@vger.kernel.org,
+       devicetree@vger.kernel.org,
+       linux-arm-kernel@lists.infradead.org,
+       linux-sunxi@lists.linux.dev,
+       linux-kernel@vger.kernel.org,
+       linux-riscv@lists.infradead.org
+Subject: [PATCH v4 1/5] dt-bindings: spi: sun6i: add DT bindings for Allwinner
+ R329/D1/R528/T113s SPI
+Date: Sun,  7 May 2023 18:03:33 +0300
+Message-Id: <20230507150345.1971083-2-bigunclemax@gmail.com>
+X-Mailer: git-send-email 2.39.2
+In-Reply-To: <20230507150345.1971083-1-bigunclemax@gmail.com>
+References: <20230507150345.1971083-1-bigunclemax@gmail.com>
+MIME-Version: 1.0
+X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 
+X-CRM114-CacheID: sfid-20230507_080533_475318_5418593B 
+X-CRM114-Status: UNSURE (   9.74  )
+X-CRM114-Notice: Please train this message.
+X-BeenThere: linux-arm-kernel@lists.infradead.org
+X-Mailman-Version: 2.1.34
+Precedence: list
+List-Id: <linux-arm-kernel.lists.infradead.org>
+List-Unsubscribe: 
+ <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
+List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
+List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
+List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
+List-Subscribe: 
+ <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
+Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
+Errors-To: 
+ linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org
+
+Listed above Allwinner SoCs has two SPI controllers. First is the regular
+SPI controller and the second one has additional functionality for
+MIPI-DBI Type C.
+
+Add compatible strings for these controllers
+
+Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
+Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
+---
+ .../devicetree/bindings/spi/allwinner,sun6i-a31-spi.yaml   | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/Documentation/devicetree/bindings/spi/allwinner,sun6i-a31-spi.yaml b/Documentation/devicetree/bindings/spi/allwinner,sun6i-a31-spi.yaml
+index de36c6a34a0f..ab2d8a03011e 100644
+--- a/Documentation/devicetree/bindings/spi/allwinner,sun6i-a31-spi.yaml
++++ b/Documentation/devicetree/bindings/spi/allwinner,sun6i-a31-spi.yaml
+@@ -19,6 +19,7 @@ properties:
+   compatible:
+     oneOf:
++      - const: allwinner,sun50i-r329-spi
+       - const: allwinner,sun6i-a31-spi
+       - const: allwinner,sun8i-h3-spi
+       - items:
+@@ -28,6 +29,12 @@ properties:
+               - allwinner,sun50i-h616-spi
+               - allwinner,suniv-f1c100s-spi
+           - const: allwinner,sun8i-h3-spi
++      - items:
++          - enum:
++              - allwinner,sun20i-d1-spi
++              - allwinner,sun20i-d1-spi-dbi
++              - allwinner,sun50i-r329-spi-dbi
++          - const: allwinner,sun50i-r329-spi
+   reg:
+     maxItems: 1
+
+From patchwork Sun May  7 15:03:34 2023
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Maksim Kiselev <bigunclemax@gmail.com>
+X-Patchwork-Id: 13233751
+Return-Path: 
+ <linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org>
+X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
+       aws-us-west-2-korg-lkml-1.web.codeaurora.org
+Received: from bombadil.infradead.org (bombadil.infradead.org
+ [198.137.202.133])
+       (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+       (No client certificate requested)
+       by smtp.lore.kernel.org (Postfix) with ESMTPS id 0588CC77B7D
+       for <linux-arm-kernel@archiver.kernel.org>;
+ Sun,  7 May 2023 15:06:28 +0000 (UTC)
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
+       d=lists.infradead.org; s=bombadil.20210309; h=Sender:
+       Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:
+       List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:
+       Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:
+       Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
+       List-Owner; bh=VNx6x4ZgOuORWNwGxGCrDX6xE6cfYDIUujoKr7Rych4=; b=3q8n69/ZKznMAf
+       7CLM8HPT2tvwCYVmCyz3MBoIEaiRAJnQVbeZRXHUwrx2JZIHZuJHV3c1CZNkXugXRNHnHEGn/3dNm
+       wm7UautPkjCRCkXiC/vW/mo+eSa6bLEGhBh6Yezs4VkulkwsANl1SN/eBjjinE4ega7ypMKRbOwG+
+       jNkdQicnbny5YGVyLQXpFmkdDEJTem4Lf/Fb+FtpUW/lXwE3g6Fps1UR2lZsnpCu6mOi1kYw3xeMp
+       ExbH+5jAiaZQDc0h12Y8ttrpdvqXjj3cDvbl1QxlgBaar6I33OrdDSscUe3vgrJ+PM8xBMGtzlQEL
+       r0iKjpQjg4ySXtQURCzw==;
+Received: from localhost ([::1] helo=bombadil.infradead.org)
+       by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux))
+       id 1pvfxF-00GFLd-2n;
+       Sun, 07 May 2023 15:05:41 +0000
+Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e])
+       by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux))
+       id 1pvfxC-00GFIU-37;
+       Sun, 07 May 2023 15:05:40 +0000
+Received: by mail-wm1-x32e.google.com with SMTP id
+ 5b1f17b1804b1-3f315712406so144872295e9.0;
+        Sun, 07 May 2023 08:05:38 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=gmail.com; s=20221208; t=1683471938; x=1686063938;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
+         :message-id:reply-to;
+        bh=77wc1d6atkrSEJWlP3Ir0nLtSYker340vhK9d9PW+mI=;
+        b=XutFOCZHWJnWkRB9BewbmcrURpWtS0oGRy7KitO4zl8hpXeDbYm+5ThXZS34mSfEcn
+         EVrt1FMqI5UZMsN8Ix012ShRWbcrQ1PD5U/Q7RtLFeNXXzJXRW8KIF/aerD27CGlhG0m
+         HLZMsgyiuGhoe1+7TsE3erKCGIFtDb3MECuULbMo6+SyNoyoJnp2Ymw84KeMAoYFrO+7
+         f/Uz2ZQQuztHQvyRE6XN8c5SwuXdMTtfZyOfUOuV3wkYTePb+nt5nRxwo1Ijw89E7+EG
+         2P6mmFHLBJ6NuLtSJYLJr5CYaedoERne6G+ReFHD1LPPbtOyR35oLeTqFB+T+EwCjVbv
+         Y7Rg==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=1e100.net; s=20221208; t=1683471938; x=1686063938;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
+         :subject:date:message-id:reply-to;
+        bh=77wc1d6atkrSEJWlP3Ir0nLtSYker340vhK9d9PW+mI=;
+        b=DFUzG8EhYXjNFdwMvoblBlctUa6d19Oc1SYaYPJrJCxp00adbpWd3LVmZ+h4H8bDzx
+         7BgzH31bBcnqGq/SYwhwQTJDCq/EWUolSF+hRzWYMYkQ0bi5blqWyVZPO5MEBZAJ9GA5
+         ro/Lia839/FbxEXVe/8ZGDggS72UwnqHSVlnstdRzmELmDaFYiOS2NvJMcj7EVmjqxT3
+         nOhywSyIxNvjXQAYyFp98qisd4jyvG8DhEN45zBikcmaQP1a58DcMxOC95ilIBsu3qUP
+         oj8IpqR5mlWCjMB4WKLjSNMzrLJXQw0PuHBVWK+bz3hRWkzJ5MMfYv7IiJykMqrVqCAB
+         NgtA==
+X-Gm-Message-State: AC+VfDyMywpt39bJ6QoRMIR3wruQ2nF1HR1voAWJxKG27OYA8HnjQW0i
+       cz/Pa5t4gfAJ3ip8iSJJcY4=
+X-Google-Smtp-Source: 
+ ACHHUZ4bDccmBL9QdKVq9vlwdYZQPjzfCJXGWwQ7Tqwl3/wtWtlVOhk3dYx4QSgktssjK8nmqbL8Tw==
+X-Received: by 2002:a05:600c:8511:b0:3f1:7510:62e8 with SMTP id
+ gw17-20020a05600c851100b003f1751062e8mr5566482wmb.3.1683471938339;
+        Sun, 07 May 2023 08:05:38 -0700 (PDT)
+Received: from localhost.localdomain ([176.221.215.212])
+        by smtp.gmail.com with ESMTPSA id
+ e15-20020a5d594f000000b0030771c6e443sm8437998wri.42.2023.05.07.08.05.35
+        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
+        Sun, 07 May 2023 08:05:38 -0700 (PDT)
+From: Maksim Kiselev <bigunclemax@gmail.com>
+To: Andre Przywara <andre.przywara@arm.com>
+Cc: Icenowy Zheng <icenowy@aosc.io>,
+       Maksim Kiselev <bigunclemax@gmail.com>,
+       Samuel Holland <samuel@sholland.org>,
+       Mark Brown <broonie@kernel.org>,
+       Rob Herring <robh+dt@kernel.org>,
+       Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
+       Conor Dooley <conor+dt@kernel.org>,
+       Chen-Yu Tsai <wens@csie.org>,
+       Jernej Skrabec <jernej.skrabec@gmail.com>,
+       Paul Walmsley <paul.walmsley@sifive.com>,
+       Palmer Dabbelt <palmer@dabbelt.com>,
+       Albert Ou <aou@eecs.berkeley.edu>,
+       Cristian Ciocaltea <cristian.ciocaltea@collabora.com>,
+       Maxime Ripard <mripard@kernel.org>,
+       linux-spi@vger.kernel.org,
+       devicetree@vger.kernel.org,
+       linux-arm-kernel@lists.infradead.org,
+       linux-sunxi@lists.linux.dev,
+       linux-kernel@vger.kernel.org,
+       linux-riscv@lists.infradead.org
+Subject: [PATCH v4 2/5] spi: sun6i: change OF match data to a struct
+Date: Sun,  7 May 2023 18:03:34 +0300
+Message-Id: <20230507150345.1971083-3-bigunclemax@gmail.com>
+X-Mailer: git-send-email 2.39.2
+In-Reply-To: <20230507150345.1971083-1-bigunclemax@gmail.com>
+References: <20230507150345.1971083-1-bigunclemax@gmail.com>
+MIME-Version: 1.0
+X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 
+X-CRM114-CacheID: sfid-20230507_080539_014863_20A4E9C3 
+X-CRM114-Status: GOOD (  19.81  )
+X-BeenThere: linux-arm-kernel@lists.infradead.org
+X-Mailman-Version: 2.1.34
+Precedence: list
+List-Id: <linux-arm-kernel.lists.infradead.org>
+List-Unsubscribe: 
+ <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
+List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
+List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
+List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
+List-Subscribe: 
+ <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
+Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
+Errors-To: 
+ linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org
+
+From: Icenowy Zheng <icenowy@aosc.io>
+
+As we're adding more properties to the OF match data, convert it to a
+struct now.
+
+Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
+Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
+Reviewed-by: Samuel Holland <samuel@sholland.org>
+Reviewed-by: Andre Przywara <andre.przywara@arm.com>
+---
+ drivers/spi/spi-sun6i.c | 32 ++++++++++++++++++++++----------
+ 1 file changed, 22 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c
+index 7532c85a352c..01a01cd86db5 100644
+--- a/drivers/spi/spi-sun6i.c
++++ b/drivers/spi/spi-sun6i.c
+@@ -85,6 +85,10 @@
+ #define SUN6I_TXDATA_REG              0x200
+ #define SUN6I_RXDATA_REG              0x300
++struct sun6i_spi_cfg {
++      unsigned long           fifo_depth;
++};
++
+ struct sun6i_spi {
+       struct spi_master       *master;
+       void __iomem            *base_addr;
+@@ -99,7 +103,7 @@ struct sun6i_spi {
+       const u8                *tx_buf;
+       u8                      *rx_buf;
+       int                     len;
+-      unsigned long           fifo_depth;
++      const struct sun6i_spi_cfg *cfg;
+ };
+ static inline u32 sun6i_spi_read(struct sun6i_spi *sspi, u32 reg)
+@@ -156,7 +160,7 @@ static inline void sun6i_spi_fill_fifo(struct sun6i_spi *sspi)
+       u8 byte;
+       /* See how much data we can fit */
+-      cnt = sspi->fifo_depth - sun6i_spi_get_tx_fifo_count(sspi);
++      cnt = sspi->cfg->fifo_depth - sun6i_spi_get_tx_fifo_count(sspi);
+       len = min((int)cnt, sspi->len);
+@@ -289,14 +293,14 @@ static int sun6i_spi_transfer_one(struct spi_master *master,
+                * the hardcoded value used in old generation of Allwinner
+                * SPI controller. (See spi-sun4i.c)
+                */
+-              trig_level = sspi->fifo_depth / 4 * 3;
++              trig_level = sspi->cfg->fifo_depth / 4 * 3;
+       } else {
+               /*
+                * Setup FIFO DMA request trigger level
+                * We choose 1/2 of the full fifo depth, that value will
+                * be used as DMA burst length.
+                */
+-              trig_level = sspi->fifo_depth / 2;
++              trig_level = sspi->cfg->fifo_depth / 2;
+               if (tfr->tx_buf)
+                       reg |= SUN6I_FIFO_CTL_TF_DRQ_EN;
+@@ -410,9 +414,9 @@ static int sun6i_spi_transfer_one(struct spi_master *master,
+       reg = SUN6I_INT_CTL_TC;
+       if (!use_dma) {
+-              if (rx_len > sspi->fifo_depth)
++              if (rx_len > sspi->cfg->fifo_depth)
+                       reg |= SUN6I_INT_CTL_RF_RDY;
+-              if (tx_len > sspi->fifo_depth)
++              if (tx_len > sspi->cfg->fifo_depth)
+                       reg |= SUN6I_INT_CTL_TF_ERQ;
+       }
+@@ -543,7 +547,7 @@ static bool sun6i_spi_can_dma(struct spi_master *master,
+        * the fifo length we can just fill the fifo and wait for a single
+        * irq, so don't bother setting up dma
+        */
+-      return xfer->len > sspi->fifo_depth;
++      return xfer->len > sspi->cfg->fifo_depth;
+ }
+ static int sun6i_spi_probe(struct platform_device *pdev)
+@@ -582,7 +586,7 @@ static int sun6i_spi_probe(struct platform_device *pdev)
+       }
+       sspi->master = master;
+-      sspi->fifo_depth = (unsigned long)of_device_get_match_data(&pdev->dev);
++      sspi->cfg = of_device_get_match_data(&pdev->dev);
+       master->max_speed_hz = 100 * 1000 * 1000;
+       master->min_speed_hz = 3 * 1000;
+@@ -695,9 +699,17 @@ static void sun6i_spi_remove(struct platform_device *pdev)
+               dma_release_channel(master->dma_rx);
+ }
++static const struct sun6i_spi_cfg sun6i_a31_spi_cfg = {
++      .fifo_depth     = SUN6I_FIFO_DEPTH,
++};
++
++static const struct sun6i_spi_cfg sun8i_h3_spi_cfg = {
++      .fifo_depth     = SUN8I_FIFO_DEPTH,
++};
++
+ static const struct of_device_id sun6i_spi_match[] = {
+-      { .compatible = "allwinner,sun6i-a31-spi", .data = (void *)SUN6I_FIFO_DEPTH },
+-      { .compatible = "allwinner,sun8i-h3-spi",  .data = (void *)SUN8I_FIFO_DEPTH },
++      { .compatible = "allwinner,sun6i-a31-spi", .data = &sun6i_a31_spi_cfg },
++      { .compatible = "allwinner,sun8i-h3-spi",  .data = &sun8i_h3_spi_cfg },
+       {}
+ };
+ MODULE_DEVICE_TABLE(of, sun6i_spi_match);
+
+From patchwork Sun May  7 15:03:35 2023
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Maksim Kiselev <bigunclemax@gmail.com>
+X-Patchwork-Id: 13233753
+Return-Path: 
+ <linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org>
+X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
+       aws-us-west-2-korg-lkml-1.web.codeaurora.org
+Received: from bombadil.infradead.org (bombadil.infradead.org
+ [198.137.202.133])
+       (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+       (No client certificate requested)
+       by smtp.lore.kernel.org (Postfix) with ESMTPS id 8F26AC77B7C
+       for <linux-arm-kernel@archiver.kernel.org>;
+ Sun,  7 May 2023 15:06:41 +0000 (UTC)
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
+       d=lists.infradead.org; s=bombadil.20210309; h=Sender:
+       Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:
+       List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:
+       Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:
+       Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
+       List-Owner; bh=/gXnbYUwa3utnp4epFvoMimUfCEQf2Emb7ezVJwFRHI=; b=RoQEe+FKZeF1gq
+       7NqzWSU4Pd6uRYARISiLZ6R9pQOrqlOFusX3+T/RqIFPIOH75THmfEoDmMhTllPsiDR5rB4lk11Z7
+       UWBkZ6pAOZV52Ik16+Nc7o9NHCfOXB3LyosRLiksv396HekKnXgnMu1ojcWNJMFIcEKcx/t4izrhA
+       v4f8VrgWQ9W+AIawRVnRrogm5qettGMv6GXCi265IPpRTNozKBRqYHop1PwvW4GeOGbhTmicID5OH
+       fpYa/Vv0yx53LySlxcgavlcFi1QWdacd/RjXX3gOAXy+7WwsPYTrU6UEMXG26I4jwp80fWuO1Px+g
+       AwY1oURZIZt4/OpiLeLw==;
+Received: from localhost ([::1] helo=bombadil.infradead.org)
+       by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux))
+       id 1pvfxQ-00GFQ7-2d;
+       Sun, 07 May 2023 15:05:52 +0000
+Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334])
+       by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux))
+       id 1pvfxN-00GFO0-0j;
+       Sun, 07 May 2023 15:05:50 +0000
+Received: by mail-wm1-x334.google.com with SMTP id
+ 5b1f17b1804b1-3f4000ec6ecso36464485e9.0;
+        Sun, 07 May 2023 08:05:49 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=gmail.com; s=20221208; t=1683471948; x=1686063948;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
+         :message-id:reply-to;
+        bh=T8Xbue+dZrUS0EtWBIjxZwNQ7G1HJWZPzEox+l8G5TM=;
+        b=lhYBSHcPlF2D07Hfu6H7Wu4YygvzGxgAGC5eHWGKvZ22zVVCKMfCGvpQ9YArJQe1OP
+         mM1eJURhuhVrw8FB8mgvUVatKwgvwGPWOxP9pnpCYU9krKRDY4fjz+6V5D1148vBl+EW
+         HKrq1r6Mbgs/MRg4aOXfNjKeA8h7R3WW5S1qJUF5K5+5Cy4HsXBtD9kR85pqnJccAH2t
+         WEOINL/VPVL7ka4d80LzZoBqk64PP5vpQySj3VVjukrs1JHQETGymuH5Q0V5wLAJ3jEX
+         /5efgaJXLFEwn2j/Eld6zSVvYry0Ni7YKAgdc01c+V5BCYVc0ICRje7nBstJCqDCfw4z
+         IolQ==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=1e100.net; s=20221208; t=1683471948; x=1686063948;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
+         :subject:date:message-id:reply-to;
+        bh=T8Xbue+dZrUS0EtWBIjxZwNQ7G1HJWZPzEox+l8G5TM=;
+        b=GOqiV/w54KC5gN4GX4JdofXSlBQDZNbyinRTdVYT48PAzGVsU/fOPmDIldKUbJLJz6
+         cGZx5Tf7mjEtHf5aEpUjLE6qEoGhJVzXxqTjgCmOzr1rTLFcuSElej7j3NNtY/sOhgbB
+         IoN8b6rGGpetQfVXd3nHRLaucbkgHRWkK8ACvJtGnXhAL8E+W9ZGKBjel56yo9BSk3Mu
+         jzMo5ULK9eXAC+mRC2rN0mvXkEs/UQwvMWM1wl77Qj0nDGnW8PX07lz3sHujhPOqxL1n
+         6j4hFtv+9infAkAwns9ZM04BOOY0jvkXQQGJJ1UklUX+GpDYs2M27vt88cR/KSJDWD3+
+         XGkA==
+X-Gm-Message-State: AC+VfDxeorUHPNgNaFC8UnLT+wfMnxhlj1naLof2h1PzTEd7t6CiHwjK
+       4zudsjf63LIHOQ0tZkukYto=
+X-Google-Smtp-Source: 
+ ACHHUZ6P7qXpFFPAPaFm0HGci22eWsFqTYayxZY/A76FX259w2o8wnK65Fpnavwew0z750xCUL9Mzg==
+X-Received: by 2002:a7b:c454:0:b0:3f4:2297:630a with SMTP id
+ l20-20020a7bc454000000b003f42297630amr1380003wmi.20.1683471947766;
+        Sun, 07 May 2023 08:05:47 -0700 (PDT)
+Received: from localhost.localdomain ([176.221.215.212])
+        by smtp.gmail.com with ESMTPSA id
+ e15-20020a5d594f000000b0030771c6e443sm8437998wri.42.2023.05.07.08.05.44
+        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
+        Sun, 07 May 2023 08:05:47 -0700 (PDT)
+From: Maksim Kiselev <bigunclemax@gmail.com>
+To: Andre Przywara <andre.przywara@arm.com>
+Cc: Icenowy Zheng <icenowy@aosc.io>,
+       Maksim Kiselev <bigunclemax@gmail.com>,
+       Mark Brown <broonie@kernel.org>,
+       Rob Herring <robh+dt@kernel.org>,
+       Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
+       Conor Dooley <conor+dt@kernel.org>,
+       Chen-Yu Tsai <wens@csie.org>,
+       Jernej Skrabec <jernej.skrabec@gmail.com>,
+       Samuel Holland <samuel@sholland.org>,
+       Paul Walmsley <paul.walmsley@sifive.com>,
+       Palmer Dabbelt <palmer@dabbelt.com>,
+       Albert Ou <aou@eecs.berkeley.edu>,
+       Cristian Ciocaltea <cristian.ciocaltea@collabora.com>,
+       Maxime Ripard <mripard@kernel.org>,
+       linux-spi@vger.kernel.org,
+       devicetree@vger.kernel.org,
+       linux-arm-kernel@lists.infradead.org,
+       linux-sunxi@lists.linux.dev,
+       linux-kernel@vger.kernel.org,
+       linux-riscv@lists.infradead.org
+Subject: [PATCH v4 3/5] spi: sun6i: add quirk for in-controller clock divider
+Date: Sun,  7 May 2023 18:03:35 +0300
+Message-Id: <20230507150345.1971083-4-bigunclemax@gmail.com>
+X-Mailer: git-send-email 2.39.2
+In-Reply-To: <20230507150345.1971083-1-bigunclemax@gmail.com>
+References: <20230507150345.1971083-1-bigunclemax@gmail.com>
+MIME-Version: 1.0
+X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 
+X-CRM114-CacheID: sfid-20230507_080549_262062_2C8235EC 
+X-CRM114-Status: GOOD (  22.23  )
+X-BeenThere: linux-arm-kernel@lists.infradead.org
+X-Mailman-Version: 2.1.34
+Precedence: list
+List-Id: <linux-arm-kernel.lists.infradead.org>
+List-Unsubscribe: 
+ <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
+List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
+List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
+List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
+List-Subscribe: 
+ <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
+Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
+Errors-To: 
+ linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org
+
+Previously SPI controllers in Allwinner SoCs has a clock divider inside.
+However now the clock divider is removed and to set the transfer clock
+rate it's only needed to set the SPI module clock to the target value
+and configure a proper work mode.
+
+According to the datasheet there are three work modes:
+
+| SPI Sample Mode         | SDM(bit13) | SDC(bit11) | Run Clock |
+|-------------------------|------------|------------|-----------|
+| normal sample           |      1     |      0     | <= 24 MHz |
+| delay half cycle sample |      0     |      0     | <= 40 MHz |
+| delay one cycle sample  |      0     |      1     | >= 80 MHz |
+
+Add a quirk for this kind of SPI controllers.
+
+Co-developed-by: Icenowy Zheng <icenowy@aosc.io>
+Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
+---
+ drivers/spi/spi-sun6i.c | 91 +++++++++++++++++++++++++++--------------
+ 1 file changed, 61 insertions(+), 30 deletions(-)
+
+diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c
+index 01a01cd86db5..e4efab310469 100644
+--- a/drivers/spi/spi-sun6i.c
++++ b/drivers/spi/spi-sun6i.c
+@@ -42,7 +42,9 @@
+ #define SUN6I_TFR_CTL_CS_MANUAL                       BIT(6)
+ #define SUN6I_TFR_CTL_CS_LEVEL                        BIT(7)
+ #define SUN6I_TFR_CTL_DHB                     BIT(8)
++#define SUN6I_TFR_CTL_SDC                     BIT(11)
+ #define SUN6I_TFR_CTL_FBS                     BIT(12)
++#define SUN6I_TFR_CTL_SDM                     BIT(13)
+ #define SUN6I_TFR_CTL_XCH                     BIT(31)
+ #define SUN6I_INT_CTL_REG             0x10
+@@ -87,6 +89,7 @@
+ struct sun6i_spi_cfg {
+       unsigned long           fifo_depth;
++      bool                    has_clk_ctl;
+ };
+ struct sun6i_spi {
+@@ -260,7 +263,7 @@ static int sun6i_spi_transfer_one(struct spi_master *master,
+                                 struct spi_transfer *tfr)
+ {
+       struct sun6i_spi *sspi = spi_master_get_devdata(master);
+-      unsigned int mclk_rate, div, div_cdr1, div_cdr2, timeout;
++      unsigned int div, div_cdr1, div_cdr2, timeout;
+       unsigned int start, end, tx_time;
+       unsigned int trig_level;
+       unsigned int tx_len = 0, rx_len = 0;
+@@ -350,39 +353,65 @@ static int sun6i_spi_transfer_one(struct spi_master *master,
+       sun6i_spi_write(sspi, SUN6I_TFR_CTL_REG, reg);
+-      /* Ensure that we have a parent clock fast enough */
+-      mclk_rate = clk_get_rate(sspi->mclk);
+-      if (mclk_rate < (2 * tfr->speed_hz)) {
+-              clk_set_rate(sspi->mclk, 2 * tfr->speed_hz);
+-              mclk_rate = clk_get_rate(sspi->mclk);
+-      }
++      if (sspi->cfg->has_clk_ctl) {
++              unsigned int mclk_rate = clk_get_rate(sspi->mclk);
+-      /*
+-       * Setup clock divider.
+-       *
+-       * We have two choices there. Either we can use the clock
+-       * divide rate 1, which is calculated thanks to this formula:
+-       * SPI_CLK = MOD_CLK / (2 ^ cdr)
+-       * Or we can use CDR2, which is calculated with the formula:
+-       * SPI_CLK = MOD_CLK / (2 * (cdr + 1))
+-       * Wether we use the former or the latter is set through the
+-       * DRS bit.
+-       *
+-       * First try CDR2, and if we can't reach the expected
+-       * frequency, fall back to CDR1.
+-       */
+-      div_cdr1 = DIV_ROUND_UP(mclk_rate, tfr->speed_hz);
+-      div_cdr2 = DIV_ROUND_UP(div_cdr1, 2);
+-      if (div_cdr2 <= (SUN6I_CLK_CTL_CDR2_MASK + 1)) {
+-              reg = SUN6I_CLK_CTL_CDR2(div_cdr2 - 1) | SUN6I_CLK_CTL_DRS;
+-              tfr->effective_speed_hz = mclk_rate / (2 * div_cdr2);
++              /* Ensure that we have a parent clock fast enough */
++              if (mclk_rate < (2 * tfr->speed_hz)) {
++                      clk_set_rate(sspi->mclk, 2 * tfr->speed_hz);
++                      mclk_rate = clk_get_rate(sspi->mclk);
++              }
++
++              /*
++               * Setup clock divider.
++               *
++               * We have two choices there. Either we can use the clock
++               * divide rate 1, which is calculated thanks to this formula:
++               * SPI_CLK = MOD_CLK / (2 ^ cdr)
++               * Or we can use CDR2, which is calculated with the formula:
++               * SPI_CLK = MOD_CLK / (2 * (cdr + 1))
++               * Wether we use the former or the latter is set through the
++               * DRS bit.
++               *
++               * First try CDR2, and if we can't reach the expected
++               * frequency, fall back to CDR1.
++               */
++              div_cdr1 = DIV_ROUND_UP(mclk_rate, tfr->speed_hz);
++              div_cdr2 = DIV_ROUND_UP(div_cdr1, 2);
++              if (div_cdr2 <= (SUN6I_CLK_CTL_CDR2_MASK + 1)) {
++                      reg = SUN6I_CLK_CTL_CDR2(div_cdr2 - 1) | SUN6I_CLK_CTL_DRS;
++                      tfr->effective_speed_hz = mclk_rate / (2 * div_cdr2);
++              } else {
++                      div = min(SUN6I_CLK_CTL_CDR1_MASK, order_base_2(div_cdr1));
++                      reg = SUN6I_CLK_CTL_CDR1(div);
++                      tfr->effective_speed_hz = mclk_rate / (1 << div);
++              }
++
++              sun6i_spi_write(sspi, SUN6I_CLK_CTL_REG, reg);
+       } else {
+-              div = min(SUN6I_CLK_CTL_CDR1_MASK, order_base_2(div_cdr1));
+-              reg = SUN6I_CLK_CTL_CDR1(div);
+-              tfr->effective_speed_hz = mclk_rate / (1 << div);
++              clk_set_rate(sspi->mclk, tfr->speed_hz);
++              tfr->effective_speed_hz = clk_get_rate(sspi->mclk);
++
++              /*
++               * Configure work mode.
++               *
++               * There are three work modes depending on the controller clock
++               * frequency:
++               * - normal sample mode           : CLK <= 24MHz SDM=1 SDC=0
++               * - delay half-cycle sample mode : CLK <= 40MHz SDM=0 SDC=0
++               * - delay one-cycle sample mode  : CLK >= 80MHz SDM=0 SDC=1
++               */
++              reg = sun6i_spi_read(sspi, SUN6I_TFR_CTL_REG);
++              reg &= ~(SUN6I_TFR_CTL_SDM | SUN6I_TFR_CTL_SDC);
++
++              if (tfr->effective_speed_hz <= 24000000)
++                      reg |= SUN6I_TFR_CTL_SDM;
++              else if (tfr->effective_speed_hz >= 80000000)
++                      reg |= SUN6I_TFR_CTL_SDC;
++
++              sun6i_spi_write(sspi, SUN6I_TFR_CTL_REG, reg);
+       }
+-      sun6i_spi_write(sspi, SUN6I_CLK_CTL_REG, reg);
+       /* Finally enable the bus - doing so before might raise SCK to HIGH */
+       reg = sun6i_spi_read(sspi, SUN6I_GBL_CTL_REG);
+       reg |= SUN6I_GBL_CTL_BUS_ENABLE;
+@@ -701,10 +730,12 @@ static void sun6i_spi_remove(struct platform_device *pdev)
+ static const struct sun6i_spi_cfg sun6i_a31_spi_cfg = {
+       .fifo_depth     = SUN6I_FIFO_DEPTH,
++      .has_clk_ctl    = true,
+ };
+ static const struct sun6i_spi_cfg sun8i_h3_spi_cfg = {
+       .fifo_depth     = SUN8I_FIFO_DEPTH,
++      .has_clk_ctl    = true,
+ };
+ static const struct of_device_id sun6i_spi_match[] = {
+
+From patchwork Sun May  7 15:03:36 2023
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Maksim Kiselev <bigunclemax@gmail.com>
+X-Patchwork-Id: 13233754
+Return-Path: 
+ <linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org>
+X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
+       aws-us-west-2-korg-lkml-1.web.codeaurora.org
+Received: from bombadil.infradead.org (bombadil.infradead.org
+ [198.137.202.133])
+       (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+       (No client certificate requested)
+       by smtp.lore.kernel.org (Postfix) with ESMTPS id 484B7C77B7D
+       for <linux-arm-kernel@archiver.kernel.org>;
+ Sun,  7 May 2023 15:06:48 +0000 (UTC)
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
+       d=lists.infradead.org; s=bombadil.20210309; h=Sender:
+       Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:
+       List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:
+       Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:
+       Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
+       List-Owner; bh=a73XJllrLUOW4rijVf4fPmhYJpTUVZeSw5fTKVSanU4=; b=kDrF8HUxOfoy3o
+       Hir1aXaJQFV+liAkSxezLFqhbZuklooiL04EmJ/IAyKZJU60fszK9IHeDuRFTkVwdAqKWu0ZX/E7Q
+       89yRm3W4Q+E6mVAlF16WLQcjCqfjp35alUrhW4RndhfBR5qvq+ypb4awECg1Z4plh5I3BMvR92uat
+       B7pqcVE7ij17ngZHXPMjfH5EexSHPW6JnR5G9XwEiUxouksDDrId1vWpMMrMHmjNSQ/uMaP9MDTPm
+       hsYdSoejLs4t1Ju48uvt2bjFc0PNjef0AV0QuF9gmTJBmsXmjtcfJSiz4g82Crn7SVGXb9tyzOoPR
+       h7bO7xtY3OAtPxz05IUQ==;
+Received: from localhost ([::1] helo=bombadil.infradead.org)
+       by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux))
+       id 1pvfxZ-00GFU7-2p;
+       Sun, 07 May 2023 15:06:01 +0000
+Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d])
+       by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux))
+       id 1pvfxX-00GFS1-0o;
+       Sun, 07 May 2023 15:06:00 +0000
+Received: by mail-wr1-x42d.google.com with SMTP id
+ ffacd0b85a97d-304935cc79bso3402350f8f.2;
+        Sun, 07 May 2023 08:05:58 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=gmail.com; s=20221208; t=1683471957; x=1686063957;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
+         :message-id:reply-to;
+        bh=J7busPrq4Ix2D0XVL7/yDg+1KY42O5SIQ2uX5rrJTys=;
+        b=WJviFBiRpKKdvo1AbdVorv1k0LHGOVJgpFX4nC2Bi+cMQlqBqyIvX4pWyPQ9zWDuU5
+         bCfrjfVXnvCwV1yFR20U13u10aFZqJIv1e8E7idIxkNWP+oP3RPNIeZDFxbywq0ALqFO
+         XccX3TebqOKg04UsHzW12VyT9FdtC2x1cMNTeSzFW4ZAuu2UoRb32QFv4/E/DPmO6lbv
+         g/mm3cYM97lkrjN0F3nIQN1/SCU15/Uqc0p9v+SzQevYcmUwiNGJmVdmmS01sL/q4rx2
+         RxVFvOiun6xporcGtN8DaG7QRxYfkpA4E3SAEtvDkSTBsC7FHXxQbtrJSfND19PilENn
+         lkDg==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=1e100.net; s=20221208; t=1683471957; x=1686063957;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
+         :subject:date:message-id:reply-to;
+        bh=J7busPrq4Ix2D0XVL7/yDg+1KY42O5SIQ2uX5rrJTys=;
+        b=WqvgDjpcA91ldrky7UWljG1hhmqc0qOtk5coFWl2/ItQ6eid3tnyItQwQKiQ57/r4d
+         bSwdE72WNBDjmWiYw+vhOYgtZhfNqfc9tfZ+ru4CmxzIYEfXP7JgHWXbzFocoQM9ZLkc
+         TJExOhAzbZIWpLWM4BdpaBleUrbagNi7s2tL5NF+9nyd7VH9ndsyyiyQddnvyQ2GLWls
+         MUdLVbT9JPqNfWnpeVN6CMzczDljR0o4AxazeVqSFBZ793eyu1xsUKUGikpfcT2BBkfX
+         K8ecV1qGJWMN9gdjd86896ZvnFZ+comRnQ09KfGqvL4hEuEDt9H7P77bKOsUVSSc/yPc
+         JxvA==
+X-Gm-Message-State: AC+VfDyzqBw7qeraHTjWVGMDgj4YtUnBCMGVwMn3y3ONg4dtYAm370a1
+       1bJeCbQ0QOZn/HqyO6DGjAE=
+X-Google-Smtp-Source: 
+ ACHHUZ6Tgq00goUGd6cc5bfJap5ngrn1ZPs4mrdlVseReHkslpgNcCs6pqxjKm3kGw5VrEUK/xif5w==
+X-Received: by 2002:adf:f84b:0:b0:307:8b6f:dcff with SMTP id
+ d11-20020adff84b000000b003078b6fdcffmr2923274wrq.37.1683471957047;
+        Sun, 07 May 2023 08:05:57 -0700 (PDT)
+Received: from localhost.localdomain ([176.221.215.212])
+        by smtp.gmail.com with ESMTPSA id
+ e15-20020a5d594f000000b0030771c6e443sm8437998wri.42.2023.05.07.08.05.54
+        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
+        Sun, 07 May 2023 08:05:56 -0700 (PDT)
+From: Maksim Kiselev <bigunclemax@gmail.com>
+To: Andre Przywara <andre.przywara@arm.com>
+Cc: Icenowy Zheng <icenowy@aosc.io>,
+       Maksim Kiselev <bigunclemax@gmail.com>,
+       Mark Brown <broonie@kernel.org>,
+       Rob Herring <robh+dt@kernel.org>,
+       Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
+       Conor Dooley <conor+dt@kernel.org>,
+       Chen-Yu Tsai <wens@csie.org>,
+       Jernej Skrabec <jernej.skrabec@gmail.com>,
+       Samuel Holland <samuel@sholland.org>,
+       Paul Walmsley <paul.walmsley@sifive.com>,
+       Palmer Dabbelt <palmer@dabbelt.com>,
+       Albert Ou <aou@eecs.berkeley.edu>,
+       Cristian Ciocaltea <cristian.ciocaltea@collabora.com>,
+       Maxime Ripard <mripard@kernel.org>,
+       linux-spi@vger.kernel.org,
+       devicetree@vger.kernel.org,
+       linux-arm-kernel@lists.infradead.org,
+       linux-sunxi@lists.linux.dev,
+       linux-kernel@vger.kernel.org,
+       linux-riscv@lists.infradead.org
+Subject: [PATCH v4 4/5] spi: sun6i: add support for R329/D1/R528/T113s SPI
+ controllers
+Date: Sun,  7 May 2023 18:03:36 +0300
+Message-Id: <20230507150345.1971083-5-bigunclemax@gmail.com>
+X-Mailer: git-send-email 2.39.2
+In-Reply-To: <20230507150345.1971083-1-bigunclemax@gmail.com>
+References: <20230507150345.1971083-1-bigunclemax@gmail.com>
+MIME-Version: 1.0
+X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 
+X-CRM114-CacheID: sfid-20230507_080559_286588_45304FB6 
+X-CRM114-Status: GOOD (  13.27  )
+X-BeenThere: linux-arm-kernel@lists.infradead.org
+X-Mailman-Version: 2.1.34
+Precedence: list
+List-Id: <linux-arm-kernel.lists.infradead.org>
+List-Unsubscribe: 
+ <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
+List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
+List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
+List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
+List-Subscribe: 
+ <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
+Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
+Errors-To: 
+ linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org
+
+These SoCs has two SPI controllers. One of it is quite similar to previous
+ones, but with internal clock divider removed; the other added MIPI DBI
+Type-C offload based on the first one.
+
+Add basical support for these controllers. As we're not going to
+support the DBI functionality now, just implement the two kinds of
+controllers as the same.
+
+Co-developed-by: Icenowy Zheng <icenowy@aosc.io>
+Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
+Reviewed-by: Andre Przywara <andre.przywara@arm.com>
+---
+ drivers/spi/spi-sun6i.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c
+index e4efab310469..02a3a4f2b3a0 100644
+--- a/drivers/spi/spi-sun6i.c
++++ b/drivers/spi/spi-sun6i.c
+@@ -738,9 +738,17 @@ static const struct sun6i_spi_cfg sun8i_h3_spi_cfg = {
+       .has_clk_ctl    = true,
+ };
++static const struct sun6i_spi_cfg sun50i_r329_spi_cfg = {
++      .fifo_depth     = SUN8I_FIFO_DEPTH,
++};
++
+ static const struct of_device_id sun6i_spi_match[] = {
+       { .compatible = "allwinner,sun6i-a31-spi", .data = &sun6i_a31_spi_cfg },
+       { .compatible = "allwinner,sun8i-h3-spi",  .data = &sun8i_h3_spi_cfg },
++      {
++              .compatible = "allwinner,sun50i-r329-spi",
++              .data = &sun50i_r329_spi_cfg
++      },
+       {}
+ };
+ MODULE_DEVICE_TABLE(of, sun6i_spi_match);
+
+From patchwork Sun May  7 15:03:37 2023
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Maksim Kiselev <bigunclemax@gmail.com>
+X-Patchwork-Id: 13233755
+Return-Path: 
+ <linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org>
+X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
+       aws-us-west-2-korg-lkml-1.web.codeaurora.org
+Received: from bombadil.infradead.org (bombadil.infradead.org
+ [198.137.202.133])
+       (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+       (No client certificate requested)
+       by smtp.lore.kernel.org (Postfix) with ESMTPS id AB7B8C77B7C
+       for <linux-arm-kernel@archiver.kernel.org>;
+ Sun,  7 May 2023 15:07:01 +0000 (UTC)
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
+       d=lists.infradead.org; s=bombadil.20210309; h=Sender:
+       Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:
+       List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:
+       Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:
+       Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
+       List-Owner; bh=aZK9MbdU8Ro8SVvxfLbvm2Qo28To8u6QmYay5g1X9oI=; b=s4ZFmKjTMbZFV/
+       9DyV34vGplIhNa5qw6XX5MTI3EgwqEPbQyijK4g2KYLR1eJT+NOkr32XrKPgeN8R4aXgsMC4Od38w
+       24GVYArYwlEMBEAG2dYRlRlgABLh2qLfqKXJ7s19jW2cjBONYPKKpxH+fv6hdWjvXIy1vjwX9W6J+
+       2l20MLFcZc9O9rxW2E49MaYbR6fH/CRH2CjrznGy61kyFz5BbiG4HqD0lG6ZhNJxa3667U86TLNmN
+       ambWScHn8XxVBF1Lq6FqNw5fFLprdPOSPSVM/csn/i/P0Ef5RWiUPBzXSdPqxif9leBvRHaBYuFZU
+       4waLLPKUhES6nGbyR8OA==;
+Received: from localhost ([::1] helo=bombadil.infradead.org)
+       by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux))
+       id 1pvfxl-00GFax-0n;
+       Sun, 07 May 2023 15:06:13 +0000
+Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432])
+       by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux))
+       id 1pvfxg-00GFXR-2R;
+       Sun, 07 May 2023 15:06:11 +0000
+Received: by mail-wr1-x432.google.com with SMTP id
+ ffacd0b85a97d-3063b5f32aaso2269111f8f.2;
+        Sun, 07 May 2023 08:06:08 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=gmail.com; s=20221208; t=1683471967; x=1686063967;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
+         :message-id:reply-to;
+        bh=Ziv+62Y+GAylpM/ibpSxQKGKhNzMiq6MRDwumNWDsYk=;
+        b=sRTmU8JbDncgX6NXneNlIuiUj6m6ACDXUTCTvC8rFEGY/QPS4SM8iQwXH/DSfPKc/K
+         JQYtiAT+eOKtjCqorW6x+aQpfPEPIDq9FZiSVgNPkymU+XzUMkNki17jRHfHPQjfltWE
+         2FrvxzITEUZo/8nOnTmTxLc+Ghh0dXdKALZR7E1GyEXJkQVGQe3F34+mvWpeeTaJ0B4i
+         2DFcnEvEvVCBtSNWKA6EX2ZcrwFdlV32CV4Ij7HVvJEqIm5pvWDQ/LluaNxstTTMWYhO
+         EgM7gNmxO2KFZBqBlHKhjmyvL2I6mYn/95rj85cljFIjkqIbRYV091+oNPDqRiPMFq2v
+         CTrA==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=1e100.net; s=20221208; t=1683471967; x=1686063967;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
+         :subject:date:message-id:reply-to;
+        bh=Ziv+62Y+GAylpM/ibpSxQKGKhNzMiq6MRDwumNWDsYk=;
+        b=aUqHc2DggZqG0BkMApaYEJkyUBQbON37sgbZeGHtDREWwUUP5W9q5LLdSkUksYpDM6
+         FfqT2Qe+RV+XBHqNsOtE/N3XH6M/uLzIucNZv1/T1HuzQ0gWge6AvWT6Fk0zIJ0TD7rh
+         LMVoKGFf/oMEjvX5REMsa82Mtrn+z9ZWTzqCJNjeCP0jyCda191Iup5vKKLf86AnB9au
+         GwpSIBb+AUTp1KQz9HuGeyqXN4D5MFUEbJr/MF4yG9P26yMSJQcHejvEhLEsn3KZvl5x
+         UaG2PXr/mWAJmU5mo2uNaadLjyZylpKXtgld83RtogMJLpk1gzblm15c61Cr7d8ORBwU
+         UsMw==
+X-Gm-Message-State: AC+VfDxXHP3GtlVdE/pQhLCVReFpJj+75kDfwNZIPMv1W/mc4SlcXZxG
+       M+muLWyebNGRcJGb589VIaw=
+X-Google-Smtp-Source: 
+ ACHHUZ6j8yqhFjZ0rqUBjPV5gzZfUrJxy8WXKvBq6Dbeit0CPEpd8ylflGfJYynkyLbuiKrRSZ46TA==
+X-Received: by 2002:adf:e341:0:b0:307:5097:ab60 with SMTP id
+ n1-20020adfe341000000b003075097ab60mr5133166wrj.63.1683471966755;
+        Sun, 07 May 2023 08:06:06 -0700 (PDT)
+Received: from localhost.localdomain ([176.221.215.212])
+        by smtp.gmail.com with ESMTPSA id
+ e15-20020a5d594f000000b0030771c6e443sm8437998wri.42.2023.05.07.08.06.04
+        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
+        Sun, 07 May 2023 08:06:06 -0700 (PDT)
+From: Maksim Kiselev <bigunclemax@gmail.com>
+To: Andre Przywara <andre.przywara@arm.com>
+Cc: Icenowy Zheng <icenowy@aosc.io>,
+       Maksim Kiselev <bigunclemax@gmail.com>,
+       Conor Dooley <conor.dooley@microchip.com>,
+       Mark Brown <broonie@kernel.org>,
+       Rob Herring <robh+dt@kernel.org>,
+       Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
+       Conor Dooley <conor+dt@kernel.org>,
+       Chen-Yu Tsai <wens@csie.org>,
+       Jernej Skrabec <jernej.skrabec@gmail.com>,
+       Samuel Holland <samuel@sholland.org>,
+       Paul Walmsley <paul.walmsley@sifive.com>,
+       Palmer Dabbelt <palmer@dabbelt.com>,
+       Albert Ou <aou@eecs.berkeley.edu>,
+       Cristian Ciocaltea <cristian.ciocaltea@collabora.com>,
+       Maxime Ripard <mripard@kernel.org>,
+       linux-spi@vger.kernel.org,
+       devicetree@vger.kernel.org,
+       linux-arm-kernel@lists.infradead.org,
+       linux-sunxi@lists.linux.dev,
+       linux-kernel@vger.kernel.org,
+       linux-riscv@lists.infradead.org
+Subject: [PATCH v4 5/5] riscv: dts: allwinner: d1: Add SPI controllers node
+Date: Sun,  7 May 2023 18:03:37 +0300
+Message-Id: <20230507150345.1971083-6-bigunclemax@gmail.com>
+X-Mailer: git-send-email 2.39.2
+In-Reply-To: <20230507150345.1971083-1-bigunclemax@gmail.com>
+References: <20230507150345.1971083-1-bigunclemax@gmail.com>
+MIME-Version: 1.0
+X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 
+X-CRM114-CacheID: sfid-20230507_080608_791513_7049B44B 
+X-CRM114-Status: GOOD (  11.70  )
+X-BeenThere: linux-arm-kernel@lists.infradead.org
+X-Mailman-Version: 2.1.34
+Precedence: list
+List-Id: <linux-arm-kernel.lists.infradead.org>
+List-Unsubscribe: 
+ <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
+List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
+List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
+List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
+List-Subscribe: 
+ <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
+Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
+Errors-To: 
+ linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org
+
+Some boards form the MangoPi family (MQ\MQ-Dual\MQ-R) may have
+an optional SPI flash that connects to the SPI0 controller.
+
+This controller is the same for R329/D1/R528/T113s SoCs and
+should be supported by the sun50i-r329-spi driver.
+
+So let's add its DT nodes.
+
+Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
+Acked-by: Conor Dooley <conor.dooley@microchip.com>
+Reviewed-by: Andre Przywara <andre.przywara@arm.com>
+---
+ .../boot/dts/allwinner/sunxi-d1s-t113.dtsi    | 37 +++++++++++++++++++
+ 1 file changed, 37 insertions(+)
+
+diff --git a/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi b/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
+index 922e8e0e2c09..1bb1e5cae602 100644
+--- a/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
++++ b/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
+@@ -108,6 +108,12 @@ rmii_pe_pins: rmii-pe-pins {
+                               function = "emac";
+                       };
++                      /omit-if-no-ref/
++                      spi0_pins: spi0-pins {
++                              pins = "PC2", "PC3", "PC4", "PC5";
++                              function = "spi0";
++                      };
++
+                       /omit-if-no-ref/
+                       uart1_pg6_pins: uart1-pg6-pins {
+                               pins = "PG6", "PG7";
+@@ -447,6 +453,37 @@ mmc2: mmc@4022000 {
+                       #size-cells = <0>;
+               };
++              spi0: spi@4025000 {
++                      compatible = "allwinner,sun20i-d1-spi",
++                                   "allwinner,sun50i-r329-spi";
++                      reg = <0x04025000 0x1000>;
++                      interrupts = <SOC_PERIPHERAL_IRQ(15) IRQ_TYPE_LEVEL_HIGH>;
++                      clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
++                      clock-names = "ahb", "mod";
++                      dmas = <&dma 22>, <&dma 22>;
++                      dma-names = "rx", "tx";
++                      resets = <&ccu RST_BUS_SPI0>;
++                      status = "disabled";
++                      #address-cells = <1>;
++                      #size-cells = <0>;
++              };
++
++              spi1: spi@4026000 {
++                      compatible = "allwinner,sun20i-d1-spi-dbi",
++                                   "allwinner,sun50i-r329-spi-dbi",
++                                   "allwinner,sun50i-r329-spi";
++                      reg = <0x04026000 0x1000>;
++                      interrupts = <SOC_PERIPHERAL_IRQ(16) IRQ_TYPE_LEVEL_HIGH>;
++                      clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
++                      clock-names = "ahb", "mod";
++                      dmas = <&dma 23>, <&dma 23>;
++                      dma-names = "rx", "tx";
++                      resets = <&ccu RST_BUS_SPI1>;
++                      status = "disabled";
++                      #address-cells = <1>;
++                      #size-cells = <0>;
++              };
++
+               usb_otg: usb@4100000 {
+                       compatible = "allwinner,sun20i-d1-musb",
+                                    "allwinner,sun8i-a33-musb";
diff --git a/target/linux/sunxi/patches-6.1/0007-2-add-QSPI-support-for-T113.patch b/target/linux/sunxi/patches-6.1/0007-2-add-QSPI-support-for-T113.patch
new file mode 100644 (file)
index 0000000..0d27eab
--- /dev/null
@@ -0,0 +1,503 @@
+From patchwork Sat Jun 24 13:16:22 2023
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Maksim Kiselev <bigunclemax@gmail.com>
+X-Patchwork-Id: 13291661
+Return-Path: 
+ <linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org>
+X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
+       aws-us-west-2-korg-lkml-1.web.codeaurora.org
+Received: from bombadil.infradead.org (bombadil.infradead.org
+ [198.137.202.133])
+       (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+       (No client certificate requested)
+       by smtp.lore.kernel.org (Postfix) with ESMTPS id 4B868EB64DA
+       for <linux-arm-kernel@archiver.kernel.org>;
+ Sat, 24 Jun 2023 13:17:29 +0000 (UTC)
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
+       d=lists.infradead.org; s=bombadil.20210309; h=Sender:
+       Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:
+       List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:
+       Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:
+       Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
+       List-Owner; bh=DJXIEA1+lZ5sCiqL4N5gfZNhhBc0XzL1xww7HtIwD2g=; b=fx6C4D34hEj0ay
+       l7AqupjSVdDkZMbDkdNhfGvBXdnx77cG45cvVZ/X3OS5oxUOnEEe5vVKdFgGQDto3rUh2eotth4Qs
+       tTJ78oAq9nT9unyZiBOHyYMb6/MTPZkd8+ijWg1f+iaSj9W24PGqJKALvYGIx1JwscS08KyIXmLmC
+       GpBnrmjivvsldMUGWlFVr4wDU/aONadoTqvJntrZeORFpqjh2faHqS5GQQcuaO+Bb+hmQCR0NKMyx
+       WiJt13Ye60fwZkAZj8h5tk5oPjN7GhvsTUdEZYiYtGf+odwBxT2aQKaNUcyxoeDc6vUWlotv4u/RN
+       Dy5qJqdTJDZVs8h9OW1w==;
+Received: from localhost ([::1] helo=bombadil.infradead.org)
+       by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux))
+       id 1qD38U-0061EU-3A;
+       Sat, 24 Jun 2023 13:17:06 +0000
+Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334])
+       by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux))
+       id 1qD38Q-0061DM-1Y;
+       Sat, 24 Jun 2023 13:17:03 +0000
+Received: by mail-wm1-x334.google.com with SMTP id
+ 5b1f17b1804b1-3fa7eb35a13so12711935e9.0;
+        Sat, 24 Jun 2023 06:17:02 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=gmail.com; s=20221208; t=1687612621; x=1690204621;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
+         :message-id:reply-to;
+        bh=x4HOHpTuxkhDI1uIn7GRBULu0rY5eOvyg0W/1k8C9T4=;
+        b=rUrqWapO4pYhvePnS7Vq1czHnSJ9zPSgqsffqLURJUNHIlAZ8ys2Si7q8pQzxZ74tt
+         FBZszCa8TucARVI8q8sZ9Avu+4Lj6Ctpu46rODvpVqB85qOYaTwYqiX6LQlZb+GFLdXi
+         nW9isyDNnVfiAdioaHD73UdoRS6Hzlo3qFVh2wPjkV/LjRolMt26XqzDM9xRpUkXeV0P
+         a1D+kktEkyFfedDfIJFTLbpXVq1Sv/peqNNlFZGEGDc1PsG8gDz5zzBWi5Q2u+8RNkf7
+         /m2w4STUaHct/MJ2jp2F/Xb8cf5To/tikiCVX745Mml/Wtkd+V3xnDjwHz4NJZWDiild
+         GNgA==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=1e100.net; s=20221208; t=1687612621; x=1690204621;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
+         :subject:date:message-id:reply-to;
+        bh=x4HOHpTuxkhDI1uIn7GRBULu0rY5eOvyg0W/1k8C9T4=;
+        b=LL/jIWk9jLErJVXlbW+H/XxUiVsunve4WdS79OQSTHvQ0oDDjOz8rb4Vyhq/9NG/cj
+         DPiyHtga3NUYtYAcnKUZRkRzJrB+/apibLtanR8/0SE/YucnUXVvsuERUjlkB1614amw
+         zvp16e8SDHfnWceRZ/WJ8yfC/6WO4/WuNt0gfoM0I9sVIZBGzyw2LpBXYN3WCVI0O0bg
+         bU+A4cMfR1z2zveXQ+oXsX/YI2WZwGgH2KW0GhmbA9Mk7GvyamGeQI9SHgkROgtzZ7+U
+         13vsM3rmq2g2Xh4VZukRIEPdAoqPuesfBt9a1qI1+8fVOkIr4Q5BfYsMAiBX8FLlRv8f
+         b39A==
+X-Gm-Message-State: AC+VfDwoHPXe+lkxSvu40v5sngRQyNpffDPFDYJQV05pnrGWlf9OBDrD
+       ZWTlDiAc6eGiLm5HGSw/INM=
+X-Google-Smtp-Source: 
+ ACHHUZ7xACTfdartW6THNtoCrYALyLgEq0fwWG5cJD775ZZVWt6/8PJrOTn9k1ZPAJRW/uUOUStIWQ==
+X-Received: by 2002:a1c:f70a:0:b0:3f7:34dc:ed0d with SMTP id
+ v10-20020a1cf70a000000b003f734dced0dmr16795214wmh.25.1687612620714;
+        Sat, 24 Jun 2023 06:17:00 -0700 (PDT)
+Received: from user-PC.. ([92.51.95.194])
+        by smtp.gmail.com with ESMTPSA id
+ l1-20020a1ced01000000b003f9b0830107sm5107428wmh.41.2023.06.24.06.16.58
+        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
+        Sat, 24 Jun 2023 06:17:00 -0700 (PDT)
+From: Maksim Kiselev <bigunclemax@gmail.com>
+To: linux-spi@vger.kernel.org
+Cc: Maksim Kiselev <bigunclemax@gmail.com>,
+       Rob Herring <robh+dt@kernel.org>,
+       Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
+       Conor Dooley <conor+dt@kernel.org>,
+       Chen-Yu Tsai <wens@csie.org>,
+       Jernej Skrabec <jernej.skrabec@gmail.com>,
+       Samuel Holland <samuel@sholland.org>,
+       Paul Walmsley <paul.walmsley@sifive.com>,
+       Palmer Dabbelt <palmer@dabbelt.com>,
+       Albert Ou <aou@eecs.berkeley.edu>,
+       Mark Brown <broonie@kernel.org>,
+       Andre Przywara <andre.przywara@arm.com>,
+       Cristian Ciocaltea <cristian.ciocaltea@collabora.com>,
+       devicetree@vger.kernel.org,
+       linux-arm-kernel@lists.infradead.org,
+       linux-sunxi@lists.linux.dev,
+       linux-riscv@lists.infradead.org,
+       linux-kernel@vger.kernel.org
+Subject: [PATCH v1 1/3] spi: sun6i: add quirk for dual and quad SPI modes
+ support
+Date: Sat, 24 Jun 2023 16:16:22 +0300
+Message-Id: <20230624131632.2972546-2-bigunclemax@gmail.com>
+X-Mailer: git-send-email 2.39.2
+In-Reply-To: <20230624131632.2972546-1-bigunclemax@gmail.com>
+References: <20230624131632.2972546-1-bigunclemax@gmail.com>
+MIME-Version: 1.0
+X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 
+X-CRM114-CacheID: sfid-20230624_061702_523336_D90BF7D0 
+X-CRM114-Status: GOOD (  15.88  )
+X-BeenThere: linux-arm-kernel@lists.infradead.org
+X-Mailman-Version: 2.1.34
+Precedence: list
+List-Id: <linux-arm-kernel.lists.infradead.org>
+List-Unsubscribe: 
+ <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
+List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
+List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
+List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
+List-Subscribe: 
+ <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
+Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
+Errors-To: 
+ linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org
+
+New Allwinner's SPI controllers can support dual and quad SPI modes.
+To enable one of these modes, we should set the corresponding bit in
+the SUN6I_BURST_CTL_CNT_REG register. DRM (28 bits) for dual mode and
+Quad_EN (29 bits) for quad transmission.
+
+Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
+---
+ drivers/spi/spi-sun6i.c | 29 +++++++++++++++++++++++++----
+ 1 file changed, 25 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c
+index 30d541612253..cec2747235ab 100644
+--- a/drivers/spi/spi-sun6i.c
++++ b/drivers/spi/spi-sun6i.c
+@@ -83,6 +83,9 @@
+ #define SUN6I_XMIT_CNT_REG            0x34
+ #define SUN6I_BURST_CTL_CNT_REG               0x38
++#define SUN6I_BURST_CTL_CNT_STC_MASK          GENMASK(23, 0)
++#define SUN6I_BURST_CTL_CNT_DRM                       BIT(28)
++#define SUN6I_BURST_CTL_CNT_QUAD_EN           BIT(29)
+ #define SUN6I_TXDATA_REG              0x200
+ #define SUN6I_RXDATA_REG              0x300
+@@ -90,6 +93,7 @@
+ struct sun6i_spi_cfg {
+       unsigned long           fifo_depth;
+       bool                    has_clk_ctl;
++      u32                     mode_bits;
+ };
+ struct sun6i_spi {
+@@ -266,7 +270,7 @@ static int sun6i_spi_transfer_one(struct spi_master *master,
+       unsigned int div, div_cdr1, div_cdr2, timeout;
+       unsigned int start, end, tx_time;
+       unsigned int trig_level;
+-      unsigned int tx_len = 0, rx_len = 0;
++      unsigned int tx_len = 0, rx_len = 0, nbits = 0;
+       bool use_dma;
+       int ret = 0;
+       u32 reg;
+@@ -418,13 +422,29 @@ static int sun6i_spi_transfer_one(struct spi_master *master,
+       sun6i_spi_write(sspi, SUN6I_GBL_CTL_REG, reg);
+       /* Setup the transfer now... */
+-      if (sspi->tx_buf)
++      if (sspi->tx_buf) {
+               tx_len = tfr->len;
++              nbits = tfr->tx_nbits;
++      } else if (tfr->rx_buf) {
++              nbits = tfr->rx_nbits;
++      }
++
++      switch (nbits) {
++      case SPI_NBITS_DUAL:
++              reg = SUN6I_BURST_CTL_CNT_DRM;
++              break;
++      case SPI_NBITS_QUAD:
++              reg = SUN6I_BURST_CTL_CNT_QUAD_EN;
++              break;
++      case SPI_NBITS_SINGLE:
++      default:
++              reg = FIELD_PREP(SUN6I_BURST_CTL_CNT_STC_MASK, tx_len);
++      }
+       /* Setup the counters */
++      sun6i_spi_write(sspi, SUN6I_BURST_CTL_CNT_REG, reg);
+       sun6i_spi_write(sspi, SUN6I_BURST_CNT_REG, tfr->len);
+       sun6i_spi_write(sspi, SUN6I_XMIT_CNT_REG, tx_len);
+-      sun6i_spi_write(sspi, SUN6I_BURST_CTL_CNT_REG, tx_len);
+       if (!use_dma) {
+               /* Fill the TX FIFO */
+@@ -623,7 +643,8 @@ static int sun6i_spi_probe(struct platform_device *pdev)
+       master->set_cs = sun6i_spi_set_cs;
+       master->transfer_one = sun6i_spi_transfer_one;
+       master->num_chipselect = 4;
+-      master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LSB_FIRST;
++      master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LSB_FIRST |
++                          sspi->cfg->mode_bits;
+       master->bits_per_word_mask = SPI_BPW_MASK(8);
+       master->dev.of_node = pdev->dev.of_node;
+       master->auto_runtime_pm = true;
+
+From patchwork Sat Jun 24 13:16:23 2023
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Maksim Kiselev <bigunclemax@gmail.com>
+X-Patchwork-Id: 13291662
+Return-Path: 
+ <linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org>
+X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
+       aws-us-west-2-korg-lkml-1.web.codeaurora.org
+Received: from bombadil.infradead.org (bombadil.infradead.org
+ [198.137.202.133])
+       (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+       (No client certificate requested)
+       by smtp.lore.kernel.org (Postfix) with ESMTPS id 387B7EB64DA
+       for <linux-arm-kernel@archiver.kernel.org>;
+ Sat, 24 Jun 2023 13:17:43 +0000 (UTC)
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
+       d=lists.infradead.org; s=bombadil.20210309; h=Sender:
+       Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:
+       List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:
+       Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:
+       Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
+       List-Owner; bh=2JgZSgQOojMStHAV3c/boeEjxmKnqZ9Z9c52+kf0tfM=; b=bSBiTmHqutNL9Y
+       0j9RKar7XtE7s24GuLbkmD3H14d2VxL5ph93b6/3m71/OfbVbaqfvy7Ouocv8dhfLM57OpGDdLwBR
+       NyR/JBJO5duATpwAOYTNPX3nQwyncikwMUkhfjcEPzWDujInppefruTfy+XP7m2BmWrzmV9ltQBF3
+       rIoIjJGa3FzdVTiFQiPB3tGUWMYRHs2maxCQSEHH/YTE+2y8X5bcT5t58y45ZQZNEhWbrSuHdW8pT
+       TlYgz07qdJcD9XZx6pR+YVDvDvtCBXqhiW5mxJLcaj2fJcoCczyRXuVWP93rWaeuW96+3+WLDaX70
+       4udnlmt5qz/ntn0YuWOg==;
+Received: from localhost ([::1] helo=bombadil.infradead.org)
+       by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux))
+       id 1qD38d-0061H0-0p;
+       Sat, 24 Jun 2023 13:17:15 +0000
+Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331])
+       by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux))
+       id 1qD38X-0061F7-25;
+       Sat, 24 Jun 2023 13:17:10 +0000
+Received: by mail-wm1-x331.google.com with SMTP id
+ 5b1f17b1804b1-3f9ede60140so16104955e9.0;
+        Sat, 24 Jun 2023 06:17:09 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=gmail.com; s=20221208; t=1687612628; x=1690204628;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
+         :message-id:reply-to;
+        bh=Ou3Llv8LccPhD+lVAZHU8h+Zxb2u2iNeLld4FYbDCL0=;
+        b=NLvKfkmODJ7d2w3rY83obV0RROyfN4Jh/Ro2ode6/E4S4XFJcJXyjsKWYOfKOjhW8x
+         pXfDVb1124NzEtabZQXUHmqmWtNYgWGaVGNPllZkGE5e9Qn+qkGU7eWioQpl5vaOsZ7N
+         Q8ZYtWCThoTgD3Pe59L3yF347vv/gcUlsXuYOAWYxHfKlsOkwXuX5QZOVH0r+zxw9gdO
+         KLc8/kwi2EDUxxTByI218Q9nkxa5ZGzY/tG8ghv0iFz1ww4eA+OQVE3/j25Vw9ylv4II
+         okcXkALJkP8xoGaPVZv2Jpnkc9vV9qUAu5FGxTUI9tVQnNYRxcFmy2BQCIsiT605HwXJ
+         gZ5w==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=1e100.net; s=20221208; t=1687612628; x=1690204628;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
+         :subject:date:message-id:reply-to;
+        bh=Ou3Llv8LccPhD+lVAZHU8h+Zxb2u2iNeLld4FYbDCL0=;
+        b=f3kJ/lFrmaP9vLjdWRKBjPyA/c7gXc5L4Xj+O+idYizDj4VPFUviE1kzHnxm94jDrH
+         R4Z1kXXo0OKZ7+yLfrXOpxaOikv3CdNeZjz3GORgiCCrU6KLAJbOG9R74J/8rrq5sxta
+         BhtHXgF8WDUfVAeT8i51JPQihLoeANHWK8HqpKfkQ8iREzKj00gKIZV8Q9nwoNTxjseb
+         /QDB6xI4ORryUonNGcTI2R3wnCjr/9bMq6TVl8p+NNTspxXttzz57GlZxi3qby+Rfick
+         Lwb4FlWZ+7GVvidjbhjCondLE8aE8dwixsGHcl6dePR3LJ2M24JwH3FbfoD5jqCiRXqZ
+         nSuw==
+X-Gm-Message-State: AC+VfDz+4tdty1CkCVUwTEskeo3UlrsX/nynbNc+/MpqqxBplXs13u3Q
+       eEjy3Hn+Dm7F9U3SsXQc7ic=
+X-Google-Smtp-Source: 
+ ACHHUZ4vCWn1Kwx1tyQ9XpYEiYzeBd75zN/pheQbZRhsK9gz7NDagLNjcdUqx0JgxusaY+v6Bcuiuw==
+X-Received: by 2002:a1c:6a0a:0:b0:3f9:2c0:b58 with SMTP id
+ f10-20020a1c6a0a000000b003f902c00b58mr14937759wmc.4.1687612628018;
+        Sat, 24 Jun 2023 06:17:08 -0700 (PDT)
+Received: from user-PC.. ([92.51.95.194])
+        by smtp.gmail.com with ESMTPSA id
+ l1-20020a1ced01000000b003f9b0830107sm5107428wmh.41.2023.06.24.06.17.05
+        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
+        Sat, 24 Jun 2023 06:17:07 -0700 (PDT)
+From: Maksim Kiselev <bigunclemax@gmail.com>
+To: linux-spi@vger.kernel.org
+Cc: Maksim Kiselev <bigunclemax@gmail.com>,
+       Rob Herring <robh+dt@kernel.org>,
+       Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
+       Conor Dooley <conor+dt@kernel.org>,
+       Chen-Yu Tsai <wens@csie.org>,
+       Jernej Skrabec <jernej.skrabec@gmail.com>,
+       Samuel Holland <samuel@sholland.org>,
+       Paul Walmsley <paul.walmsley@sifive.com>,
+       Palmer Dabbelt <palmer@dabbelt.com>,
+       Albert Ou <aou@eecs.berkeley.edu>,
+       Mark Brown <broonie@kernel.org>,
+       Andre Przywara <andre.przywara@arm.com>,
+       Cristian Ciocaltea <cristian.ciocaltea@collabora.com>,
+       devicetree@vger.kernel.org,
+       linux-arm-kernel@lists.infradead.org,
+       linux-sunxi@lists.linux.dev,
+       linux-riscv@lists.infradead.org,
+       linux-kernel@vger.kernel.org
+Subject: [PATCH v1 2/3] spi: sun6i: add dual and quad SPI modes support for
+ R329/D1/R528/T113s
+Date: Sat, 24 Jun 2023 16:16:23 +0300
+Message-Id: <20230624131632.2972546-3-bigunclemax@gmail.com>
+X-Mailer: git-send-email 2.39.2
+In-Reply-To: <20230624131632.2972546-1-bigunclemax@gmail.com>
+References: <20230624131632.2972546-1-bigunclemax@gmail.com>
+MIME-Version: 1.0
+X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 
+X-CRM114-CacheID: sfid-20230624_061709_684495_6B5DB036 
+X-CRM114-Status: GOOD (  10.30  )
+X-BeenThere: linux-arm-kernel@lists.infradead.org
+X-Mailman-Version: 2.1.34
+Precedence: list
+List-Id: <linux-arm-kernel.lists.infradead.org>
+List-Unsubscribe: 
+ <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
+List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
+List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
+List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
+List-Subscribe: 
+ <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
+Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
+Errors-To: 
+ linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org
+
+Listed SoCs have SPI controllers that can operate in dual or quad modes.
+This patch adds dual/quad mode bits for spi_master on these SoCS.
+
+Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
+---
+ drivers/spi/spi-sun6i.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c
+index cec2747235ab..e9144d76bcdb 100644
+--- a/drivers/spi/spi-sun6i.c
++++ b/drivers/spi/spi-sun6i.c
+@@ -761,6 +761,7 @@ static const struct sun6i_spi_cfg sun8i_h3_spi_cfg = {
+ static const struct sun6i_spi_cfg sun50i_r329_spi_cfg = {
+       .fifo_depth     = SUN8I_FIFO_DEPTH,
++      .mode_bits      = SPI_RX_DUAL | SPI_TX_DUAL | SPI_RX_QUAD | SPI_TX_QUAD,
+ };
+ static const struct of_device_id sun6i_spi_match[] = {
+
+From patchwork Sat Jun 24 13:16:24 2023
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Maksim Kiselev <bigunclemax@gmail.com>
+X-Patchwork-Id: 13291663
+Return-Path: 
+ <linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org>
+X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
+       aws-us-west-2-korg-lkml-1.web.codeaurora.org
+Received: from bombadil.infradead.org (bombadil.infradead.org
+ [198.137.202.133])
+       (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
+       (No client certificate requested)
+       by smtp.lore.kernel.org (Postfix) with ESMTPS id 60D97EB64DA
+       for <linux-arm-kernel@archiver.kernel.org>;
+ Sat, 24 Jun 2023 13:17:49 +0000 (UTC)
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
+       d=lists.infradead.org; s=bombadil.20210309; h=Sender:
+       Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:
+       List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:
+       Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:
+       Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
+       List-Owner; bh=Ihxb4fy8lMohiUyYiTfJojnXiJk11U4o3lHg7H7UOAw=; b=ReDD5g9ABPCwFw
+       /aS3sJRfVa1RA1KG3OgwHwueQtVME5sgtij5ttanEXLbhFqzNV39entwLhDS7PV17MqAruJWN2baD
+       X4/mzB3oc3W4S52pBFszajV8YXNJjzacQDVbNat5KPnnMSHBpdopTQ1WL8lyGxkwiMy4PEzXPG2op
+       z37Mpg4CotAE0XuGGpa9q12d4L8kANielvctwvV6/IHVhp9Pabzt1ZZigghBgcFe1uMhqvjQyTbyq
+       jx3t1WUP91gFnVBfaS1lH1KujemyxzjtxL/CUxjv2v30zDX0pnHtcNXdFTD6r6ZRfpgbpy0ENd0SJ
+       yMI5K0E1RnMMCUqnm34A==;
+Received: from localhost ([::1] helo=bombadil.infradead.org)
+       by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux))
+       id 1qD38m-0061LH-0p;
+       Sat, 24 Jun 2023 13:17:24 +0000
+Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f])
+       by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux))
+       id 1qD38f-0061HV-0x;
+       Sat, 24 Jun 2023 13:17:18 +0000
+Received: by mail-wm1-x32f.google.com with SMTP id
+ 5b1f17b1804b1-3fa0253b9e7so14312345e9.1;
+        Sat, 24 Jun 2023 06:17:16 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=gmail.com; s=20221208; t=1687612636; x=1690204636;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
+         :message-id:reply-to;
+        bh=KAYPGxSTFPjM3RqhwW9I/u0fjI7Fx45EUbdLcf3Fbbk=;
+        b=RTqZRv+kicZW7QzVJK3ZagJlTPPID3erCQjK8DbAaVPTMWw3b0mjuGV5SQVg3A7Hfp
+         kTP3MO1AV9lx1/fyLW3WpWXj4HmKkLq3zsShiKr+AZkRpIUvDHPemFoM8d6lYuJBkhVf
+         VwXLSS0PvzKxnzoIXhwxmKBAloifepGmC78ZDgEmk5MbVTY+UmUcnQs8jnP7jUKTgQ1t
+         ovA2xPB5nkCELrRww6By/LY2lIhiGufo89h+gKofzrfcx/6CnBLsCo++cVmYMzLAiVW3
+         P2v56HjmRyol/JePLMkvownV0cd+4jPAN3a3PkXbpyjqgTMgtriUwWMRfhDtyahMiisK
+         i7jw==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=1e100.net; s=20221208; t=1687612636; x=1690204636;
+        h=content-transfer-encoding:mime-version:references:in-reply-to
+         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
+         :subject:date:message-id:reply-to;
+        bh=KAYPGxSTFPjM3RqhwW9I/u0fjI7Fx45EUbdLcf3Fbbk=;
+        b=VL4qmPvKqU3PN+Sm50S2o9iI3c4iACE9ptXarlQPGr+KD9v9avHm5owVAIByy1LybV
+         qRVeyWpTzGfhY1XEuv9/frfc4oRQtG82WbVhrx7Y736eoAikGf3DQduTwYwD5ugyAWzF
+         p9GN5JRcvvgRx+NDMnY76zTtccmPf3MI2hCE8R4MZu3HTiowO5TLmPWrBTMReZb6GTMB
+         vD6uqPQPxd5bvYPhu5HPB9eDNAJEqilcR5pY11FLc/UFT4uAmNckzanYIlLVfyElnkn5
+         9mjsMXAeah3i2wLW+LbFebzdKOBsGdqOtHbWf3RRoBAM8fGQORTtH8rhbgkPMI0PPrqN
+         dVSA==
+X-Gm-Message-State: AC+VfDzkx/WagPim7qXB3LxH/WAZmWoVio5tnYg4GIzoBmcqJu8dlXPL
+       HVUthNk5wLmufwoSWr9ZPWI=
+X-Google-Smtp-Source: 
+ ACHHUZ6AxRD4qR+dRoN7S7SE01tpvdTdIi7AeyJugnitjFY045wLn75ojjvOMv78elsfe85Qmldkag==
+X-Received: by 2002:a05:600c:245:b0:3fa:838d:adbd with SMTP id
+ 5-20020a05600c024500b003fa838dadbdmr1749644wmj.1.1687612635438;
+        Sat, 24 Jun 2023 06:17:15 -0700 (PDT)
+Received: from user-PC.. ([92.51.95.194])
+        by smtp.gmail.com with ESMTPSA id
+ l1-20020a1ced01000000b003f9b0830107sm5107428wmh.41.2023.06.24.06.17.13
+        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
+        Sat, 24 Jun 2023 06:17:15 -0700 (PDT)
+From: Maksim Kiselev <bigunclemax@gmail.com>
+To: linux-spi@vger.kernel.org
+Cc: Maksim Kiselev <bigunclemax@gmail.com>,
+       Rob Herring <robh+dt@kernel.org>,
+       Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
+       Conor Dooley <conor+dt@kernel.org>,
+       Paul Walmsley <paul.walmsley@sifive.com>,
+       Palmer Dabbelt <palmer@dabbelt.com>,
+       Albert Ou <aou@eecs.berkeley.edu>,
+       Chen-Yu Tsai <wens@csie.org>,
+       Jernej Skrabec <jernej.skrabec@gmail.com>,
+       Samuel Holland <samuel@sholland.org>,
+       Mark Brown <broonie@kernel.org>,
+       Cristian Ciocaltea <cristian.ciocaltea@collabora.com>,
+       devicetree@vger.kernel.org,
+       linux-riscv@lists.infradead.org,
+       linux-arm-kernel@lists.infradead.org,
+       linux-sunxi@lists.linux.dev,
+       linux-kernel@vger.kernel.org
+Subject: [PATCH v1 3/3] riscv: dts: allwinner: d1: Add QSPI pins node for
+ pinmux PC port
+Date: Sat, 24 Jun 2023 16:16:24 +0300
+Message-Id: <20230624131632.2972546-4-bigunclemax@gmail.com>
+X-Mailer: git-send-email 2.39.2
+In-Reply-To: <20230624131632.2972546-1-bigunclemax@gmail.com>
+References: <20230624131632.2972546-1-bigunclemax@gmail.com>
+MIME-Version: 1.0
+X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 
+X-CRM114-CacheID: sfid-20230624_061717_338456_30CC9AFC 
+X-CRM114-Status: UNSURE (   9.47  )
+X-CRM114-Notice: Please train this message.
+X-BeenThere: linux-arm-kernel@lists.infradead.org
+X-Mailman-Version: 2.1.34
+Precedence: list
+List-Id: <linux-arm-kernel.lists.infradead.org>
+List-Unsubscribe: 
+ <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
+List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
+List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
+List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
+List-Subscribe: 
+ <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
+Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
+Errors-To: 
+ linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org
+
+Add pinmux node that describes pins on PC port which required for
+QSPI mode.
+
+Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
+---
+ arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi b/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
+index 1bb1e5cae602..9f754dd03d85 100644
+--- a/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
++++ b/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
+@@ -131,6 +131,13 @@ uart3_pb_pins: uart3-pb-pins {
+                               pins = "PB6", "PB7";
+                               function = "uart3";
+                       };
++
++                      /omit-if-no-ref/
++                      qspi0_pc_pins: qspi0-pc-pins {
++                              pins = "PC2", "PC3", "PC4", "PC5", "PC6",
++                                     "PC7";
++                              function = "spi0";
++                      };
+               };
+               ccu: clock-controller@2001000 {
diff --git a/target/linux/sunxi/patches-6.1/0007-dt-bindings-spi-sun6i-add-DT-bindings-for-Allwinner-.patch b/target/linux/sunxi/patches-6.1/0007-dt-bindings-spi-sun6i-add-DT-bindings-for-Allwinner-.patch
deleted file mode 100644 (file)
index 1754d19..0000000
+++ /dev/null
@@ -1,333 +0,0 @@
-From 160cc587decac38e0f28f1583412a987a70450e9 Mon Sep 17 00:00:00 2001
-From: Maksim Kiselev <bigunclemax@gmail.com>
-Date: Wed, 10 May 2023 11:11:08 +0300
-Subject: [PATCH 7/9] dt-bindings: spi: sun6i: add DT bindings for Allwinner
- R329/D1/R528/T113s SPI
-
-Listed above Allwinner SoCs has two SPI controllers. First is the regular
-SPI controller and the second one has additional functionality for
-MIPI-DBI Type C.
-
-Add compatible strings for these controllers
-
-Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
-Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
-Reviewed-by: Andre Przywara <andre.przywara@arm.com>
-Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
----
- .../bindings/spi/allwinner,sun6i-a31-spi.yaml |  10 ++
- .../boot/dts/allwinner/sunxi-d1s-t113.dtsi    |  37 +++++
- drivers/spi/spi-sun6i.c                       | 131 ++++++++++++------
- 3 files changed, 138 insertions(+), 40 deletions(-)
-
-diff --git a/Documentation/devicetree/bindings/spi/allwinner,sun6i-a31-spi.yaml b/Documentation/devicetree/bindings/spi/allwinner,sun6i-a31-spi.yaml
-index 58b7056f4a70..95939684a00d 100644
---- a/Documentation/devicetree/bindings/spi/allwinner,sun6i-a31-spi.yaml
-+++ b/Documentation/devicetree/bindings/spi/allwinner,sun6i-a31-spi.yaml
-@@ -19,6 +19,7 @@ properties:
-   compatible:
-     oneOf:
-+      - const: allwinner,sun50i-r329-spi
-       - const: allwinner,sun6i-a31-spi
-       - const: allwinner,sun8i-h3-spi
-       - items:
-@@ -28,6 +29,15 @@ properties:
-               - allwinner,sun50i-h616-spi
-               - allwinner,suniv-f1c100s-spi
-           - const: allwinner,sun8i-h3-spi
-+      - items:
-+          - enum:
-+              - allwinner,sun20i-d1-spi
-+              - allwinner,sun50i-r329-spi-dbi
-+          - const: allwinner,sun50i-r329-spi
-+      - items:
-+          - const: allwinner,sun20i-d1-spi-dbi
-+          - const: allwinner,sun50i-r329-spi-dbi
-+          - const: allwinner,sun50i-r329-spi
-   reg:
-     maxItems: 1
-diff --git a/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi b/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
-index 3723612b1fd8..6efff8f41e00 100644
---- a/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
-+++ b/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
-@@ -108,6 +108,12 @@
-                               function = "emac";
-                       };
-+                      /omit-if-no-ref/
-+                      spi0_pins: spi0-pins {
-+                              pins = "PC2", "PC3", "PC4", "PC5";
-+                              function = "spi0";
-+                      };
-+
-                       /omit-if-no-ref/
-                       uart1_pg6_pins: uart1-pg6-pins {
-                               pins = "PG6", "PG7";
-@@ -435,6 +441,37 @@
-                       #size-cells = <0>;
-               };
-+              spi0: spi@4025000 {
-+                      compatible = "allwinner,sun20i-d1-spi",
-+                                   "allwinner,sun50i-r329-spi";
-+                      reg = <0x04025000 0x1000>;
-+                      interrupts = <SOC_PERIPHERAL_IRQ(15) IRQ_TYPE_LEVEL_HIGH>;
-+                      clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
-+                      clock-names = "ahb", "mod";
-+                      dmas = <&dma 22>, <&dma 22>;
-+                      dma-names = "rx", "tx";
-+                      resets = <&ccu RST_BUS_SPI0>;
-+                      status = "disabled";
-+                      #address-cells = <1>;
-+                      #size-cells = <0>;
-+              };
-+
-+              spi1: spi@4026000 {
-+                      compatible = "allwinner,sun20i-d1-spi-dbi",
-+                                   "allwinner,sun50i-r329-spi-dbi",
-+                                   "allwinner,sun50i-r329-spi";
-+                      reg = <0x04026000 0x1000>;
-+                      interrupts = <SOC_PERIPHERAL_IRQ(16) IRQ_TYPE_LEVEL_HIGH>;
-+                      clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
-+                      clock-names = "ahb", "mod";
-+                      dmas = <&dma 23>, <&dma 23>;
-+                      dma-names = "rx", "tx";
-+                      resets = <&ccu RST_BUS_SPI1>;
-+                      status = "disabled";
-+                      #address-cells = <1>;
-+                      #size-cells = <0>;
-+              };
-+
-               usb_otg: usb@4100000 {
-                       compatible = "allwinner,sun20i-d1-musb",
-                                    "allwinner,sun8i-a33-musb";
-diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c
-index 23ad052528db..4f32cd99a81e 100644
---- a/drivers/spi/spi-sun6i.c
-+++ b/drivers/spi/spi-sun6i.c
-@@ -42,7 +42,9 @@
- #define SUN6I_TFR_CTL_CS_MANUAL                       BIT(6)
- #define SUN6I_TFR_CTL_CS_LEVEL                        BIT(7)
- #define SUN6I_TFR_CTL_DHB                     BIT(8)
-+#define SUN6I_TFR_CTL_SDC                     BIT(11)
- #define SUN6I_TFR_CTL_FBS                     BIT(12)
-+#define SUN6I_TFR_CTL_SDM                     BIT(13)
- #define SUN6I_TFR_CTL_XCH                     BIT(31)
- #define SUN6I_INT_CTL_REG             0x10
-@@ -85,6 +87,11 @@
- #define SUN6I_TXDATA_REG              0x200
- #define SUN6I_RXDATA_REG              0x300
-+struct sun6i_spi_cfg {
-+      unsigned long           fifo_depth;
-+      bool                    has_clk_ctl;
-+};
-+
- struct sun6i_spi {
-       struct spi_master       *master;
-       void __iomem            *base_addr;
-@@ -99,7 +106,7 @@ struct sun6i_spi {
-       const u8                *tx_buf;
-       u8                      *rx_buf;
-       int                     len;
--      unsigned long           fifo_depth;
-+      const struct sun6i_spi_cfg *cfg;
- };
- static inline u32 sun6i_spi_read(struct sun6i_spi *sspi, u32 reg)
-@@ -156,7 +163,7 @@ static inline void sun6i_spi_fill_fifo(struct sun6i_spi *sspi)
-       u8 byte;
-       /* See how much data we can fit */
--      cnt = sspi->fifo_depth - sun6i_spi_get_tx_fifo_count(sspi);
-+      cnt = sspi->cfg->fifo_depth - sun6i_spi_get_tx_fifo_count(sspi);
-       len = min((int)cnt, sspi->len);
-@@ -256,7 +263,7 @@ static int sun6i_spi_transfer_one(struct spi_master *master,
-                                 struct spi_transfer *tfr)
- {
-       struct sun6i_spi *sspi = spi_master_get_devdata(master);
--      unsigned int mclk_rate, div, div_cdr1, div_cdr2, timeout;
-+      unsigned int div, div_cdr1, div_cdr2, timeout;
-       unsigned int start, end, tx_time;
-       unsigned int trig_level;
-       unsigned int tx_len = 0, rx_len = 0;
-@@ -289,14 +296,14 @@ static int sun6i_spi_transfer_one(struct spi_master *master,
-                * the hardcoded value used in old generation of Allwinner
-                * SPI controller. (See spi-sun4i.c)
-                */
--              trig_level = sspi->fifo_depth / 4 * 3;
-+              trig_level = sspi->cfg->fifo_depth / 4 * 3;
-       } else {
-               /*
-                * Setup FIFO DMA request trigger level
-                * We choose 1/2 of the full fifo depth, that value will
-                * be used as DMA burst length.
-                */
--              trig_level = sspi->fifo_depth / 2;
-+              trig_level = sspi->cfg->fifo_depth / 2;
-               if (tfr->tx_buf)
-                       reg |= SUN6I_FIFO_CTL_TF_DRQ_EN;
-@@ -346,39 +353,65 @@ static int sun6i_spi_transfer_one(struct spi_master *master,
-       sun6i_spi_write(sspi, SUN6I_TFR_CTL_REG, reg);
--      /* Ensure that we have a parent clock fast enough */
--      mclk_rate = clk_get_rate(sspi->mclk);
--      if (mclk_rate < (2 * tfr->speed_hz)) {
--              clk_set_rate(sspi->mclk, 2 * tfr->speed_hz);
--              mclk_rate = clk_get_rate(sspi->mclk);
--      }
-+      if (sspi->cfg->has_clk_ctl) {
-+              unsigned int mclk_rate = clk_get_rate(sspi->mclk);
--      /*
--       * Setup clock divider.
--       *
--       * We have two choices there. Either we can use the clock
--       * divide rate 1, which is calculated thanks to this formula:
--       * SPI_CLK = MOD_CLK / (2 ^ cdr)
--       * Or we can use CDR2, which is calculated with the formula:
--       * SPI_CLK = MOD_CLK / (2 * (cdr + 1))
--       * Wether we use the former or the latter is set through the
--       * DRS bit.
--       *
--       * First try CDR2, and if we can't reach the expected
--       * frequency, fall back to CDR1.
--       */
--      div_cdr1 = DIV_ROUND_UP(mclk_rate, tfr->speed_hz);
--      div_cdr2 = DIV_ROUND_UP(div_cdr1, 2);
--      if (div_cdr2 <= (SUN6I_CLK_CTL_CDR2_MASK + 1)) {
--              reg = SUN6I_CLK_CTL_CDR2(div_cdr2 - 1) | SUN6I_CLK_CTL_DRS;
--              tfr->effective_speed_hz = mclk_rate / (2 * div_cdr2);
-+              /* Ensure that we have a parent clock fast enough */
-+              if (mclk_rate < (2 * tfr->speed_hz)) {
-+                      clk_set_rate(sspi->mclk, 2 * tfr->speed_hz);
-+                      mclk_rate = clk_get_rate(sspi->mclk);
-+              }
-+
-+              /*
-+               * Setup clock divider.
-+               *
-+               * We have two choices there. Either we can use the clock
-+               * divide rate 1, which is calculated thanks to this formula:
-+               * SPI_CLK = MOD_CLK / (2 ^ cdr)
-+               * Or we can use CDR2, which is calculated with the formula:
-+               * SPI_CLK = MOD_CLK / (2 * (cdr + 1))
-+               * Wether we use the former or the latter is set through the
-+               * DRS bit.
-+               *
-+               * First try CDR2, and if we can't reach the expected
-+               * frequency, fall back to CDR1.
-+               */
-+              div_cdr1 = DIV_ROUND_UP(mclk_rate, tfr->speed_hz);
-+              div_cdr2 = DIV_ROUND_UP(div_cdr1, 2);
-+              if (div_cdr2 <= (SUN6I_CLK_CTL_CDR2_MASK + 1)) {
-+                      reg = SUN6I_CLK_CTL_CDR2(div_cdr2 - 1) | SUN6I_CLK_CTL_DRS;
-+                      tfr->effective_speed_hz = mclk_rate / (2 * div_cdr2);
-+              } else {
-+                      div = min(SUN6I_CLK_CTL_CDR1_MASK, order_base_2(div_cdr1));
-+                      reg = SUN6I_CLK_CTL_CDR1(div);
-+                      tfr->effective_speed_hz = mclk_rate / (1 << div);
-+              }
-+
-+              sun6i_spi_write(sspi, SUN6I_CLK_CTL_REG, reg);
-       } else {
--              div = min(SUN6I_CLK_CTL_CDR1_MASK, order_base_2(div_cdr1));
--              reg = SUN6I_CLK_CTL_CDR1(div);
--              tfr->effective_speed_hz = mclk_rate / (1 << div);
-+              clk_set_rate(sspi->mclk, tfr->speed_hz);
-+              tfr->effective_speed_hz = clk_get_rate(sspi->mclk);
-+
-+              /*
-+               * Configure work mode.
-+               *
-+               * There are three work modes depending on the controller clock
-+               * frequency:
-+               * - normal sample mode           : CLK <= 24MHz SDM=1 SDC=0
-+               * - delay half-cycle sample mode : CLK <= 40MHz SDM=0 SDC=0
-+               * - delay one-cycle sample mode  : CLK >= 80MHz SDM=0 SDC=1
-+               */
-+              reg = sun6i_spi_read(sspi, SUN6I_TFR_CTL_REG);
-+              reg &= ~(SUN6I_TFR_CTL_SDM | SUN6I_TFR_CTL_SDC);
-+
-+              if (tfr->effective_speed_hz <= 24000000)
-+                      reg |= SUN6I_TFR_CTL_SDM;
-+              else if (tfr->effective_speed_hz >= 80000000)
-+                      reg |= SUN6I_TFR_CTL_SDC;
-+
-+              sun6i_spi_write(sspi, SUN6I_TFR_CTL_REG, reg);
-       }
--      sun6i_spi_write(sspi, SUN6I_CLK_CTL_REG, reg);
-       /* Finally enable the bus - doing so before might raise SCK to HIGH */
-       reg = sun6i_spi_read(sspi, SUN6I_GBL_CTL_REG);
-       reg |= SUN6I_GBL_CTL_BUS_ENABLE;
-@@ -410,9 +443,9 @@ static int sun6i_spi_transfer_one(struct spi_master *master,
-       reg = SUN6I_INT_CTL_TC;
-       if (!use_dma) {
--              if (rx_len > sspi->fifo_depth)
-+              if (rx_len > sspi->cfg->fifo_depth)
-                       reg |= SUN6I_INT_CTL_RF_RDY;
--              if (tx_len > sspi->fifo_depth)
-+              if (tx_len > sspi->cfg->fifo_depth)
-                       reg |= SUN6I_INT_CTL_TF_ERQ;
-       }
-@@ -543,7 +576,7 @@ static bool sun6i_spi_can_dma(struct spi_master *master,
-        * the fifo length we can just fill the fifo and wait for a single
-        * irq, so don't bother setting up dma
-        */
--      return xfer->len > sspi->fifo_depth;
-+      return xfer->len > sspi->cfg->fifo_depth;
- }
- static int sun6i_spi_probe(struct platform_device *pdev)
-@@ -582,7 +615,7 @@ static int sun6i_spi_probe(struct platform_device *pdev)
-       }
-       sspi->master = master;
--      sspi->fifo_depth = (unsigned long)of_device_get_match_data(&pdev->dev);
-+      sspi->cfg = of_device_get_match_data(&pdev->dev);
-       master->max_speed_hz = 100 * 1000 * 1000;
-       master->min_speed_hz = 3 * 1000;
-@@ -696,9 +729,27 @@ static int sun6i_spi_remove(struct platform_device *pdev)
-       return 0;
- }
-+static const struct sun6i_spi_cfg sun6i_a31_spi_cfg = {
-+      .fifo_depth     = SUN6I_FIFO_DEPTH,
-+      .has_clk_ctl    = true,
-+};
-+
-+static const struct sun6i_spi_cfg sun8i_h3_spi_cfg = {
-+      .fifo_depth     = SUN8I_FIFO_DEPTH,
-+      .has_clk_ctl    = true,
-+};
-+
-+static const struct sun6i_spi_cfg sun50i_r329_spi_cfg = {
-+      .fifo_depth     = SUN8I_FIFO_DEPTH,
-+};
-+
- static const struct of_device_id sun6i_spi_match[] = {
--      { .compatible = "allwinner,sun6i-a31-spi", .data = (void *)SUN6I_FIFO_DEPTH },
--      { .compatible = "allwinner,sun8i-h3-spi",  .data = (void *)SUN8I_FIFO_DEPTH },
-+      { .compatible = "allwinner,sun6i-a31-spi", .data = &sun6i_a31_spi_cfg },
-+      { .compatible = "allwinner,sun8i-h3-spi",  .data = &sun8i_h3_spi_cfg },
-+      {
-+              .compatible = "allwinner,sun50i-r329-spi",
-+              .data = &sun50i_r329_spi_cfg
-+      },
-       {}
- };
- MODULE_DEVICE_TABLE(of, sun6i_spi_match);
--- 
-2.20.1
-