Message ID | 12093630fdd7d8b43ebcb0340691e0f2200e26c6.1542097288.git-series.maxime.ripard@bootlin.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: Allwinner A10 CSI support | expand |
On Tue, Nov 13, 2018 at 1:54 PM Maxime Ripard <maxime.ripard@bootlin.com> wrote: > > Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com> > --- > arch/arm/boot/dts/sun7i-a20-bananapi.dts | 98 +++++++++++++++++++++++++- > 1 file changed, 98 insertions(+) > > diff --git a/arch/arm/boot/dts/sun7i-a20-bananapi.dts b/arch/arm/boot/dts/sun7i-a20-bananapi.dts > index 70dfc4ac0bb5..18dbff9f1ce9 100644 > --- a/arch/arm/boot/dts/sun7i-a20-bananapi.dts > +++ b/arch/arm/boot/dts/sun7i-a20-bananapi.dts > @@ -54,6 +54,9 @@ > compatible = "lemaker,bananapi", "allwinner,sun7i-a20"; > > aliases { > + i2c0 = &i2c0; > + i2c1 = &i2c1; > + i2c2 = &i2c2; > serial0 = &uart0; > serial1 = &uart3; > serial2 = &uart7; > @@ -63,6 +66,41 @@ > stdout-path = "serial0:115200n8"; > }; > > + reg_cam: cam { > + compatible = "regulator-fixed"; > + regulator-name = "cam"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + vin-supply = <®_vcc5v0>; > + gpio = <&pio 7 16 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + regulator-always-on; > + }; > + > + reg_cam_avdd: cam-avdd { > + compatible = "regulator-fixed"; > + regulator-name = "cam500b-avdd"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + vin-supply = <®_cam>; > + }; > + > + reg_cam_dovdd: cam-dovdd { > + compatible = "regulator-fixed"; > + regulator-name = "cam500b-dovdd"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + vin-supply = <®_cam>; > + }; > + > + reg_cam_dvdd: cam-dvdd { > + compatible = "regulator-fixed"; > + regulator-name = "cam500b-dvdd"; > + regulator-min-microvolt = <1500000>; > + regulator-max-microvolt = <1500000>; > + vin-supply = <®_cam>; > + }; > + > hdmi-connector { > compatible = "hdmi-connector"; > type = "a"; > @@ -120,6 +158,27 @@ > >; > }; > > +&csi0 { > + pinctrl-names = "default"; > + pinctrl-0 = <&csi0_pins_a>; > + status = "okay"; > + > + port { > + #address-cells = <1>; > + #size-cells = <0>; > + > + csi_from_ov5640: endpoint { > + remote-endpoint = <&ov5640_to_csi>; > + bus-width = <8>; > + data-shift = <2>; > + hsync-active = <1>; /* Active high */ > + vsync-active = <0>; /* Active low */ > + data-active = <1>; /* Active high */ > + pclk-sample = <1>; /* Rising */ > + }; > + }; > +}; > + > &de { > status = "okay"; > }; > @@ -167,6 +226,39 @@ > }; > }; > > +&i2c1 { > + pinctrl-names = "default"; > + pinctrl-0 = <&i2c1_pins_a>; > + status = "okay"; > + > + camera: camera@21 { > + compatible = "ovti,ov5640"; > + reg = <0x21>; > + clocks = <&ccu CLK_CSI0>; > + clock-names = "xclk"; > + assigned-clocks = <&ccu CLK_CSI0>; > + assigned-clock-rates = <24000000>; > + > + reset-gpios = <&pio 7 14 GPIO_ACTIVE_LOW>; > + powerdown-gpios = <&pio 7 19 GPIO_ACTIVE_HIGH>; > + AVDD-supply = <®_cam_avdd>; > + DOVDD-supply = <®_cam_dovdd>; > + DVDD-supply = <®_cam_dvdd>; > + > + port { > + ov5640_to_csi: endpoint { > + remote-endpoint = <&csi_from_ov5640>; > + bus-width = <8>; > + data-shift = <2>; > + hsync-active = <1>; /* Active high */ > + vsync-active = <0>; /* Active low */ > + data-active = <1>; /* Active high */ > + pclk-sample = <1>; /* Rising */ > + }; > + }; > + }; Does ov5640 need any further patches, wrt linux-next? I'm trying to test this on top of linux-next but the slave id seems not detecting. [ 2.304711] ov5640 1-0021: Linked as a consumer to regulator.5 [ 2.310639] ov5640 1-0021: Linked as a consumer to regulator.6 [ 2.316592] ov5640 1-0021: Linked as a consumer to regulator.4 [ 2.351540] ov5640 1-0021: ov5640_init_slave_id: failed with -6 [ 2.357543] ov5640 1-0021: Dropping the link to regulator.5 [ 2.363224] ov5640 1-0021: Dropping the link to regulator.6 [ 2.368829] ov5640 1-0021: Dropping the link to regulator.4 Here is the full log [1], please let me know if I miss anything, I even tried to remove MCLK pin [1] https://paste.ubuntu.com/p/yfy5cvs32x/
On Tue, Nov 27, 2018 at 12:26:09PM +0530, Jagan Teki wrote: > On Tue, Nov 13, 2018 at 1:54 PM Maxime Ripard <maxime.ripard@bootlin.com> wrote: > > > > Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com> > > --- > > arch/arm/boot/dts/sun7i-a20-bananapi.dts | 98 +++++++++++++++++++++++++- > > 1 file changed, 98 insertions(+) > > > > diff --git a/arch/arm/boot/dts/sun7i-a20-bananapi.dts b/arch/arm/boot/dts/sun7i-a20-bananapi.dts > > index 70dfc4ac0bb5..18dbff9f1ce9 100644 > > --- a/arch/arm/boot/dts/sun7i-a20-bananapi.dts > > +++ b/arch/arm/boot/dts/sun7i-a20-bananapi.dts > > @@ -54,6 +54,9 @@ > > compatible = "lemaker,bananapi", "allwinner,sun7i-a20"; > > > > aliases { > > + i2c0 = &i2c0; > > + i2c1 = &i2c1; > > + i2c2 = &i2c2; > > serial0 = &uart0; > > serial1 = &uart3; > > serial2 = &uart7; > > @@ -63,6 +66,41 @@ > > stdout-path = "serial0:115200n8"; > > }; > > > > + reg_cam: cam { > > + compatible = "regulator-fixed"; > > + regulator-name = "cam"; > > + regulator-min-microvolt = <5000000>; > > + regulator-max-microvolt = <5000000>; > > + vin-supply = <®_vcc5v0>; > > + gpio = <&pio 7 16 GPIO_ACTIVE_HIGH>; > > + enable-active-high; > > + regulator-always-on; > > + }; > > + > > + reg_cam_avdd: cam-avdd { > > + compatible = "regulator-fixed"; > > + regulator-name = "cam500b-avdd"; > > + regulator-min-microvolt = <2800000>; > > + regulator-max-microvolt = <2800000>; > > + vin-supply = <®_cam>; > > + }; > > + > > + reg_cam_dovdd: cam-dovdd { > > + compatible = "regulator-fixed"; > > + regulator-name = "cam500b-dovdd"; > > + regulator-min-microvolt = <1800000>; > > + regulator-max-microvolt = <1800000>; > > + vin-supply = <®_cam>; > > + }; > > + > > + reg_cam_dvdd: cam-dvdd { > > + compatible = "regulator-fixed"; > > + regulator-name = "cam500b-dvdd"; > > + regulator-min-microvolt = <1500000>; > > + regulator-max-microvolt = <1500000>; > > + vin-supply = <®_cam>; > > + }; > > + > > hdmi-connector { > > compatible = "hdmi-connector"; > > type = "a"; > > @@ -120,6 +158,27 @@ > > >; > > }; > > > > +&csi0 { > > + pinctrl-names = "default"; > > + pinctrl-0 = <&csi0_pins_a>; > > + status = "okay"; > > + > > + port { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + csi_from_ov5640: endpoint { > > + remote-endpoint = <&ov5640_to_csi>; > > + bus-width = <8>; > > + data-shift = <2>; > > + hsync-active = <1>; /* Active high */ > > + vsync-active = <0>; /* Active low */ > > + data-active = <1>; /* Active high */ > > + pclk-sample = <1>; /* Rising */ > > + }; > > + }; > > +}; > > + > > &de { > > status = "okay"; > > }; > > @@ -167,6 +226,39 @@ > > }; > > }; > > > > +&i2c1 { > > + pinctrl-names = "default"; > > + pinctrl-0 = <&i2c1_pins_a>; > > + status = "okay"; > > + > > + camera: camera@21 { > > + compatible = "ovti,ov5640"; > > + reg = <0x21>; > > + clocks = <&ccu CLK_CSI0>; > > + clock-names = "xclk"; > > + assigned-clocks = <&ccu CLK_CSI0>; > > + assigned-clock-rates = <24000000>; > > + > > + reset-gpios = <&pio 7 14 GPIO_ACTIVE_LOW>; > > + powerdown-gpios = <&pio 7 19 GPIO_ACTIVE_HIGH>; > > + AVDD-supply = <®_cam_avdd>; > > + DOVDD-supply = <®_cam_dovdd>; > > + DVDD-supply = <®_cam_dvdd>; > > + > > + port { > > + ov5640_to_csi: endpoint { > > + remote-endpoint = <&csi_from_ov5640>; > > + bus-width = <8>; > > + data-shift = <2>; > > + hsync-active = <1>; /* Active high */ > > + vsync-active = <0>; /* Active low */ > > + data-active = <1>; /* Active high */ > > + pclk-sample = <1>; /* Rising */ > > + }; > > + }; > > + }; > > Does ov5640 need any further patches, wrt linux-next? I'm trying to > test this on top of linux-next but the slave id seems not detecting. > > [ 2.304711] ov5640 1-0021: Linked as a consumer to regulator.5 > [ 2.310639] ov5640 1-0021: Linked as a consumer to regulator.6 > [ 2.316592] ov5640 1-0021: Linked as a consumer to regulator.4 > [ 2.351540] ov5640 1-0021: ov5640_init_slave_id: failed with -6 > [ 2.357543] ov5640 1-0021: Dropping the link to regulator.5 > [ 2.363224] ov5640 1-0021: Dropping the link to regulator.6 > [ 2.368829] ov5640 1-0021: Dropping the link to regulator.4 > > Here is the full log [1], please let me know if I miss anything, I > even tried to remove MCLK pin You seem to have made local modifications to your tree, what are they? This indicates that the communication over i2c doesn't work, what is your setup? Maxime
On Tue, Nov 27, 2018 at 4:01 PM Maxime Ripard <maxime.ripard@bootlin.com> wrote: > > On Tue, Nov 27, 2018 at 12:26:09PM +0530, Jagan Teki wrote: > > On Tue, Nov 13, 2018 at 1:54 PM Maxime Ripard <maxime.ripard@bootlin.com> wrote: > > > > > > Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com> > > > --- > > > arch/arm/boot/dts/sun7i-a20-bananapi.dts | 98 +++++++++++++++++++++++++- > > > 1 file changed, 98 insertions(+) > > > > > > diff --git a/arch/arm/boot/dts/sun7i-a20-bananapi.dts b/arch/arm/boot/dts/sun7i-a20-bananapi.dts > > > index 70dfc4ac0bb5..18dbff9f1ce9 100644 > > > --- a/arch/arm/boot/dts/sun7i-a20-bananapi.dts > > > +++ b/arch/arm/boot/dts/sun7i-a20-bananapi.dts > > > @@ -54,6 +54,9 @@ > > > compatible = "lemaker,bananapi", "allwinner,sun7i-a20"; > > > > > > aliases { > > > + i2c0 = &i2c0; > > > + i2c1 = &i2c1; > > > + i2c2 = &i2c2; > > > serial0 = &uart0; > > > serial1 = &uart3; > > > serial2 = &uart7; > > > @@ -63,6 +66,41 @@ > > > stdout-path = "serial0:115200n8"; > > > }; > > > > > > + reg_cam: cam { > > > + compatible = "regulator-fixed"; > > > + regulator-name = "cam"; > > > + regulator-min-microvolt = <5000000>; > > > + regulator-max-microvolt = <5000000>; > > > + vin-supply = <®_vcc5v0>; > > > + gpio = <&pio 7 16 GPIO_ACTIVE_HIGH>; > > > + enable-active-high; > > > + regulator-always-on; > > > + }; > > > + > > > + reg_cam_avdd: cam-avdd { > > > + compatible = "regulator-fixed"; > > > + regulator-name = "cam500b-avdd"; > > > + regulator-min-microvolt = <2800000>; > > > + regulator-max-microvolt = <2800000>; > > > + vin-supply = <®_cam>; > > > + }; > > > + > > > + reg_cam_dovdd: cam-dovdd { > > > + compatible = "regulator-fixed"; > > > + regulator-name = "cam500b-dovdd"; > > > + regulator-min-microvolt = <1800000>; > > > + regulator-max-microvolt = <1800000>; > > > + vin-supply = <®_cam>; > > > + }; > > > + > > > + reg_cam_dvdd: cam-dvdd { > > > + compatible = "regulator-fixed"; > > > + regulator-name = "cam500b-dvdd"; > > > + regulator-min-microvolt = <1500000>; > > > + regulator-max-microvolt = <1500000>; > > > + vin-supply = <®_cam>; > > > + }; > > > + > > > hdmi-connector { > > > compatible = "hdmi-connector"; > > > type = "a"; > > > @@ -120,6 +158,27 @@ > > > >; > > > }; > > > > > > +&csi0 { > > > + pinctrl-names = "default"; > > > + pinctrl-0 = <&csi0_pins_a>; > > > + status = "okay"; > > > + > > > + port { > > > + #address-cells = <1>; > > > + #size-cells = <0>; > > > + > > > + csi_from_ov5640: endpoint { > > > + remote-endpoint = <&ov5640_to_csi>; > > > + bus-width = <8>; > > > + data-shift = <2>; > > > + hsync-active = <1>; /* Active high */ > > > + vsync-active = <0>; /* Active low */ > > > + data-active = <1>; /* Active high */ > > > + pclk-sample = <1>; /* Rising */ > > > + }; > > > + }; > > > +}; > > > + > > > &de { > > > status = "okay"; > > > }; > > > @@ -167,6 +226,39 @@ > > > }; > > > }; > > > > > > +&i2c1 { > > > + pinctrl-names = "default"; > > > + pinctrl-0 = <&i2c1_pins_a>; > > > + status = "okay"; > > > + > > > + camera: camera@21 { > > > + compatible = "ovti,ov5640"; > > > + reg = <0x21>; > > > + clocks = <&ccu CLK_CSI0>; > > > + clock-names = "xclk"; > > > + assigned-clocks = <&ccu CLK_CSI0>; > > > + assigned-clock-rates = <24000000>; > > > + > > > + reset-gpios = <&pio 7 14 GPIO_ACTIVE_LOW>; > > > + powerdown-gpios = <&pio 7 19 GPIO_ACTIVE_HIGH>; > > > + AVDD-supply = <®_cam_avdd>; > > > + DOVDD-supply = <®_cam_dovdd>; > > > + DVDD-supply = <®_cam_dvdd>; > > > + > > > + port { > > > + ov5640_to_csi: endpoint { > > > + remote-endpoint = <&csi_from_ov5640>; > > > + bus-width = <8>; > > > + data-shift = <2>; > > > + hsync-active = <1>; /* Active high */ > > > + vsync-active = <0>; /* Active low */ > > > + data-active = <1>; /* Active high */ > > > + pclk-sample = <1>; /* Rising */ > > > + }; > > > + }; > > > + }; > > > > Does ov5640 need any further patches, wrt linux-next? I'm trying to > > test this on top of linux-next but the slave id seems not detecting. > > > > [ 2.304711] ov5640 1-0021: Linked as a consumer to regulator.5 > > [ 2.310639] ov5640 1-0021: Linked as a consumer to regulator.6 > > [ 2.316592] ov5640 1-0021: Linked as a consumer to regulator.4 > > [ 2.351540] ov5640 1-0021: ov5640_init_slave_id: failed with -6 > > [ 2.357543] ov5640 1-0021: Dropping the link to regulator.5 > > [ 2.363224] ov5640 1-0021: Dropping the link to regulator.6 > > [ 2.368829] ov5640 1-0021: Dropping the link to regulator.4 > > > > Here is the full log [1], please let me know if I miss anything, I > > even tried to remove MCLK pin > > You seem to have made local modifications to your tree, what are they? > This indicates that the communication over i2c doesn't work, what is > your setup? I just used your commits on linux-next [2], with the setup similar in Page 5 on datasheet[3]. The only difference is csi build issue, I have updated similar fix you mentioned on sun6i_csi [4] [2] https://github.com/amarula/linux-amarula/commits/CSI-A20 [3] https://www.tme.eu/gb/Document/187887186b98a8f78b47da2774a34f4c/BPI-CAMERA.pdf [4] https://github.com/amarula/linux-amarula/commit/a6762ecd38f000e2bd02dd255f6fd0c1ae755429#diff-0809a7f97ca58771c1cda186e73ec657
On Tue, Nov 27, 2018 at 04:30:55PM +0530, Jagan Teki wrote: > > > > +&i2c1 { > > > > + pinctrl-names = "default"; > > > > + pinctrl-0 = <&i2c1_pins_a>; > > > > + status = "okay"; > > > > + > > > > + camera: camera@21 { > > > > + compatible = "ovti,ov5640"; > > > > + reg = <0x21>; > > > > + clocks = <&ccu CLK_CSI0>; > > > > + clock-names = "xclk"; > > > > + assigned-clocks = <&ccu CLK_CSI0>; > > > > + assigned-clock-rates = <24000000>; > > > > + > > > > + reset-gpios = <&pio 7 14 GPIO_ACTIVE_LOW>; > > > > + powerdown-gpios = <&pio 7 19 GPIO_ACTIVE_HIGH>; > > > > + AVDD-supply = <®_cam_avdd>; > > > > + DOVDD-supply = <®_cam_dovdd>; > > > > + DVDD-supply = <®_cam_dvdd>; > > > > + > > > > + port { > > > > + ov5640_to_csi: endpoint { > > > > + remote-endpoint = <&csi_from_ov5640>; > > > > + bus-width = <8>; > > > > + data-shift = <2>; > > > > + hsync-active = <1>; /* Active high */ > > > > + vsync-active = <0>; /* Active low */ > > > > + data-active = <1>; /* Active high */ > > > > + pclk-sample = <1>; /* Rising */ > > > > + }; > > > > + }; > > > > + }; > > > > > > Does ov5640 need any further patches, wrt linux-next? I'm trying to > > > test this on top of linux-next but the slave id seems not detecting. > > > > > > [ 2.304711] ov5640 1-0021: Linked as a consumer to regulator.5 > > > [ 2.310639] ov5640 1-0021: Linked as a consumer to regulator.6 > > > [ 2.316592] ov5640 1-0021: Linked as a consumer to regulator.4 > > > [ 2.351540] ov5640 1-0021: ov5640_init_slave_id: failed with -6 > > > [ 2.357543] ov5640 1-0021: Dropping the link to regulator.5 > > > [ 2.363224] ov5640 1-0021: Dropping the link to regulator.6 > > > [ 2.368829] ov5640 1-0021: Dropping the link to regulator.4 > > > > > > Here is the full log [1], please let me know if I miss anything, I > > > even tried to remove MCLK pin > > > > You seem to have made local modifications to your tree, what are they? > > This indicates that the communication over i2c doesn't work, what is > > your setup? > > I just used your commits on linux-next [2], with the setup similar in > Page 5 on datasheet[3]. The only difference is csi build issue, I have > updated similar fix you mentioned on sun6i_csi [4] > > [2] https://github.com/amarula/linux-amarula/commits/CSI-A20 > [3] https://www.tme.eu/gb/Document/187887186b98a8f78b47da2774a34f4c/BPI-CAMERA.pdf > [4] https://github.com/amarula/linux-amarula/commit/a6762ecd38f000e2bd02dd255f6fd0c1ae755429#diff-0809a7f97ca58771c1cda186e73ec657 That branch doesn't have any commit with the same ID that you have in your boot log. Maxime
On Tue, Nov 27, 2018 at 8:49 PM Maxime Ripard <maxime.ripard@bootlin.com> wrote: > > On Tue, Nov 27, 2018 at 04:30:55PM +0530, Jagan Teki wrote: > > > > > +&i2c1 { > > > > > + pinctrl-names = "default"; > > > > > + pinctrl-0 = <&i2c1_pins_a>; > > > > > + status = "okay"; > > > > > + > > > > > + camera: camera@21 { > > > > > + compatible = "ovti,ov5640"; > > > > > + reg = <0x21>; > > > > > + clocks = <&ccu CLK_CSI0>; > > > > > + clock-names = "xclk"; > > > > > + assigned-clocks = <&ccu CLK_CSI0>; > > > > > + assigned-clock-rates = <24000000>; > > > > > + > > > > > + reset-gpios = <&pio 7 14 GPIO_ACTIVE_LOW>; > > > > > + powerdown-gpios = <&pio 7 19 GPIO_ACTIVE_HIGH>; > > > > > + AVDD-supply = <®_cam_avdd>; > > > > > + DOVDD-supply = <®_cam_dovdd>; > > > > > + DVDD-supply = <®_cam_dvdd>; > > > > > + > > > > > + port { > > > > > + ov5640_to_csi: endpoint { > > > > > + remote-endpoint = <&csi_from_ov5640>; > > > > > + bus-width = <8>; > > > > > + data-shift = <2>; > > > > > + hsync-active = <1>; /* Active high */ > > > > > + vsync-active = <0>; /* Active low */ > > > > > + data-active = <1>; /* Active high */ > > > > > + pclk-sample = <1>; /* Rising */ > > > > > + }; > > > > > + }; > > > > > + }; > > > > > > > > Does ov5640 need any further patches, wrt linux-next? I'm trying to > > > > test this on top of linux-next but the slave id seems not detecting. > > > > > > > > [ 2.304711] ov5640 1-0021: Linked as a consumer to regulator.5 > > > > [ 2.310639] ov5640 1-0021: Linked as a consumer to regulator.6 > > > > [ 2.316592] ov5640 1-0021: Linked as a consumer to regulator.4 > > > > [ 2.351540] ov5640 1-0021: ov5640_init_slave_id: failed with -6 > > > > [ 2.357543] ov5640 1-0021: Dropping the link to regulator.5 > > > > [ 2.363224] ov5640 1-0021: Dropping the link to regulator.6 > > > > [ 2.368829] ov5640 1-0021: Dropping the link to regulator.4 > > > > > > > > Here is the full log [1], please let me know if I miss anything, I > > > > even tried to remove MCLK pin > > > > > > You seem to have made local modifications to your tree, what are they? > > > This indicates that the communication over i2c doesn't work, what is > > > your setup? > > > > I just used your commits on linux-next [2], with the setup similar in > > Page 5 on datasheet[3]. The only difference is csi build issue, I have > > updated similar fix you mentioned on sun6i_csi [4] > > > > [2] https://github.com/amarula/linux-amarula/commits/CSI-A20 > > [3] https://www.tme.eu/gb/Document/187887186b98a8f78b47da2774a34f4c/BPI-CAMERA.pdf > > [4] https://github.com/amarula/linux-amarula/commit/a6762ecd38f000e2bd02dd255f6fd0c1ae755429#diff-0809a7f97ca58771c1cda186e73ec657 > > That branch doesn't have any commit with the same ID that you have in > your boot log. I have created this branch for your reference, here is the clean log on this [5] [5] https://paste.ubuntu.com/p/4bkFs5WG6c/
diff --git a/arch/arm/boot/dts/sun7i-a20-bananapi.dts b/arch/arm/boot/dts/sun7i-a20-bananapi.dts index 70dfc4ac0bb5..18dbff9f1ce9 100644 --- a/arch/arm/boot/dts/sun7i-a20-bananapi.dts +++ b/arch/arm/boot/dts/sun7i-a20-bananapi.dts @@ -54,6 +54,9 @@ compatible = "lemaker,bananapi", "allwinner,sun7i-a20"; aliases { + i2c0 = &i2c0; + i2c1 = &i2c1; + i2c2 = &i2c2; serial0 = &uart0; serial1 = &uart3; serial2 = &uart7; @@ -63,6 +66,41 @@ stdout-path = "serial0:115200n8"; }; + reg_cam: cam { + compatible = "regulator-fixed"; + regulator-name = "cam"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + vin-supply = <®_vcc5v0>; + gpio = <&pio 7 16 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-always-on; + }; + + reg_cam_avdd: cam-avdd { + compatible = "regulator-fixed"; + regulator-name = "cam500b-avdd"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + vin-supply = <®_cam>; + }; + + reg_cam_dovdd: cam-dovdd { + compatible = "regulator-fixed"; + regulator-name = "cam500b-dovdd"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + vin-supply = <®_cam>; + }; + + reg_cam_dvdd: cam-dvdd { + compatible = "regulator-fixed"; + regulator-name = "cam500b-dvdd"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <1500000>; + vin-supply = <®_cam>; + }; + hdmi-connector { compatible = "hdmi-connector"; type = "a"; @@ -120,6 +158,27 @@ >; }; +&csi0 { + pinctrl-names = "default"; + pinctrl-0 = <&csi0_pins_a>; + status = "okay"; + + port { + #address-cells = <1>; + #size-cells = <0>; + + csi_from_ov5640: endpoint { + remote-endpoint = <&ov5640_to_csi>; + bus-width = <8>; + data-shift = <2>; + hsync-active = <1>; /* Active high */ + vsync-active = <0>; /* Active low */ + data-active = <1>; /* Active high */ + pclk-sample = <1>; /* Rising */ + }; + }; +}; + &de { status = "okay"; }; @@ -167,6 +226,39 @@ }; }; +&i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins_a>; + status = "okay"; + + camera: camera@21 { + compatible = "ovti,ov5640"; + reg = <0x21>; + clocks = <&ccu CLK_CSI0>; + clock-names = "xclk"; + assigned-clocks = <&ccu CLK_CSI0>; + assigned-clock-rates = <24000000>; + + reset-gpios = <&pio 7 14 GPIO_ACTIVE_LOW>; + powerdown-gpios = <&pio 7 19 GPIO_ACTIVE_HIGH>; + AVDD-supply = <®_cam_avdd>; + DOVDD-supply = <®_cam_dovdd>; + DVDD-supply = <®_cam_dvdd>; + + port { + ov5640_to_csi: endpoint { + remote-endpoint = <&csi_from_ov5640>; + bus-width = <8>; + data-shift = <2>; + hsync-active = <1>; /* Active high */ + vsync-active = <0>; /* Active low */ + data-active = <1>; /* Active high */ + pclk-sample = <1>; /* Rising */ + }; + }; + }; +}; + &i2c2 { pinctrl-names = "default"; pinctrl-0 = <&i2c2_pins_a>; @@ -252,6 +344,12 @@ "IO-6", "IO-3", "IO-2", "IO-0", "", "", "", "", "", "", "", "", "", "", "", ""; + csi0_pins_a: csi_pins_a@0 { + pins = "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", + "PE6", "PE7", "PE8", "PE9", "PE10", "PE11"; + function = "csi0"; + }; + usb0_id_detect_pin: usb0_id_detect_pin@0 { pins = "PH4"; function = "gpio_in";
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com> --- arch/arm/boot/dts/sun7i-a20-bananapi.dts | 98 +++++++++++++++++++++++++- 1 file changed, 98 insertions(+)