2022-02-13 15:36:58

by Corentin LABBE

[permalink] [raw]
Subject: [PATCH v3] dt-bindings: crypto: convert rockchip-crypto to yaml

Convert rockchip-crypto to yaml

Signed-off-by: Corentin Labbe <[email protected]>
---
Changes since v1:
- fixed example
- renamed to a new name
- fixed some maxItems

Change since v2:
- Fixed maintainers section

.../crypto/rockchip,rk3288-crypto.yaml | 66 +++++++++++++++++++
.../bindings/crypto/rockchip-crypto.txt | 28 --------
2 files changed, 66 insertions(+), 28 deletions(-)
create mode 100644 Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml
delete mode 100644 Documentation/devicetree/bindings/crypto/rockchip-crypto.txt

diff --git a/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml b/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml
new file mode 100644
index 000000000000..2e1e9fa711c4
--- /dev/null
+++ b/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml
@@ -0,0 +1,66 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/crypto/rockchip,rk3288-crypto.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip Electronics And Security Accelerator
+
+maintainers:
+ - Heiko Stuebner <[email protected]>
+
+properties:
+ compatible:
+ const: rockchip,rk3288-crypto
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ items:
+ - description: clock data
+ - description: clock data
+ - description: clock crypto accelerator
+ - description: clock dma
+
+ clock-names:
+ items:
+ - const: aclk
+ - const: hclk
+ - const: sclk
+ - const: apb_pclk
+
+ resets:
+ maxItems: 1
+
+ reset-names:
+ const: crypto-rst
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - clock-names
+ - resets
+ - reset-names
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/clock/rk3288-cru.h>
+ crypto@ff8a0000 {
+ compatible = "rockchip,rk3288-crypto";
+ reg = <0xff8a0000 0x4000>;
+ interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru ACLK_CRYPTO>, <&cru HCLK_CRYPTO>,
+ <&cru SCLK_CRYPTO>, <&cru ACLK_DMAC1>;
+ clock-names = "aclk", "hclk", "sclk", "apb_pclk";
+ resets = <&cru SRST_CRYPTO>;
+ reset-names = "crypto-rst";
+ };
diff --git a/Documentation/devicetree/bindings/crypto/rockchip-crypto.txt b/Documentation/devicetree/bindings/crypto/rockchip-crypto.txt
deleted file mode 100644
index 5e2ba385b8c9..000000000000
--- a/Documentation/devicetree/bindings/crypto/rockchip-crypto.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-Rockchip Electronics And Security Accelerator
-
-Required properties:
-- compatible: Should be "rockchip,rk3288-crypto"
-- reg: Base physical address of the engine and length of memory mapped
- region
-- interrupts: Interrupt number
-- clocks: Reference to the clocks about crypto
-- clock-names: "aclk" used to clock data
- "hclk" used to clock data
- "sclk" used to clock crypto accelerator
- "apb_pclk" used to clock dma
-- resets: Must contain an entry for each entry in reset-names.
- See ../reset/reset.txt for details.
-- reset-names: Must include the name "crypto-rst".
-
-Examples:
-
- crypto: cypto-controller@ff8a0000 {
- compatible = "rockchip,rk3288-crypto";
- reg = <0xff8a0000 0x4000>;
- interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
- clocks = <&cru ACLK_CRYPTO>, <&cru HCLK_CRYPTO>,
- <&cru SCLK_CRYPTO>, <&cru ACLK_DMAC1>;
- clock-names = "aclk", "hclk", "sclk", "apb_pclk";
- resets = <&cru SRST_CRYPTO>;
- reset-names = "crypto-rst";
- };
--
2.34.1


2022-02-14 09:31:17

by Johan Jonker

[permalink] [raw]
Subject: Re: [PATCH v3] dt-bindings: crypto: convert rockchip-crypto to yaml



On 2/11/22 20:48, LABBE Corentin wrote:
> Le Fri, Feb 11, 2022 at 02:13:00PM +0100, Johan Jonker a écrit :
>>
>>
>> On 2/11/22 12:59, Corentin Labbe wrote:
>>> Convert rockchip-crypto to yaml
>>>
>>> Signed-off-by: Corentin Labbe <[email protected]>
>>> ---
>>> Changes since v1:
>>> - fixed example
>>> - renamed to a new name
>>> - fixed some maxItems
>>>
>>> Change since v2:
>>> - Fixed maintainers section
>>>
>>> .../crypto/rockchip,rk3288-crypto.yaml | 66 +++++++++++++++++++
>>> .../bindings/crypto/rockchip-crypto.txt | 28 --------
>>> 2 files changed, 66 insertions(+), 28 deletions(-)
>>
>>> create mode 100644 Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml
>>> delete mode 100644 Documentation/devicetree/bindings/crypto/rockchip-crypto.txt
>>
>> There's more possible to this document:
>>
>> dt-bindings: crypto: rockchip: add support for px30
>> https://github.com/rockchip-linux/kernel/commit/3655df1bc6114bda2a6417f39772a3cb008084ea
>>
>> crypto: rockchip - add px30 crypto aes/des support
>> https://github.com/rockchip-linux/kernel/commit/ee082ae4f609f3b48f768420b31d8600448bd35a
>>
>

> Hello
>
> The great advantage of out of tree code is that we can ignore it.

See comment below.
This is not about code, but about reusing the (generic) binding for more
SoCs then just rk3288 that happened to have Linux support.
See spi-rockchip.yaml rockchip-dw-mshc.yaml etc.

> Anyway, if one day this code goes upstream, I think the new compatible should be in a new driver/module, both v1 and v2 are too different for me to be shared in the same driver.
>
> But before upstreaming this code, the one in mainline should be fixed first, it fail self tests. (I have some patch partialy fixing it in progress)
>

Success! Send us lots of patches...
Is it possible to keep portability (to U-boot) in mind for multiple
Rockchip SoC types.

> Regards
>

Although DT and bindings are hosted in the Linux tree they are separate
things. DT files and bindings can be used elsewhere. There's no need for
(full) Linux driver support. For Rockchip crypto nodes this is mostly
done in the Manufacturer U-boot tree.

https://github.com/rockchip-linux/u-boot/blob/next-dev/drivers/crypto/rockchip/crypto_v1.c

https://github.com/rockchip-linux/u-boot/blame/next-dev/drivers/crypto/rockchip/crypto_v2.c

Given Krzysztof's comment:

> file name: rockchip,crypto.yaml or rockchip,rk3288-crypto.yaml.
> Kind of depends whether there is another binding possible for newer
> Crypto blocks from Rockchip.

For U-boot the Rockchip dtsi files are synced from the Linux tree,
so it may well be possible that someone add them here and use them
elsewhere if needed.

From the links to the files above we can expect:
crypto v1:
{ .compatible = "rockchip,rk312x-crypto" },
{ .compatible = "rockchip,rk322x-crypto" },
{ .compatible = "rockchip,rk3288-crypto" },
{ .compatible = "rockchip,rk3328-crypto" },
{ .compatible = "rockchip,rk3368-crypto" },
{ .compatible = "rockchip,rk3399-crypto" },

crypto v2:
{ .compatible = "rockchip,px30-crypto" },
{ .compatible = "rockchip,rk1808-crypto" },
{ .compatible = "rockchip,rk3308-crypto" },
{ .compatible = "rockchip,rv1126-crypto" },
{ .compatible = "rockchip,rk3568-crypto" },
{ .compatible = "rockchip,rk3588-crypto" },

With only small nodes differences for clocks we reuse the "generic"
binding and NOT a (rk3288) SoC orientated one.

Johan