Hi, On Thu, Apr 18, 2019 at 02:08:13PM +0530, Jagan Teki wrote: > Amarula A64-Relic board by default bound with OV5640 camera, > so add support for it with below pin information. > > - PE13, PE12 via i2c-gpio bitbanging > - CLK_CSI_MCLK as external clock > - PE1 as external clock pin muxing > - ALDO1 as AVDD supply > - DLDO3 as DOVDD supply > - ELDO3 as DVDD supply > - PE14 gpio for reset pin > - PE15 gpio for powerdown pin > > Signed-off-by: Jagan Teki > --- > > .../allwinner/sun50i-a64-amarula-relic.dts | 53 +++++++++++++++++++ > 1 file changed, 53 insertions(+) > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-amarula-relic.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-amarula-relic.dts > index 3819ce396073..56c76b712e3b 100644 > --- a/arch/arm64/boot/dts/allwinner/sun50i-a64-amarula-relic.dts > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-amarula-relic.dts > @@ -22,6 +22,41 @@ > stdout-path = "serial0:115200n8"; > }; > > + i2c-csi { That node should be named i2c > + compatible = "i2c-gpio"; > + sda-gpios = <&pio 4 13 GPIO_ACTIVE_HIGH>; /* CSI-SDA: PE13 */ > + scl-gpios = <&pio 4 12 GPIO_ACTIVE_HIGH>; /* CSI-SCK: PE12 */ There's no need to document what those pins are here for, it's already in the property name. > + i2c-gpio,delay-us = <5>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + ov5640: camera@3c { > + compatible = "ovti,ov5640"; > + reg = <0x3c>; > + pinctrl-names = "default"; > + pinctrl-0 = <&csi_mclk_pin>; > + clocks = <&ccu CLK_CSI_MCLK>; > + clock-names = "xclk"; > + > + AVDD-supply = <®_aldo1>; > + DOVDD-supply = <®_dldo3>; > + DVDD-supply = <®_eldo3>; > + reset-gpios = <&pio 4 14 GPIO_ACTIVE_LOW>; /* CSI-RST-R: PE14 */ > + powerdown-gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>; /* CSI-STBY-R: PE15 */ > + > + port { > + ov5640_ep: endpoint { > + remote-endpoint = <&csi_ep>; > + bus-width = <8>; > + hsync-active = <1>; /* Active high */ > + vsync-active = <0>; /* Active low */ > + data-active = <1>; /* Active high */ > + pclk-sample = <1>; /* Rising */ > + }; > + }; > + }; > + }; > + > wifi_pwrseq: wifi-pwrseq { > compatible = "mmc-pwrseq-simple"; > clocks = <&rtc 1>; > @@ -30,6 +65,24 @@ > }; > }; > > +&csi { > + status = "okay"; > + > + port { > + #address-cells = <1>; > + #size-cells = <0>; This isn't needed, you don't have a reg property in your child node. Maxime -- Maxime Ripard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com