2023-02-16 17:54:07

by Lad, Prabhakar

[permalink] [raw]
Subject: [PATCH 0/3] RZ/G2L: Add CRU, CSI support

From: Lad Prabhakar <[email protected]>

Hi All,

This patch series adds support for CRU and CSI support to RZ/G2L SoC
and enables it on the RZ/G2L SMARC EVK. Also ov5645 node is added which
connects to the CSI2 node.

Note, this patch series applies on top of [0].

[0] https://patchwork.kernel.org/project/linux-renesas-soc/cover/[email protected]/

Cheers,
Prabhakar

Lad Prabhakar (3):
arm64: dts: renesas: r9a07g044: Add CSI and CRU nodes
arm64: dts: renesas: rzg2l-smarc: Add OV5645 node
arm64: dts: renesas: rzg2l-smarc: Enable CRU and CSI nodes

arch/arm64/boot/dts/renesas/r9a07g044.dtsi | 79 +++++++++++++++++++
.../boot/dts/renesas/r9a07g044l2-smarc.dts | 5 ++
.../boot/dts/renesas/rz-smarc-common.dtsi | 76 ++++++++++++++++++
3 files changed, 160 insertions(+)

--
2.25.1



2023-02-16 17:54:09

by Lad, Prabhakar

[permalink] [raw]
Subject: [PATCH 1/3] arm64: dts: renesas: r9a07g044: Add CSI and CRU nodes

From: Lad Prabhakar <[email protected]>

Add CSI and CRU nodes r9a07g044 (RZ/G2L) SoC DTSI.

Signed-off-by: Lad Prabhakar <[email protected]>
---
arch/arm64/boot/dts/renesas/r9a07g044.dtsi | 79 ++++++++++++++++++++++
1 file changed, 79 insertions(+)

diff --git a/arch/arm64/boot/dts/renesas/r9a07g044.dtsi b/arch/arm64/boot/dts/renesas/r9a07g044.dtsi
index 9a3e18abae39..68bd70210d08 100644
--- a/arch/arm64/boot/dts/renesas/r9a07g044.dtsi
+++ b/arch/arm64/boot/dts/renesas/r9a07g044.dtsi
@@ -627,6 +627,85 @@ sbc: spi@10060000 {
status = "disabled";
};

+ cru: video@10830000 {
+ compatible = "renesas,r9a07g044-cru", "renesas,rzg2l-cru";
+ reg = <0 0x10830000 0 0x400>;
+ clocks = <&cpg CPG_MOD SOC_PREFIX(CRU_VCLK)>,
+ <&cpg CPG_MOD SOC_PREFIX(CRU_PCLK)>,
+ <&cpg CPG_MOD SOC_PREFIX(CRU_ACLK)>;
+ clock-names = "video", "apb", "axi";
+ interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "image_conv", "image_conv_err", "axi_mst_err";
+ resets = <&cpg SOC_PREFIX(CRU_PRESETN)>,
+ <&cpg SOC_PREFIX(CRU_ARESETN)>;
+ reset-names = "presetn", "aresetn";
+ power-domains = <&cpg>;
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ reg = <0>;
+ cruparallel: endpoint@0 {
+ reg = <0>;
+ };
+ };
+
+ port@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ reg = <1>;
+ crucsi2: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&csi2cru>;
+ };
+ };
+ };
+ };
+
+ csi2: csi2@10830400 {
+ compatible = "renesas,r9a07g044-csi2", "renesas,rzg2l-csi2";
+ reg = <0 0x10830400 0 0xfc00>;
+ interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg CPG_MOD SOC_PREFIX(CRU_SYSCLK)>,
+ <&cpg CPG_MOD SOC_PREFIX(CRU_VCLK)>,
+ <&cpg CPG_MOD SOC_PREFIX(CRU_PCLK)>;
+ clock-names = "system", "video", "apb";
+ resets = <&cpg SOC_PREFIX(CRU_PRESETN)>,
+ <&cpg SOC_PREFIX(CRU_CMN_RSTB)>;
+ reset-names = "presetn", "cmn-rstb";
+ power-domains = <&cpg>;
+ status = "disabled";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ };
+
+ port@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+
+ csi2cru: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&crucsi2>;
+ };
+ };
+ };
+ };
+
cpg: clock-controller@11010000 {
compatible = "renesas,r9a07g044-cpg";
reg = <0 0x11010000 0 0x10000>;
--
2.25.1


2023-02-16 17:54:12

by Lad, Prabhakar

[permalink] [raw]
Subject: [PATCH 2/3] arm64: dts: renesas: rzg2l-smarc: Add OV5645 node

From: Lad Prabhakar <[email protected]>

OV5645 sensor can be connected to the CN1 connector on the
carrier board. This patch adds the ov5645 node under i2c0 node.

Signed-off-by: Lad Prabhakar <[email protected]>
---
.../boot/dts/renesas/r9a07g044l2-smarc.dts | 4 ++
.../boot/dts/renesas/rz-smarc-common.dtsi | 53 +++++++++++++++++++
2 files changed, 57 insertions(+)

diff --git a/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts b/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
index bc2af6c92ccd..275e760324f3 100644
--- a/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
+++ b/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
@@ -6,6 +6,10 @@
*/

/dts-v1/;
+
+/* comment the #define statement if OV5645 is not connected to CN1 */
+#define CAM_INTERFACE_OV5645 1
+
#include "r9a07g044l2.dtsi"
#include "rzg2l-smarc-som.dtsi"
#include "rzg2l-smarc-pinfunction.dtsi"
diff --git a/arch/arm64/boot/dts/renesas/rz-smarc-common.dtsi b/arch/arm64/boot/dts/renesas/rz-smarc-common.dtsi
index 3962d47b3e59..915ad7e3935d 100644
--- a/arch/arm64/boot/dts/renesas/rz-smarc-common.dtsi
+++ b/arch/arm64/boot/dts/renesas/rz-smarc-common.dtsi
@@ -38,6 +38,38 @@ audio_mclock: audio_mclock {
clock-frequency = <11289600>;
};

+#ifdef CAM_INTERFACE_OV5645
+ ov5645_vdddo_1v8: 1p8v {
+ compatible = "regulator-fixed";
+ regulator-name = "camera_vdddo";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ };
+
+ ov5645_vdda_2v8: 2p8v {
+ compatible = "regulator-fixed";
+ regulator-name = "camera_vdda";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-always-on;
+ };
+
+ ov5645_vddd_1v5: 1p5v {
+ compatible = "regulator-fixed";
+ regulator-name = "camera_vddd";
+ regulator-min-microvolt = <1500000>;
+ regulator-max-microvolt = <1500000>;
+ regulator-always-on;
+ };
+
+ ov5645_fixed_clk: osc25250_clk {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <24000000>;
+ };
+#endif
+
snd_rzg2l: sound {
compatible = "simple-audio-card";
simple-audio-card,format = "i2s";
@@ -119,6 +151,27 @@ &i2c0 {
pinctrl-names = "default";

status = "okay";
+
+#ifdef CAM_INTERFACE_OV5645
+ ov5645: camera@3c {
+ compatible = "ovti,ov5645";
+ reg = <0x3c>;
+ clocks = <&ov5645_fixed_clk>;
+ clock-frequency = <24000000>;
+ vdddo-supply = <&ov5645_vdddo_1v8>;
+ vdda-supply = <&ov5645_vdda_2v8>;
+ vddd-supply = <&ov5645_vddd_1v5>;
+ enable-gpios = <&pinctrl RZG2L_GPIO(2, 0) GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&pinctrl RZG2L_GPIO(40, 2) GPIO_ACTIVE_LOW>;
+
+ port {
+ ov5645_ep: endpoint {
+ clock-lanes = <0>;
+ data-lanes = <1 2>;
+ };
+ };
+ };
+#endif
};

&i2c1 {
--
2.25.1


2023-02-16 17:54:16

by Lad, Prabhakar

[permalink] [raw]
Subject: [PATCH 3/3] arm64: dts: renesas: rzg2l-smarc: Enable CRU and CSI nodes

From: Lad Prabhakar <[email protected]>

Enable CRU and CSI nodes and tie the CSI remote endpoint with
OV5645 endpoint.

Signed-off-by: Lad Prabhakar <[email protected]>
---
.../boot/dts/renesas/r9a07g044l2-smarc.dts | 1 +
.../boot/dts/renesas/rz-smarc-common.dtsi | 23 +++++++++++++++++++
2 files changed, 24 insertions(+)

diff --git a/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts b/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
index 275e760324f3..25da4c93e0a4 100644
--- a/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
+++ b/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
@@ -9,6 +9,7 @@

/* comment the #define statement if OV5645 is not connected to CN1 */
#define CAM_INTERFACE_OV5645 1
+#define CRU_INTERFACE_AVAILABLE 1

#include "r9a07g044l2.dtsi"
#include "rzg2l-smarc-som.dtsi"
diff --git a/arch/arm64/boot/dts/renesas/rz-smarc-common.dtsi b/arch/arm64/boot/dts/renesas/rz-smarc-common.dtsi
index 915ad7e3935d..0f9a96ef5f6a 100644
--- a/arch/arm64/boot/dts/renesas/rz-smarc-common.dtsi
+++ b/arch/arm64/boot/dts/renesas/rz-smarc-common.dtsi
@@ -132,6 +132,28 @@ channel1 {
};
};

+#ifdef CRU_INTERFACE_AVAILABLE
+&cru {
+ status = "okay";
+};
+
+&csi2 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_in: endpoint {
+ clock-lanes = <0>;
+ data-lanes = <1 2>;
+#ifdef CAM_INTERFACE_OV5645
+ remote-endpoint = <&ov5645_ep>;
+#endif
+ };
+ };
+ };
+};
+#endif
+
&ehci0 {
dr_mode = "otg";
status = "okay";
@@ -168,6 +190,7 @@ port {
ov5645_ep: endpoint {
clock-lanes = <0>;
data-lanes = <1 2>;
+ remote-endpoint = <&csi2_in>;
};
};
};
--
2.25.1


2023-03-06 16:48:03

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH 1/3] arm64: dts: renesas: r9a07g044: Add CSI and CRU nodes

On Thu, Feb 16, 2023 at 6:54 PM Prabhakar <[email protected]> wrote:
> From: Lad Prabhakar <[email protected]>
>
> Add CSI and CRU nodes r9a07g044 (RZ/G2L) SoC DTSI.
>
> Signed-off-by: Lad Prabhakar <[email protected]>

Reviewed-by: Geert Uytterhoeven <[email protected]>

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2023-03-06 19:27:44

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH 2/3] arm64: dts: renesas: rzg2l-smarc: Add OV5645 node

Hi Prabhakar,

On Thu, Feb 16, 2023 at 6:57 PM Prabhakar <[email protected]> wrote:
> From: Lad Prabhakar <[email protected]>
>
> OV5645 sensor can be connected to the CN1 connector on the
> carrier board. This patch adds the ov5645 node under i2c0 node.
>
> Signed-off-by: Lad Prabhakar <[email protected]>

Thanks for your patch!

> --- a/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
> +++ b/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
> @@ -6,6 +6,10 @@
> */
>
> /dts-v1/;
> +
> +/* comment the #define statement if OV5645 is not connected to CN1 */
> +#define CAM_INTERFACE_OV5645 1

I believe the camera is optional ("can be connector" above).
So shouldn't this be commented out by default?

The rest LGTM, so with the above sorted out:
Reviewed-by: Geert Uytterhoeven <[email protected]>

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2023-03-06 19:28:17

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH 3/3] arm64: dts: renesas: rzg2l-smarc: Enable CRU and CSI nodes

On Thu, Feb 16, 2023 at 6:54 PM Prabhakar <[email protected]> wrote:
> From: Lad Prabhakar <[email protected]>
>
> Enable CRU and CSI nodes and tie the CSI remote endpoint with
> OV5645 endpoint.
>
> Signed-off-by: Lad Prabhakar <[email protected]>

Reviewed-by: Geert Uytterhoeven <[email protected]>

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2023-03-08 11:08:46

by Lad, Prabhakar

[permalink] [raw]
Subject: Re: [PATCH 2/3] arm64: dts: renesas: rzg2l-smarc: Add OV5645 node

Hi Geert.

Thank you for the review.

On Mon, Mar 6, 2023 at 7:27 PM Geert Uytterhoeven <[email protected]> wrote:
>
> Hi Prabhakar,
>
> On Thu, Feb 16, 2023 at 6:57 PM Prabhakar <[email protected]> wrote:
> > From: Lad Prabhakar <[email protected]>
> >
> > OV5645 sensor can be connected to the CN1 connector on the
> > carrier board. This patch adds the ov5645 node under i2c0 node.
> >
> > Signed-off-by: Lad Prabhakar <[email protected]>
>
> Thanks for your patch!
>
> > --- a/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
> > +++ b/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
> > @@ -6,6 +6,10 @@
> > */
> >
> > /dts-v1/;
> > +
> > +/* comment the #define statement if OV5645 is not connected to CN1 */
> > +#define CAM_INTERFACE_OV5645 1
>
> I believe the camera is optional ("can be connector" above).
> So shouldn't this be commented out by default?
>
Yep, that makes sense.

Shall I send this change or will you be generous to do this while applying ;)

Cheers,
Prabhakar


> The rest LGTM, so with the above sorted out:
> Reviewed-by: Geert Uytterhoeven <[email protected]>
>
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> -- Linus Torvalds

2023-03-08 12:47:25

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH 2/3] arm64: dts: renesas: rzg2l-smarc: Add OV5645 node

Hi Prabhakar,

On Wed, Mar 8, 2023 at 12:08 PM Lad, Prabhakar
<[email protected]> wrote:
> On Mon, Mar 6, 2023 at 7:27 PM Geert Uytterhoeven <[email protected]> wrote:
> > On Thu, Feb 16, 2023 at 6:57 PM Prabhakar <[email protected]> wrote:
> > > From: Lad Prabhakar <[email protected]>
> > >
> > > OV5645 sensor can be connected to the CN1 connector on the
> > > carrier board. This patch adds the ov5645 node under i2c0 node.
> > >
> > > Signed-off-by: Lad Prabhakar <[email protected]>
> >
> > Thanks for your patch!
> >
> > > --- a/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
> > > +++ b/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
> > > @@ -6,6 +6,10 @@
> > > */
> > >
> > > /dts-v1/;
> > > +
> > > +/* comment the #define statement if OV5645 is not connected to CN1 */
> > > +#define CAM_INTERFACE_OV5645 1
> >
> > I believe the camera is optional ("can be connector" above).
> > So shouldn't this be commented out by default?
> >
> Yep, that makes sense.
>
> Shall I send this change or will you be generous to do this while applying ;)

As this has an unresolved dependency on "[PATCH v2 0/2] Share RZ/G2L
SoC DTSI with RZ/V2L SoC", I cannot do that yet...

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2023-03-08 23:00:36

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH 2/3] arm64: dts: renesas: rzg2l-smarc: Add OV5645 node

On Mon, Mar 06, 2023 at 08:27:19PM +0100, Geert Uytterhoeven wrote:
> Hi Prabhakar,
>
> On Thu, Feb 16, 2023 at 6:57 PM Prabhakar <[email protected]> wrote:
> > From: Lad Prabhakar <[email protected]>
> >
> > OV5645 sensor can be connected to the CN1 connector on the
> > carrier board. This patch adds the ov5645 node under i2c0 node.
> >
> > Signed-off-by: Lad Prabhakar <[email protected]>
>
> Thanks for your patch!
>
> > --- a/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
> > +++ b/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
> > @@ -6,6 +6,10 @@
> > */
> >
> > /dts-v1/;
> > +
> > +/* comment the #define statement if OV5645 is not connected to CN1 */
> > +#define CAM_INTERFACE_OV5645 1
>
> I believe the camera is optional ("can be connector" above).
> So shouldn't this be commented out by default?

Even better, could you turn this into a DT overlay ?

> The rest LGTM, so with the above sorted out:
> Reviewed-by: Geert Uytterhoeven <[email protected]>

--
Regards,

Laurent Pinchart

2023-03-13 20:51:48

by Lad, Prabhakar

[permalink] [raw]
Subject: Re: [PATCH 2/3] arm64: dts: renesas: rzg2l-smarc: Add OV5645 node

Hi Geert,

On Wed, Mar 8, 2023 at 10:59 PM Laurent Pinchart
<[email protected]> wrote:
>
> On Mon, Mar 06, 2023 at 08:27:19PM +0100, Geert Uytterhoeven wrote:
> > Hi Prabhakar,
> >
> > On Thu, Feb 16, 2023 at 6:57 PM Prabhakar <[email protected]> wrote:
> > > From: Lad Prabhakar <[email protected]>
> > >
> > > OV5645 sensor can be connected to the CN1 connector on the
> > > carrier board. This patch adds the ov5645 node under i2c0 node.
> > >
> > > Signed-off-by: Lad Prabhakar <[email protected]>
> >
> > Thanks for your patch!
> >
> > > --- a/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
> > > +++ b/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
> > > @@ -6,6 +6,10 @@
> > > */
> > >
> > > /dts-v1/;
> > > +
> > > +/* comment the #define statement if OV5645 is not connected to CN1 */
> > > +#define CAM_INTERFACE_OV5645 1
> >
> > I believe the camera is optional ("can be connector" above).
> > So shouldn't this be commented out by default?
>
> Even better, could you turn this into a DT overlay ?
>
Please let me know your thoughts on this.

> > The rest LGTM, so with the above sorted out:
> > Reviewed-by: Geert Uytterhoeven <[email protected]>
>
Cheers,
Prabhakar

2023-03-14 08:21:46

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH 2/3] arm64: dts: renesas: rzg2l-smarc: Add OV5645 node

Hi Prabhakar,

On Mon, Mar 13, 2023 at 9:54 PM Lad, Prabhakar
<[email protected]> wrote:
> On Wed, Mar 8, 2023 at 10:59 PM Laurent Pinchart
> <[email protected]> wrote:
> > On Mon, Mar 06, 2023 at 08:27:19PM +0100, Geert Uytterhoeven wrote:
> > > On Thu, Feb 16, 2023 at 6:57 PM Prabhakar <[email protected]> wrote:
> > > > From: Lad Prabhakar <[email protected]>
> > > >
> > > > OV5645 sensor can be connected to the CN1 connector on the
> > > > carrier board. This patch adds the ov5645 node under i2c0 node.
> > > >
> > > > Signed-off-by: Lad Prabhakar <[email protected]>
> > >
> > > Thanks for your patch!
> > >
> > > > --- a/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
> > > > +++ b/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
> > > > @@ -6,6 +6,10 @@
> > > > */
> > > >
> > > > /dts-v1/;
> > > > +
> > > > +/* comment the #define statement if OV5645 is not connected to CN1 */
> > > > +#define CAM_INTERFACE_OV5645 1
> > >
> > > I believe the camera is optional ("can be connector" above).
> > > So shouldn't this be commented out by default?
> >
> > Even better, could you turn this into a DT overlay ?
> >
> Please let me know your thoughts on this.

I agree with Laurent.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds