2020-03-22 14:14:41

by Prabhakar Mahadev Lad

[permalink] [raw]
Subject: [PATCH v2] arm64: dts: renesas: r8a774c0-cat874: Add support for AISTARVISION MIPI Adapter V2.1

This patch adds support for AISTARVISION MIPI Adapter V2.1 board connected
to G2E board. Common file aistarvision-mipi-adapter-2.1.dtsi is created
which have the camera endpoint nodes for imx219 and ov5645 so that this can
be re-used with other G2x platforms.

r8a774c0-ek874-mipi-2.1.dts file enables the required VIN/CSI nodes and by
default ties ov5645 camera endpoint to CSI2.

Signed-off-by: Lad Prabhakar <[email protected]>
---
Changes for v2:
* Dropped #{address,size}-cells
* Dropped unit address and reg for port

arch/arm64/boot/dts/renesas/Makefile | 3 +-
.../aistarvision-mipi-adapter-2.1.dtsi | 95 +++++++++++++++++++
.../dts/renesas/r8a774c0-ek874-mipi-2.1.dts | 75 +++++++++++++++
3 files changed, 172 insertions(+), 1 deletion(-)
create mode 100644 arch/arm64/boot/dts/renesas/aistarvision-mipi-adapter-2.1.dtsi
create mode 100644 arch/arm64/boot/dts/renesas/r8a774c0-ek874-mipi-2.1.dts

diff --git a/arch/arm64/boot/dts/renesas/Makefile b/arch/arm64/boot/dts/renesas/Makefile
index 2153842321ce..9f5c53d62f5e 100644
--- a/arch/arm64/boot/dts/renesas/Makefile
+++ b/arch/arm64/boot/dts/renesas/Makefile
@@ -4,7 +4,8 @@ dtb-$(CONFIG_ARCH_R8A774A1) += r8a774a1-hihope-rzg2m-ex.dtb
dtb-$(CONFIG_ARCH_R8A774B1) += r8a774b1-hihope-rzg2n.dtb
dtb-$(CONFIG_ARCH_R8A774B1) += r8a774b1-hihope-rzg2n-ex.dtb
dtb-$(CONFIG_ARCH_R8A774C0) += r8a774c0-cat874.dtb r8a774c0-ek874.dtb \
- r8a774c0-ek874-idk-2121wr.dtb
+ r8a774c0-ek874-idk-2121wr.dtb \
+ r8a774c0-ek874-mipi-2.1.dtb
dtb-$(CONFIG_ARCH_R8A7795) += r8a77950-salvator-x.dtb
dtb-$(CONFIG_ARCH_R8A7795) += r8a77950-ulcb.dtb r8a77950-ulcb-kf.dtb
dtb-$(CONFIG_ARCH_R8A7795) += r8a77951-salvator-x.dtb r8a77951-salvator-xs.dtb
diff --git a/arch/arm64/boot/dts/renesas/aistarvision-mipi-adapter-2.1.dtsi b/arch/arm64/boot/dts/renesas/aistarvision-mipi-adapter-2.1.dtsi
new file mode 100644
index 000000000000..d2b656579b54
--- /dev/null
+++ b/arch/arm64/boot/dts/renesas/aistarvision-mipi-adapter-2.1.dtsi
@@ -0,0 +1,95 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree Source for the AISTARVISION MIPI Adapter V2.1
+ *
+ * Copyright (C) 2020 Renesas Electronics Corp.
+ */
+
+/ {
+ 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;
+ };
+
+ imx219_vana_2v8: 2p8v {
+ compatible = "regulator-fixed";
+ regulator-name = "camera_vana";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-always-on;
+ };
+
+ imx219_vdig_1v8: 1p8v {
+ compatible = "regulator-fixed";
+ regulator-name = "camera_vdig";
+ regulator-min-microvolt = <1500000>;
+ regulator-max-microvolt = <1500000>;
+ regulator-always-on;
+ };
+
+ imx219_vddl_1v2: 1p2v {
+ compatible = "regulator-fixed";
+ regulator-name = "camera_vddl";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-always-on;
+ };
+
+ imx219_clk: imx219_clk {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <24000000>;
+ };
+};
+
+&MIPI_PARENT_I2C {
+ ov5645: ov5645@3c {
+ compatible = "ovti,ov5645";
+ reg = <0x3c>;
+
+ clock-names = "xclk";
+
+ vdddo-supply = <&ov5645_vdddo_1v8>;
+ vdda-supply = <&ov5645_vdda_2v8>;
+ vddd-supply = <&ov5645_vddd_1v5>;
+
+ port {
+ ov5645_ep: endpoint {
+ };
+ };
+ };
+
+ imx219: imx219@10 {
+ compatible = "sony,imx219";
+ reg = <0x10>;
+
+ VANA-supply = <&imx219_vana_2v8>;
+ VDIG-supply = <&imx219_vdig_1v8>;
+ VDDL-supply = <&imx219_vddl_1v2>;
+ clocks = <&imx219_clk>;
+
+ port {
+ imx219_ep: endpoint {
+ };
+ };
+ };
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a774c0-ek874-mipi-2.1.dts b/arch/arm64/boot/dts/renesas/r8a774c0-ek874-mipi-2.1.dts
new file mode 100644
index 000000000000..62000cc933bf
--- /dev/null
+++ b/arch/arm64/boot/dts/renesas/r8a774c0-ek874-mipi-2.1.dts
@@ -0,0 +1,75 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree Source for the Silicon Linux RZ/G2E 96board platform (CAT874)
+ * connected with aistarvision-mipi-v2-adapter board
+ *
+ * Copyright (C) 2020 Renesas Electronics Corp.
+ */
+
+/dts-v1/;
+#include "r8a774c0-ek874.dts"
+#define MIPI_PARENT_I2C i2c3
+#include "aistarvision-mipi-adapter-2.1.dtsi"
+
+/ {
+ model = "Silicon Linux RZ/G2E evaluation kit EK874 (CAT874 + CAT875) with aistarvision-mipi-v2-adapter board";
+ compatible = "si-linux,cat875", "si-linux,cat874", "renesas,r8a774c0";
+};
+
+&i2c3 {
+ status = "okay";
+};
+
+&vin4 {
+ status = "okay";
+};
+
+&vin5 {
+ status = "okay";
+};
+
+&csi40 {
+ status = "okay";
+
+ ports {
+ port {
+ csi40_in: endpoint {
+ clock-lanes = <0>;
+ data-lanes = <1 2>;
+ remote-endpoint = <&ov5645_ep>;
+ };
+ };
+ };
+};
+
+&ov5645 {
+ enable-gpios = <&gpio5 5 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
+
+ clocks = <&cpg CPG_MOD 716>;
+ clock-frequency = <24000000>;
+
+ port {
+ ov5645_ep: endpoint {
+ clock-lanes = <0>;
+ data-lanes = <1 2>;
+ remote-endpoint = <&csi40_in>;
+ };
+ };
+};
+
+&imx219 {
+ port {
+ imx219_ep: endpoint {
+ clock-lanes = <0>;
+ data-lanes = <1 2>;
+ link-frequencies = /bits/ 64 <456000000>;
+ /* uncomment remote-endpoint property to tie imx219 to
+ * CSI2 also make sure remote-endpoint for ov5645 camera
+ * is commented and remote endpoint phandle in csi40_in
+ * is imx219_ep
+ */
+ /* remote-endpoint = <&csi40_in>; */
+ };
+ };
+};
--
2.20.1


2020-04-01 10:08:55

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH v2] arm64: dts: renesas: r8a774c0-cat874: Add support for AISTARVISION MIPI Adapter V2.1

Hi Prabhakar,

On Sun, Mar 22, 2020 at 3:13 PM Lad Prabhakar
<[email protected]> wrote:
> This patch adds support for AISTARVISION MIPI Adapter V2.1 board connected
> to G2E board. Common file aistarvision-mipi-adapter-2.1.dtsi is created
> which have the camera endpoint nodes for imx219 and ov5645 so that this can
> be re-used with other G2x platforms.
>
> r8a774c0-ek874-mipi-2.1.dts file enables the required VIN/CSI nodes and by
> default ties ov5645 camera endpoint to CSI2.
>
> Signed-off-by: Lad Prabhakar <[email protected]>
> ---
> Changes for v2:
> * Dropped #{address,size}-cells
> * Dropped unit address and reg for port

Thanks for the update!

> --- /dev/null
> +++ b/arch/arm64/boot/dts/renesas/r8a774c0-ek874-mipi-2.1.dts
> @@ -0,0 +1,75 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Device Tree Source for the Silicon Linux RZ/G2E 96board platform (CAT874)
> + * connected with aistarvision-mipi-v2-adapter board
> + *
> + * Copyright (C) 2020 Renesas Electronics Corp.
> + */
> +
> +/dts-v1/;
> +#include "r8a774c0-ek874.dts"
> +#define MIPI_PARENT_I2C i2c3
> +#include "aistarvision-mipi-adapter-2.1.dtsi"
> +
> +/ {
> + model = "Silicon Linux RZ/G2E evaluation kit EK874 (CAT874 + CAT875) with aistarvision-mipi-v2-adapter board";
> + compatible = "si-linux,cat875", "si-linux,cat874", "renesas,r8a774c0";
> +};
> +
> +&i2c3 {
> + status = "okay";
> +};
> +
> +&vin4 {
> + status = "okay";
> +};
> +
> +&vin5 {
> + status = "okay";
> +};
> +
> +&csi40 {
> + status = "okay";
> +
> + ports {
> + port {
> + csi40_in: endpoint {
> + clock-lanes = <0>;
> + data-lanes = <1 2>;
> + remote-endpoint = <&ov5645_ep>;
> + };
> + };
> + };
> +};
> +
> +&ov5645 {
> + enable-gpios = <&gpio5 5 GPIO_ACTIVE_HIGH>;
> + reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
> +
> + clocks = <&cpg CPG_MOD 716>;

I'm still a bit puzzled here.

CPG_MOD 716 is the CSI40 module clock, which runs at 25 MHz, and is
presumably output to the CSI0_CLKP/N pair? Or is its rate controlled
by the CSI driver?
On the MIPI board[*], that signal becomes MIPI1_CP/N.
However, the MIPI board also has a "Clock Source Selection" header,
which allows you to choose one of:
1. The fixed 24 MHz crystal, which is apparently used for the imx219
camera, as described by imx219_clk above, and matches the wanted
clock rate specified below?
2. CSI1_CLK,
3. CSI2_CLK.
The last two become CLK0/1 on the CAT874 board, which are driven by
TPU0TO0/1.

Which setting do you use for the ov5645 camera?

> + clock-frequency = <24000000>;

After your patch for the ov5645 driver, this should be replaced by
assigned-clock-rates?

The rest looks good to me, but I'm not a multi-media/camera expert.

[*] https://github.com/Kevin-WSCU/96Boards-Camera

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

2020-04-01 17:40:45

by Lad, Prabhakar

[permalink] [raw]
Subject: Re: [PATCH v2] arm64: dts: renesas: r8a774c0-cat874: Add support for AISTARVISION MIPI Adapter V2.1

Hi Geert,

Thank you for the review.


On Wed, Apr 1, 2020 at 10:45 AM Geert Uytterhoeven <[email protected]> wrote:
>
> Hi Prabhakar,
>
> On Sun, Mar 22, 2020 at 3:13 PM Lad Prabhakar
> <[email protected]> wrote:
> > This patch adds support for AISTARVISION MIPI Adapter V2.1 board connected
> > to G2E board. Common file aistarvision-mipi-adapter-2.1.dtsi is created
> > which have the camera endpoint nodes for imx219 and ov5645 so that this can
> > be re-used with other G2x platforms.
> >
> > r8a774c0-ek874-mipi-2.1.dts file enables the required VIN/CSI nodes and by
> > default ties ov5645 camera endpoint to CSI2.
> >
> > Signed-off-by: Lad Prabhakar <[email protected]>
> > ---
> > Changes for v2:
> > * Dropped #{address,size}-cells
> > * Dropped unit address and reg for port
>
> Thanks for the update!
>
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/renesas/r8a774c0-ek874-mipi-2.1.dts
> > @@ -0,0 +1,75 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Device Tree Source for the Silicon Linux RZ/G2E 96board platform (CAT874)
> > + * connected with aistarvision-mipi-v2-adapter board
> > + *
> > + * Copyright (C) 2020 Renesas Electronics Corp.
> > + */
> > +
> > +/dts-v1/;
> > +#include "r8a774c0-ek874.dts"
> > +#define MIPI_PARENT_I2C i2c3
> > +#include "aistarvision-mipi-adapter-2.1.dtsi"
> > +
> > +/ {
> > + model = "Silicon Linux RZ/G2E evaluation kit EK874 (CAT874 + CAT875) with aistarvision-mipi-v2-adapter board";
> > + compatible = "si-linux,cat875", "si-linux,cat874", "renesas,r8a774c0";
> > +};
> > +
> > +&i2c3 {
> > + status = "okay";
> > +};
> > +
> > +&vin4 {
> > + status = "okay";
> > +};
> > +
> > +&vin5 {
> > + status = "okay";
> > +};
> > +
> > +&csi40 {
> > + status = "okay";
> > +
> > + ports {
> > + port {
> > + csi40_in: endpoint {
> > + clock-lanes = <0>;
> > + data-lanes = <1 2>;
> > + remote-endpoint = <&ov5645_ep>;
> > + };
> > + };
> > + };
> > +};
> > +
> > +&ov5645 {
> > + enable-gpios = <&gpio5 5 GPIO_ACTIVE_HIGH>;
> > + reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
> > +
> > + clocks = <&cpg CPG_MOD 716>;
>
> I'm still a bit puzzled here.
>
> CPG_MOD 716 is the CSI40 module clock, which runs at 25 MHz, and is
> presumably output to the CSI0_CLKP/N pair? Or is its rate controlled
> by the CSI driver?
> On the MIPI board[*], that signal becomes MIPI1_CP/N.
> However, the MIPI board also has a "Clock Source Selection" header,
> which allows you to choose one of:
> 1. The fixed 24 MHz crystal, which is apparently used for the imx219
> camera, as described by imx219_clk above, and matches the wanted
> clock rate specified below?
> 2. CSI1_CLK,
> 3. CSI2_CLK.
> The last two become CLK0/1 on the CAT874 board, which are driven by
> TPU0TO0/1.
>
Yes my bad for not looking into this earlier, for both ov5645 and
imx219 I do short
pins 3-4 and 5-6 of J14, so for both the sensors the clocks should be
fixed clock
of 24Mhz, so I changed it imx219_clk to osc25250_clk and passed the same to
ov5645 node. (imx219 sensor can take in a external clock from 6-27Mhz [2])

> Which setting do you use for the ov5645 camera?
>
> > + clock-frequency = <24000000>;
>
> After your patch for the ov5645 driver, this should be replaced by
> assigned-clock-rates?
>
After v4 [1] it was decided that the frequency should be set by driver itself,
so I'll be revisiting ov5645 driver.

[1] https://patchwork.linuxtv.org/patch/62185/
[2] https://publiclab.org/system/images/photos/000/023/294/original/RASPBERRY_PI_CAMERA_V2_DATASHEET_IMX219PQH5_7.0.0_Datasheet_XXX.PDF

Cheers,
--Prabhakar

> The rest looks good to me, but I'm not a multi-media/camera expert.
>
> [*] https://github.com/Kevin-WSCU/96Boards-Camera
>
> 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