Message ID | 20210419142345.53152-7-jacopo+renesas@jmondi.org (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Geert Uytterhoeven |
Headers | show |
Series | arm64: dts: renesas: Enable GMSL on R8A77970 V3M Eagle | expand |
Hi Jacopo and Kieran, Thank you for the patch. On Mon, Apr 19, 2021 at 04:23:44PM +0200, Jacopo Mondi wrote: > From: Kieran Bingham <kieran.bingham@ideasonboard.com> > > Describe the FAKRA connector available on Eagle board that allows > connecting GMSL camera modules such as IMI RDACM20 and RDACM21. > > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> > --- > arch/arm64/boot/dts/renesas/eagle-gmsl.dtsi | 178 ++++++++++++++++++++ > 1 file changed, 178 insertions(+) > create mode 100644 arch/arm64/boot/dts/renesas/eagle-gmsl.dtsi > > diff --git a/arch/arm64/boot/dts/renesas/eagle-gmsl.dtsi b/arch/arm64/boot/dts/renesas/eagle-gmsl.dtsi > new file mode 100644 > index 000000000000..d2e48dc3e820 > --- /dev/null > +++ b/arch/arm64/boot/dts/renesas/eagle-gmsl.dtsi > @@ -0,0 +1,178 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Device Tree Source (overlay) for the Eagle V3M GMSL connectors > + * > + * Copyright (C) 2017 Ideas on Board <kieran.bingham@ideasonboard.com> > + * Copyright (C) 2021 Jacopo Mondi <jacopo+renesas@jmondi.org> > + * > + * This overlay allows you to define GMSL cameras connected to the FAKRA > + * connectors on the Eagle-V3M (or compatible) board. > + * > + * The following cameras are currently supported: RDACM20 and RDACM21. > + * > + * The board .dts files that include this select which cameras are in use > + * by specifying the camera model with: > + * > + * #define GMSL_CAMERA_RDACM20 > + * or > + * #define GMSL_CAMERA_RDACM21 > + * > + * And which cameras are connected to the board by defining: > + * #define GMSL_CAMERA_0 > + * #define GMSL_CAMERA_1 > + * #define GMSL_CAMERA_2 > + * #define GMSL_CAMERA_3 > + */ > + > +#include <dt-bindings/gpio/gpio.h> > + > +/* Validate the board file settings. */ > +#if !defined(GMSL_CAMERA_RDACM20) && !defined(GMSL_CAMERA_RDACM21) > +#error "Camera model should be defined by the board file" > +#endif > + > +#if defined(GMSL_CAMERA_RDACM20) && defined(GMSL_CAMERA_RDACM21) > +#error "A single camera model should be selected" > +#endif This won't scale when we'll support more than two different cameras, but we'll switch to overlays then :-) Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > + > +#if !defined(GMSL_CAMERA_0) && !defined(GMSL_CAMERA_1) && \ > + !defined(GMSL_CAMERA_2) && !defined(GMSL_CAMERA_3) > +#error "At least one camera should be selected" > +#endif > + > +#if defined(GMSL_CAMERA_RDACM20) > +#define GMSL_CAMERA_MODEL "imi,rdacm20" > +#elif defined(GMSL_CAMERA_RDACM21) > +#define GMSL_CAMERA_MODEL "imi,rdacm21" > +#endif > + > +&vin0 { > + status = "okay"; > +}; > + > +&vin1 { > + status = "okay"; > +}; > + > +&vin2 { > + status = "okay"; > +}; > + > +&vin3 { > + status = "okay"; > +}; > + > +&gmsl { > + status = "okay"; > + > +#if defined(GMSL_CAMERA_RDACM21) > + maxim,reverse-channel-microvolt = <100000>; > +#endif > + > + ports { > +#ifdef GMSL_CAMERA_0 > + port@0 { > + max9286_in0: endpoint { > + remote-endpoint = <&fakra_con0>; > + }; > + }; > +#endif > + > +#ifdef GMSL_CAMERA_1 > + port@1 { > + max9286_in1: endpoint{ > + remote-endpoint = <&fakra_con1>; > + }; > + > + }; > +#endif > + > +#ifdef GMSL_CAMERA_2 > + port@2 { > + max9286_in2: endpoint { > + remote-endpoint = <&fakra_con2>; > + }; > + > + }; > +#endif > + > +#ifdef GMSL_CAMERA_3 > + port@3 { > + max9286_in3: endpoint { > + remote-endpoint = <&fakra_con3>; > + }; > + > + }; > +#endif > + }; > + > + i2c-mux { > +#ifdef GMSL_CAMERA_0 > + i2c@0 { > + status = "okay"; > + > + camera@51 { > + compatible = GMSL_CAMERA_MODEL; > + reg = <0x51>, <0x61>; > + > + port { > + fakra_con0: endpoint { > + remote-endpoint = <&max9286_in0>; > + }; > + }; > + }; > + }; > +#endif > + > +#ifdef GMSL_CAMERA_1 > + i2c@1 { > + status = "okay"; > + > + camera@52 { > + compatible = GMSL_CAMERA_MODEL; > + reg = <0x52>, <0x62>; > + > + port { > + fakra_con1: endpoint { > + remote-endpoint = <&max9286_in1>; > + }; > + }; > + }; > + }; > +#endif > + > +#ifdef GMSL_CAMERA_2 > + i2c@2 { > + status = "okay"; > + > + camera@53 { > + compatible = GMSL_CAMERA_MODEL; > + reg = <0x53>, <0x63>; > + > + port { > + fakra_con2: endpoint { > + remote-endpoint = <&max9286_in2>; > + }; > + }; > + }; > + }; > +#endif > + > +#ifdef GMSL_CAMERA_3 > + i2c@3 { > + status = "okay"; > + > + camera@54 { > + compatible = GMSL_CAMERA_MODEL; > + reg = <0x54>, <0x64>; > + > + port { > + fakra_con3: endpoint { > + remote-endpoint = <&max9286_in3>; > + }; > + }; > + }; > + }; > +#endif > + }; > +};
Hi Jacopo, On Thu, Jun 17, 2021 at 2:30 AM Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > On Mon, Apr 19, 2021 at 04:23:44PM +0200, Jacopo Mondi wrote: > > From: Kieran Bingham <kieran.bingham@ideasonboard.com> > > > > Describe the FAKRA connector available on Eagle board that allows > > connecting GMSL camera modules such as IMI RDACM20 and RDACM21. > > > > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> > > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> > > This won't scale when we'll support more than two different cameras, but > we'll switch to overlays then :-) FTR, overlay support has landed upstream. Still not sure about .dts vs .dtso... > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> The DT parts are still pending acceptance of "maxim,gpio-poc", right? Gr{oetje,eeting}s, Geert
diff --git a/arch/arm64/boot/dts/renesas/eagle-gmsl.dtsi b/arch/arm64/boot/dts/renesas/eagle-gmsl.dtsi new file mode 100644 index 000000000000..d2e48dc3e820 --- /dev/null +++ b/arch/arm64/boot/dts/renesas/eagle-gmsl.dtsi @@ -0,0 +1,178 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Device Tree Source (overlay) for the Eagle V3M GMSL connectors + * + * Copyright (C) 2017 Ideas on Board <kieran.bingham@ideasonboard.com> + * Copyright (C) 2021 Jacopo Mondi <jacopo+renesas@jmondi.org> + * + * This overlay allows you to define GMSL cameras connected to the FAKRA + * connectors on the Eagle-V3M (or compatible) board. + * + * The following cameras are currently supported: RDACM20 and RDACM21. + * + * The board .dts files that include this select which cameras are in use + * by specifying the camera model with: + * + * #define GMSL_CAMERA_RDACM20 + * or + * #define GMSL_CAMERA_RDACM21 + * + * And which cameras are connected to the board by defining: + * #define GMSL_CAMERA_0 + * #define GMSL_CAMERA_1 + * #define GMSL_CAMERA_2 + * #define GMSL_CAMERA_3 + */ + +#include <dt-bindings/gpio/gpio.h> + +/* Validate the board file settings. */ +#if !defined(GMSL_CAMERA_RDACM20) && !defined(GMSL_CAMERA_RDACM21) +#error "Camera model should be defined by the board file" +#endif + +#if defined(GMSL_CAMERA_RDACM20) && defined(GMSL_CAMERA_RDACM21) +#error "A single camera model should be selected" +#endif + +#if !defined(GMSL_CAMERA_0) && !defined(GMSL_CAMERA_1) && \ + !defined(GMSL_CAMERA_2) && !defined(GMSL_CAMERA_3) +#error "At least one camera should be selected" +#endif + +#if defined(GMSL_CAMERA_RDACM20) +#define GMSL_CAMERA_MODEL "imi,rdacm20" +#elif defined(GMSL_CAMERA_RDACM21) +#define GMSL_CAMERA_MODEL "imi,rdacm21" +#endif + +&vin0 { + status = "okay"; +}; + +&vin1 { + status = "okay"; +}; + +&vin2 { + status = "okay"; +}; + +&vin3 { + status = "okay"; +}; + +&gmsl { + status = "okay"; + +#if defined(GMSL_CAMERA_RDACM21) + maxim,reverse-channel-microvolt = <100000>; +#endif + + ports { +#ifdef GMSL_CAMERA_0 + port@0 { + max9286_in0: endpoint { + remote-endpoint = <&fakra_con0>; + }; + }; +#endif + +#ifdef GMSL_CAMERA_1 + port@1 { + max9286_in1: endpoint{ + remote-endpoint = <&fakra_con1>; + }; + + }; +#endif + +#ifdef GMSL_CAMERA_2 + port@2 { + max9286_in2: endpoint { + remote-endpoint = <&fakra_con2>; + }; + + }; +#endif + +#ifdef GMSL_CAMERA_3 + port@3 { + max9286_in3: endpoint { + remote-endpoint = <&fakra_con3>; + }; + + }; +#endif + }; + + i2c-mux { +#ifdef GMSL_CAMERA_0 + i2c@0 { + status = "okay"; + + camera@51 { + compatible = GMSL_CAMERA_MODEL; + reg = <0x51>, <0x61>; + + port { + fakra_con0: endpoint { + remote-endpoint = <&max9286_in0>; + }; + }; + }; + }; +#endif + +#ifdef GMSL_CAMERA_1 + i2c@1 { + status = "okay"; + + camera@52 { + compatible = GMSL_CAMERA_MODEL; + reg = <0x52>, <0x62>; + + port { + fakra_con1: endpoint { + remote-endpoint = <&max9286_in1>; + }; + }; + }; + }; +#endif + +#ifdef GMSL_CAMERA_2 + i2c@2 { + status = "okay"; + + camera@53 { + compatible = GMSL_CAMERA_MODEL; + reg = <0x53>, <0x63>; + + port { + fakra_con2: endpoint { + remote-endpoint = <&max9286_in2>; + }; + }; + }; + }; +#endif + +#ifdef GMSL_CAMERA_3 + i2c@3 { + status = "okay"; + + camera@54 { + compatible = GMSL_CAMERA_MODEL; + reg = <0x54>, <0x64>; + + port { + fakra_con3: endpoint { + remote-endpoint = <&max9286_in3>; + }; + }; + }; + }; +#endif + }; +};