2024-02-20 10:31:36

by Inochi Amaoto

[permalink] [raw]
Subject: [PATCH 0/4] riscv: sophgo: add dmamux support for Sophgo CV1800/SG2000 SoCs

Add dma multiplexer support for the Sophgo CV1800/SG2000 SoCs.

The patch include the following patch:
http://lore.kernel.org/linux-riscv/PH7PR20MB4962F822A64CB127911978AABB4E2@PH7PR20MB4962.namprd20.prod.outlook.com/

Changed from v2:
1. fix wrong title of patch 2.

Inochi Amaoto (4):
dt-bindings: dmaengine: Add dmamux for CV18XX/SG200X series SoC
dt-bindings: soc: sophgo: Add top misc controller of CV18XX/SG200X
series SoC
soc/sophgo: add top sysctrl layout file for CV18XX/SG200X
dmaengine: add driver for Sophgo CV18XX/SG200X dmamux

.../bindings/dma/sophgo,cv1800-dmamux.yaml | 44 ++++
.../soc/sophgo/sophgo,cv1800-top-syscon.yaml | 48 ++++
drivers/dma/Kconfig | 9 +
drivers/dma/Makefile | 1 +
drivers/dma/cv1800-dmamux.c | 232 ++++++++++++++++++
include/dt-bindings/dma/cv1800-dma.h | 55 +++++
include/soc/sophgo/cv1800-sysctl.h | 30 +++
7 files changed, 419 insertions(+)
create mode 100644 Documentation/devicetree/bindings/dma/sophgo,cv1800-dmamux.yaml
create mode 100644 Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
create mode 100644 drivers/dma/cv1800-dmamux.c
create mode 100644 include/dt-bindings/dma/cv1800-dma.h
create mode 100644 include/soc/sophgo/cv1800-sysctl.h

--
2.43.2



2024-02-20 10:35:49

by Inochi Amaoto

[permalink] [raw]
Subject: Re: [PATCH 0/4 v2] riscv: sophgo: add dmamux support for Sophgo CV1800/SG2000 SoCs

This should be the v2 version, the cover have a wrong number.

Please ignore the wrong changelog. It is "changed from v1".

2024-02-20 10:51:53

by Inochi Amaoto

[permalink] [raw]
Subject: [PATCH v2 2/4] dt-bindings: soc: sophgo: Add top misc controller of CV18XX/SG200X series SoC

CV18XX/SG200X series SoCs have a special top misc system controller,
which provides register access for several devices. In addition to
register access, this system controller also contains some subdevices
(such as dmamux).

Add bindings for top misc controller of CV18XX/SG200X series SoC.

Signed-off-by: Inochi Amaoto <[email protected]>
---
.../soc/sophgo/sophgo,cv1800-top-syscon.yaml | 48 +++++++++++++++++++
1 file changed, 48 insertions(+)
create mode 100644 Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml

diff --git a/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml b/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
new file mode 100644
index 000000000000..29825fee66d5
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/sophgo/sophgo,cv1800-top-syscon.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sophgo CV1800/SG2000 SoC top system controller
+
+maintainers:
+ - Inochi Amaoto <[email protected]>
+
+description:
+ The Sophgo CV1800/SG2000 SoC top misc system controller provides
+ register access to configure related modules.
+
+properties:
+ compatible:
+ items:
+ - const: sophgo,cv1800-top-syscon
+ - const: syscon
+ - const: simple-mfd
+
+ reg:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+
+additionalProperties:
+ type: object
+
+examples:
+ - |
+ syscon@3000000 {
+ compatible = "sophgo,cv1800-top-syscon",
+ "syscon", "simple-mfd";
+ reg = <0x03000000 0x1000>;
+
+ dma-router {
+ compatible = "sophgo,cv1800-dmamux";
+ #dma-cells = <3>;
+ dma-masters = <&dmac>;
+ dma-requests = <8>;
+ };
+ };
+
+...
--
2.43.2


2024-02-23 00:33:51

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: soc: sophgo: Add top misc controller of CV18XX/SG200X series SoC

On Tue, Feb 20, 2024 at 06:28:59PM +0800, Inochi Amaoto wrote:
> CV18XX/SG200X series SoCs have a special top misc system controller,
> which provides register access for several devices. In addition to
> register access, this system controller also contains some subdevices
> (such as dmamux).
>
> Add bindings for top misc controller of CV18XX/SG200X series SoC.
>
> Signed-off-by: Inochi Amaoto <[email protected]>
> ---
> .../soc/sophgo/sophgo,cv1800-top-syscon.yaml | 48 +++++++++++++++++++
> 1 file changed, 48 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
>
> diff --git a/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml b/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
> new file mode 100644
> index 000000000000..29825fee66d5
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
> @@ -0,0 +1,48 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/soc/sophgo/sophgo,cv1800-top-syscon.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Sophgo CV1800/SG2000 SoC top system controller
> +
> +maintainers:
> + - Inochi Amaoto <[email protected]>
> +
> +description:
> + The Sophgo CV1800/SG2000 SoC top misc system controller provides
> + register access to configure related modules.
> +
> +properties:
> + compatible:
> + items:
> + - const: sophgo,cv1800-top-syscon
> + - const: syscon
> + - const: simple-mfd
> +
> + reg:
> + maxItems: 1
> +
> +required:
> + - compatible
> + - reg
> +
> +additionalProperties:
> + type: object
> +
> +examples:
> + - |
> + syscon@3000000 {
> + compatible = "sophgo,cv1800-top-syscon",
> + "syscon", "simple-mfd";
> + reg = <0x03000000 0x1000>;
> +
> + dma-router {

Is there no defined register set you can put in 'reg' here?

> + compatible = "sophgo,cv1800-dmamux";
> + #dma-cells = <3>;
> + dma-masters = <&dmac>;
> + dma-requests = <8>;
> + };
> + };
> +
> +...
> --
> 2.43.2
>

2024-02-23 01:47:09

by Inochi Amaoto

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: soc: sophgo: Add top misc controller of CV18XX/SG200X series SoC

On Thu, Feb 22, 2024 at 05:33:34PM -0700, Rob Herring wrote:
> On Tue, Feb 20, 2024 at 06:28:59PM +0800, Inochi Amaoto wrote:
> > CV18XX/SG200X series SoCs have a special top misc system controller,
> > which provides register access for several devices. In addition to
> > register access, this system controller also contains some subdevices
> > (such as dmamux).
> >
> > Add bindings for top misc controller of CV18XX/SG200X series SoC.
> >
> > Signed-off-by: Inochi Amaoto <[email protected]>
> > ---
> > .../soc/sophgo/sophgo,cv1800-top-syscon.yaml | 48 +++++++++++++++++++
> > 1 file changed, 48 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml b/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
> > new file mode 100644
> > index 000000000000..29825fee66d5
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
> > @@ -0,0 +1,48 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/soc/sophgo/sophgo,cv1800-top-syscon.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Sophgo CV1800/SG2000 SoC top system controller
> > +
> > +maintainers:
> > + - Inochi Amaoto <[email protected]>
> > +
> > +description:
> > + The Sophgo CV1800/SG2000 SoC top misc system controller provides
> > + register access to configure related modules.
> > +
> > +properties:
> > + compatible:
> > + items:
> > + - const: sophgo,cv1800-top-syscon
> > + - const: syscon
> > + - const: simple-mfd
> > +
> > + reg:
> > + maxItems: 1
> > +
> > +required:
> > + - compatible
> > + - reg
> > +
> > +additionalProperties:
> > + type: object
> > +
> > +examples:
> > + - |
> > + syscon@3000000 {
> > + compatible = "sophgo,cv1800-top-syscon",
> > + "syscon", "simple-mfd";
> > + reg = <0x03000000 0x1000>;
> > +
> > + dma-router {
>
> Is there no defined register set you can put in 'reg' here?
>

It has multiple registers in the syscon. But in fact, the dmamux
is a virtual device. And the syscon device only have some discrete
registers. This is why I did not put reg. It should access the
device using the offset defined in the patch 3.

> > + compatible = "sophgo,cv1800-dmamux";
> > + #dma-cells = <3>;
> > + dma-masters = <&dmac>;
> > + dma-requests = <8>;
> > + };
> > + };
> > +
> > +...
> > --
> > 2.43.2
> >

2024-02-28 17:08:08

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: soc: sophgo: Add top misc controller of CV18XX/SG200X series SoC

On Fri, Feb 23, 2024 at 09:47:05AM +0800, Inochi Amaoto wrote:
> On Thu, Feb 22, 2024 at 05:33:34PM -0700, Rob Herring wrote:
> > On Tue, Feb 20, 2024 at 06:28:59PM +0800, Inochi Amaoto wrote:
> > > CV18XX/SG200X series SoCs have a special top misc system controller,
> > > which provides register access for several devices. In addition to
> > > register access, this system controller also contains some subdevices
> > > (such as dmamux).
> > >
> > > Add bindings for top misc controller of CV18XX/SG200X series SoC.
> > >
> > > Signed-off-by: Inochi Amaoto <[email protected]>
> > > ---
> > > .../soc/sophgo/sophgo,cv1800-top-syscon.yaml | 48 +++++++++++++++++++
> > > 1 file changed, 48 insertions(+)
> > > create mode 100644 Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
> > >
> > > diff --git a/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml b/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
> > > new file mode 100644
> > > index 000000000000..29825fee66d5
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
> > > @@ -0,0 +1,48 @@
> > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/soc/sophgo/sophgo,cv1800-top-syscon.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Sophgo CV1800/SG2000 SoC top system controller
> > > +
> > > +maintainers:
> > > + - Inochi Amaoto <[email protected]>
> > > +
> > > +description:
> > > + The Sophgo CV1800/SG2000 SoC top misc system controller provides
> > > + register access to configure related modules.
> > > +
> > > +properties:
> > > + compatible:
> > > + items:
> > > + - const: sophgo,cv1800-top-syscon
> > > + - const: syscon
> > > + - const: simple-mfd
> > > +
> > > + reg:
> > > + maxItems: 1
> > > +
> > > +required:
> > > + - compatible
> > > + - reg
> > > +
> > > +additionalProperties:
> > > + type: object
> > > +
> > > +examples:
> > > + - |
> > > + syscon@3000000 {
> > > + compatible = "sophgo,cv1800-top-syscon",
> > > + "syscon", "simple-mfd";
> > > + reg = <0x03000000 0x1000>;
> > > +
> > > + dma-router {
> >
> > Is there no defined register set you can put in 'reg' here?
> >
>
> It has multiple registers in the syscon. But in fact, the dmamux
> is a virtual device. And the syscon device only have some discrete
> registers. This is why I did not put reg. It should access the
> device using the offset defined in the patch 3.

I would add:

reg = <0x154 8>, <0x298 0x4>;

(with appropriate "ranges" in parent)

No requirement for Linux to use this either.

Rob

2024-02-29 03:25:02

by Inochi Amaoto

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: soc: sophgo: Add top misc controller of CV18XX/SG200X series SoC

On Wed, Feb 28, 2024 at 11:07:58AM -0600, Rob Herring wrote:
> On Fri, Feb 23, 2024 at 09:47:05AM +0800, Inochi Amaoto wrote:
> > On Thu, Feb 22, 2024 at 05:33:34PM -0700, Rob Herring wrote:
> > > On Tue, Feb 20, 2024 at 06:28:59PM +0800, Inochi Amaoto wrote:
> > > > CV18XX/SG200X series SoCs have a special top misc system controller,
> > > > which provides register access for several devices. In addition to
> > > > register access, this system controller also contains some subdevices
> > > > (such as dmamux).
> > > >
> > > > Add bindings for top misc controller of CV18XX/SG200X series SoC.
> > > >
> > > > Signed-off-by: Inochi Amaoto <[email protected]>
> > > > ---
> > > > .../soc/sophgo/sophgo,cv1800-top-syscon.yaml | 48 +++++++++++++++++++
> > > > 1 file changed, 48 insertions(+)
> > > > create mode 100644 Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
> > > >
> > > > diff --git a/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml b/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
> > > > new file mode 100644
> > > > index 000000000000..29825fee66d5
> > > > --- /dev/null
> > > > +++ b/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800-top-syscon.yaml
> > > > @@ -0,0 +1,48 @@
> > > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > > > +%YAML 1.2
> > > > +---
> > > > +$id: http://devicetree.org/schemas/soc/sophgo/sophgo,cv1800-top-syscon.yaml#
> > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > +
> > > > +title: Sophgo CV1800/SG2000 SoC top system controller
> > > > +
> > > > +maintainers:
> > > > + - Inochi Amaoto <[email protected]>
> > > > +
> > > > +description:
> > > > + The Sophgo CV1800/SG2000 SoC top misc system controller provides
> > > > + register access to configure related modules.
> > > > +
> > > > +properties:
> > > > + compatible:
> > > > + items:
> > > > + - const: sophgo,cv1800-top-syscon
> > > > + - const: syscon
> > > > + - const: simple-mfd
> > > > +
> > > > + reg:
> > > > + maxItems: 1
> > > > +
> > > > +required:
> > > > + - compatible
> > > > + - reg
> > > > +
> > > > +additionalProperties:
> > > > + type: object
> > > > +
> > > > +examples:
> > > > + - |
> > > > + syscon@3000000 {
> > > > + compatible = "sophgo,cv1800-top-syscon",
> > > > + "syscon", "simple-mfd";
> > > > + reg = <0x03000000 0x1000>;
> > > > +
> > > > + dma-router {
> > >
> > > Is there no defined register set you can put in 'reg' here?
> > >
> >
> > It has multiple registers in the syscon. But in fact, the dmamux
> > is a virtual device. And the syscon device only have some discrete
> > registers. This is why I did not put reg. It should access the
> > device using the offset defined in the patch 3.
>
> I would add:
>
> reg = <0x154 8>, <0x298 0x4>;

This is what I have done before. :)

>
> (with appropriate "ranges" in parent)
>
> No requirement for Linux to use this either.

It seems like that the device should only be described, right?
Also a small question, is it better to add reg-names for this?

>
> Rob