Message ID | 20231115-csi_dts-v1-4-99fc535b2bde@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: dts: ti: Enable CSI cameras for AM62 family | expand |
On 11/15/23 3:51 AM, Jai Luthra wrote: > Three different OV5640 modules are supported using the FFC connector on > BeaglePlay: > - Digilent PCam 5C > - ALINX AN5641 > - TEVI-OV5640-*-RPI > > The Digilent and ALINX modules supply a 12Mhz XCLK to the sensor, while > the TEVI module supplies a 24Mhz XCLK, thus requiring a separate > overlay. > > Signed-off-by: Jai Luthra <j-luthra@ti.com> > --- > arch/arm64/boot/dts/ti/Makefile | 7 ++ > .../dts/ti/k3-am625-beagleplay-csi2-ov5640.dtso | 77 ++++++++++++++++++++++ > .../ti/k3-am625-beagleplay-csi2-tevi-ov5640.dtso | 77 ++++++++++++++++++++++ > 3 files changed, 161 insertions(+) > > diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile > index 77a347f9f47d..e49e32414560 100644 > --- a/arch/arm64/boot/dts/ti/Makefile > +++ b/arch/arm64/boot/dts/ti/Makefile > @@ -9,9 +9,15 @@ > # alphabetically. > > # Boards with AM62x SoC > +k3-am625-beagleplay-csi2-ov5640-dtbs := k3-am625-beagleplay.dtb \ > + k3-am625-beagleplay-csi2-ov5640.dtbo > +k3-am625-beagleplay-csi2-tevi-ov5640-dtbs := k3-am625-beagleplay.dtb \ > + k3-am625-beagleplay-csi2-tevi-ov5640.dtbo > k3-am625-sk-hdmi-audio-dtbs := k3-am625-sk.dtb k3-am62x-sk-hdmi-audio.dtbo > k3-am62-lp-sk-hdmi-audio-dtbs := k3-am62-lp-sk.dtb k3-am62x-sk-hdmi-audio.dtbo > dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay.dtb > +dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-ov5640.dtb > +dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-tevi-ov5640.dtb We don't need .dtb files for each overlay combination, you should leave these as overlays only, and just apply them at boot time as needed. To test apply them at build time, you can use the CONFIG_OF_ALL_DTBS method that Rob suggested here[0]. # Build time test only, enabled by CONFIG_OF_ALL_DTBS dtb- += \ k3-am625-beagleplay-overlay-test1.dtb \ k3-am625-beagleplay-overlay-test2.dtb k3-am625-beagleplay-overlay-test1-dtbs := k3-am625-beagleplay.dtb \ k3-am625-beagleplay-csi2-ov5640.dtbo k3-am625-beagleplay-overlay-test1-dtbs := k3-am625-beagleplay.dtb \ k3-am625-beagleplay-csi2-tevi-ov5640.dtbo dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-ov5640.dtbo dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-tevi-ov5640.dtbo [0] https://lore.kernel.org/all/CAL_Jsq+8jisrwEqzz7tZnsV9g2+LmThwpO7sHRFA-zh+6q8XuA@mail.gmail.com/ > dtb-$(CONFIG_ARCH_K3) += k3-am625-phyboard-lyra-rdk.dtb > dtb-$(CONFIG_ARCH_K3) += k3-am625-sk.dtb > dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-nonwifi-dahlia.dtb > @@ -81,6 +87,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-am69-sk.dtb > dtb-$(CONFIG_ARCH_K3) += k3-j784s4-evm.dtb > > # Enable support for device-tree overlays > +DTC_FLAGS_k3-am625-beagleplay += -@ Having any DTBO applied to the base during build will add symbols to the base for you, no need to add this line. (Please check that this is true for the OF_ALL_DTBS case above, I've not checked yet, we should fix if not). I plan to remove the same below in later patches so folks will stop adding more of these lines. Andrew > DTC_FLAGS_k3-am625-sk += -@ > DTC_FLAGS_k3-am62-lp-sk += -@ > DTC_FLAGS_k3-am6548-iot2050-advanced-m2 += -@ > diff --git a/arch/arm64/boot/dts/ti/k3-am625-beagleplay-csi2-ov5640.dtso b/arch/arm64/boot/dts/ti/k3-am625-beagleplay-csi2-ov5640.dtso > new file mode 100644 > index 000000000000..5e80ca7033ba > --- /dev/null > +++ b/arch/arm64/boot/dts/ti/k3-am625-beagleplay-csi2-ov5640.dtso > @@ -0,0 +1,77 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * ALINX AN5641 & Digilent PCam 5C - OV5640 camera module > + * Copyright (C) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/ > + */ > + > +/dts-v1/; > +/plugin/; > + > +#include <dt-bindings/gpio/gpio.h> > + > +&{/} { > + clk_ov5640_fixed: ov5640-xclk { > + compatible = "fixed-clock"; > + #clock-cells = <0>; > + clock-frequency = <12000000>; > + }; > +}; > + > +&main_gpio0 { > + p11-hog { > + /* P11 - CSI2_CAMERA_GPIO1 */ > + gpio-hog; > + gpios = <11 GPIO_ACTIVE_HIGH>; > + output-high; > + line-name = "CSI2_CAMERA_GPIO1"; > + }; > +}; > + > +&wkup_i2c0 { > + #address-cells = <1>; > + #size-cells = <0>; > + status = "okay"; > + > + ov5640: camera@3c { > + compatible = "ovti,ov5640"; > + reg = <0x3c>; > + > + clocks = <&clk_ov5640_fixed>; > + clock-names = "xclk"; > + > + port { > + csi2_cam0: endpoint { > + remote-endpoint = <&csi2rx0_in_sensor>; > + clock-lanes = <0>; > + data-lanes = <1 2>; > + }; > + }; > + }; > +}; > + > +&cdns_csi2rx0 { > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + csi0_port0: port@0 { > + reg = <0>; > + status = "okay"; > + > + csi2rx0_in_sensor: endpoint { > + remote-endpoint = <&csi2_cam0>; > + bus-type = <4>; /* CSI2 DPHY. */ > + clock-lanes = <0>; > + data-lanes = <1 2>; > + }; > + }; > + }; > +}; > + > +&dphy0 { > + status = "okay"; > +}; > + > +&ti_csi2rx0 { > + status = "okay"; > +}; > diff --git a/arch/arm64/boot/dts/ti/k3-am625-beagleplay-csi2-tevi-ov5640.dtso b/arch/arm64/boot/dts/ti/k3-am625-beagleplay-csi2-tevi-ov5640.dtso > new file mode 100644 > index 000000000000..5e1cbbc27c8f > --- /dev/null > +++ b/arch/arm64/boot/dts/ti/k3-am625-beagleplay-csi2-tevi-ov5640.dtso > @@ -0,0 +1,77 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Technexion TEVI-OV5640-*-RPI - OV5640 camera module > + * Copyright (C) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/ > + */ > + > +/dts-v1/; > +/plugin/; > + > +#include <dt-bindings/gpio/gpio.h> > + > +&{/} { > + clk_ov5640_fixed: ov5640-xclk { > + compatible = "fixed-clock"; > + #clock-cells = <0>; > + clock-frequency = <24000000>; > + }; > +}; > + > +&main_gpio0 { > + p11-hog { > + /* P11 - CSI2_CAMERA_GPIO1 */ > + gpio-hog; > + gpios = <11 GPIO_ACTIVE_HIGH>; > + output-high; > + line-name = "CSI2_CAMERA_GPIO1"; > + }; > +}; > + > +&wkup_i2c0 { > + #address-cells = <1>; > + #size-cells = <0>; > + status = "okay"; > + > + ov5640: camera@3c { > + compatible = "ovti,ov5640"; > + reg = <0x3c>; > + > + clocks = <&clk_ov5640_fixed>; > + clock-names = "xclk"; > + > + port { > + csi2_cam0: endpoint { > + remote-endpoint = <&csi2rx0_in_sensor>; > + clock-lanes = <0>; > + data-lanes = <1 2>; > + }; > + }; > + }; > +}; > + > +&cdns_csi2rx0 { > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + csi0_port0: port@0 { > + reg = <0>; > + status = "okay"; > + > + csi2rx0_in_sensor: endpoint { > + remote-endpoint = <&csi2_cam0>; > + bus-type = <4>; /* CSI2 DPHY. */ > + clock-lanes = <0>; > + data-lanes = <1 2>; > + }; > + }; > + }; > +}; > + > +&dphy0 { > + status = "okay"; > +}; > + > +&ti_csi2rx0 { > + status = "okay"; > +}; >
Hi Andrew, Thanks for the review. On Nov 16, 2023 at 08:26:40 -0600, Andrew Davis wrote: > On 11/15/23 3:51 AM, Jai Luthra wrote: > > Three different OV5640 modules are supported using the FFC connector on > > BeaglePlay: > > - Digilent PCam 5C > > - ALINX AN5641 > > - TEVI-OV5640-*-RPI > > > > The Digilent and ALINX modules supply a 12Mhz XCLK to the sensor, while > > the TEVI module supplies a 24Mhz XCLK, thus requiring a separate > > overlay. > > > > Signed-off-by: Jai Luthra <j-luthra@ti.com> > > --- > > arch/arm64/boot/dts/ti/Makefile | 7 ++ > > .../dts/ti/k3-am625-beagleplay-csi2-ov5640.dtso | 77 ++++++++++++++++++++++ > > .../ti/k3-am625-beagleplay-csi2-tevi-ov5640.dtso | 77 ++++++++++++++++++++++ > > 3 files changed, 161 insertions(+) > > > > diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile > > index 77a347f9f47d..e49e32414560 100644 > > --- a/arch/arm64/boot/dts/ti/Makefile > > +++ b/arch/arm64/boot/dts/ti/Makefile > > @@ -9,9 +9,15 @@ > > # alphabetically. > > # Boards with AM62x SoC > > +k3-am625-beagleplay-csi2-ov5640-dtbs := k3-am625-beagleplay.dtb \ > > + k3-am625-beagleplay-csi2-ov5640.dtbo > > +k3-am625-beagleplay-csi2-tevi-ov5640-dtbs := k3-am625-beagleplay.dtb \ > > + k3-am625-beagleplay-csi2-tevi-ov5640.dtbo > > k3-am625-sk-hdmi-audio-dtbs := k3-am625-sk.dtb k3-am62x-sk-hdmi-audio.dtbo > > k3-am62-lp-sk-hdmi-audio-dtbs := k3-am62-lp-sk.dtb k3-am62x-sk-hdmi-audio.dtbo > > dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay.dtb > > +dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-ov5640.dtb > > +dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-tevi-ov5640.dtb > > > We don't need .dtb files for each overlay combination, you should leave these > as overlays only, and just apply them at boot time as needed. > > To test apply them at build time, you can use the CONFIG_OF_ALL_DTBS > method that Rob suggested here[0]. > > # Build time test only, enabled by CONFIG_OF_ALL_DTBS > dtb- += \ > k3-am625-beagleplay-overlay-test1.dtb \ > k3-am625-beagleplay-overlay-test2.dtb > k3-am625-beagleplay-overlay-test1-dtbs := k3-am625-beagleplay.dtb \ > k3-am625-beagleplay-csi2-ov5640.dtbo > k3-am625-beagleplay-overlay-test1-dtbs := k3-am625-beagleplay.dtb \ > k3-am625-beagleplay-csi2-tevi-ov5640.dtbo > > dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-ov5640.dtbo > dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-tevi-ov5640.dtbo > > [0] https://lore.kernel.org/all/CAL_Jsq+8jisrwEqzz7tZnsV9g2+LmThwpO7sHRFA-zh+6q8XuA@mail.gmail.com/ > Makes sense, I was able to test this out locally by adding: OF_ALL_DTBS=y COMPILE_TEST=y in my config. Will send a v2 with the above changes. I think Rob's comment on [0] for testing every combination is valid here, so I will apply each camera overlay on each board that it can be used with. > > dtb-$(CONFIG_ARCH_K3) += k3-am625-phyboard-lyra-rdk.dtb > > dtb-$(CONFIG_ARCH_K3) += k3-am625-sk.dtb > > dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-nonwifi-dahlia.dtb > > @@ -81,6 +87,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-am69-sk.dtb > > dtb-$(CONFIG_ARCH_K3) += k3-j784s4-evm.dtb > > # Enable support for device-tree overlays > > +DTC_FLAGS_k3-am625-beagleplay += -@ > > Having any DTBO applied to the base during build will add symbols to the > base for you, no need to add this line. > (Please check that this is true for the OF_ALL_DTBS case above, I've not > checked yet, we should fix if not). Without the explicit "-@" flag, the base dtb is built with symbols *only* if we were doing compile test with OF_ALL_DTBS=y. For the standard build (arm64/configs/defconfig) the base DTB is built *without* symbols as make does not see any combined DTBs as targets. > > I plan to remove the same below in later patches so folks will stop adding > more of these lines. > It is not clear to me how we could avoid explicitly enabling the "-@" flag for non-compile-test builds, let me know if you have any ideas. > Andrew > > > DTC_FLAGS_k3-am625-sk += -@ > > DTC_FLAGS_k3-am62-lp-sk += -@ > > DTC_FLAGS_k3-am6548-iot2050-advanced-m2 += -@ [...]
diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile index 77a347f9f47d..e49e32414560 100644 --- a/arch/arm64/boot/dts/ti/Makefile +++ b/arch/arm64/boot/dts/ti/Makefile @@ -9,9 +9,15 @@ # alphabetically. # Boards with AM62x SoC +k3-am625-beagleplay-csi2-ov5640-dtbs := k3-am625-beagleplay.dtb \ + k3-am625-beagleplay-csi2-ov5640.dtbo +k3-am625-beagleplay-csi2-tevi-ov5640-dtbs := k3-am625-beagleplay.dtb \ + k3-am625-beagleplay-csi2-tevi-ov5640.dtbo k3-am625-sk-hdmi-audio-dtbs := k3-am625-sk.dtb k3-am62x-sk-hdmi-audio.dtbo k3-am62-lp-sk-hdmi-audio-dtbs := k3-am62-lp-sk.dtb k3-am62x-sk-hdmi-audio.dtbo dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay.dtb +dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-ov5640.dtb +dtb-$(CONFIG_ARCH_K3) += k3-am625-beagleplay-csi2-tevi-ov5640.dtb dtb-$(CONFIG_ARCH_K3) += k3-am625-phyboard-lyra-rdk.dtb dtb-$(CONFIG_ARCH_K3) += k3-am625-sk.dtb dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-nonwifi-dahlia.dtb @@ -81,6 +87,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-am69-sk.dtb dtb-$(CONFIG_ARCH_K3) += k3-j784s4-evm.dtb # Enable support for device-tree overlays +DTC_FLAGS_k3-am625-beagleplay += -@ DTC_FLAGS_k3-am625-sk += -@ DTC_FLAGS_k3-am62-lp-sk += -@ DTC_FLAGS_k3-am6548-iot2050-advanced-m2 += -@ diff --git a/arch/arm64/boot/dts/ti/k3-am625-beagleplay-csi2-ov5640.dtso b/arch/arm64/boot/dts/ti/k3-am625-beagleplay-csi2-ov5640.dtso new file mode 100644 index 000000000000..5e80ca7033ba --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am625-beagleplay-csi2-ov5640.dtso @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * ALINX AN5641 & Digilent PCam 5C - OV5640 camera module + * Copyright (C) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/ + */ + +/dts-v1/; +/plugin/; + +#include <dt-bindings/gpio/gpio.h> + +&{/} { + clk_ov5640_fixed: ov5640-xclk { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <12000000>; + }; +}; + +&main_gpio0 { + p11-hog { + /* P11 - CSI2_CAMERA_GPIO1 */ + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "CSI2_CAMERA_GPIO1"; + }; +}; + +&wkup_i2c0 { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + ov5640: camera@3c { + compatible = "ovti,ov5640"; + reg = <0x3c>; + + clocks = <&clk_ov5640_fixed>; + clock-names = "xclk"; + + port { + csi2_cam0: endpoint { + remote-endpoint = <&csi2rx0_in_sensor>; + clock-lanes = <0>; + data-lanes = <1 2>; + }; + }; + }; +}; + +&cdns_csi2rx0 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + csi0_port0: port@0 { + reg = <0>; + status = "okay"; + + csi2rx0_in_sensor: endpoint { + remote-endpoint = <&csi2_cam0>; + bus-type = <4>; /* CSI2 DPHY. */ + clock-lanes = <0>; + data-lanes = <1 2>; + }; + }; + }; +}; + +&dphy0 { + status = "okay"; +}; + +&ti_csi2rx0 { + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/ti/k3-am625-beagleplay-csi2-tevi-ov5640.dtso b/arch/arm64/boot/dts/ti/k3-am625-beagleplay-csi2-tevi-ov5640.dtso new file mode 100644 index 000000000000..5e1cbbc27c8f --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am625-beagleplay-csi2-tevi-ov5640.dtso @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Technexion TEVI-OV5640-*-RPI - OV5640 camera module + * Copyright (C) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/ + */ + +/dts-v1/; +/plugin/; + +#include <dt-bindings/gpio/gpio.h> + +&{/} { + clk_ov5640_fixed: ov5640-xclk { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + }; +}; + +&main_gpio0 { + p11-hog { + /* P11 - CSI2_CAMERA_GPIO1 */ + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "CSI2_CAMERA_GPIO1"; + }; +}; + +&wkup_i2c0 { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + ov5640: camera@3c { + compatible = "ovti,ov5640"; + reg = <0x3c>; + + clocks = <&clk_ov5640_fixed>; + clock-names = "xclk"; + + port { + csi2_cam0: endpoint { + remote-endpoint = <&csi2rx0_in_sensor>; + clock-lanes = <0>; + data-lanes = <1 2>; + }; + }; + }; +}; + +&cdns_csi2rx0 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + csi0_port0: port@0 { + reg = <0>; + status = "okay"; + + csi2rx0_in_sensor: endpoint { + remote-endpoint = <&csi2_cam0>; + bus-type = <4>; /* CSI2 DPHY. */ + clock-lanes = <0>; + data-lanes = <1 2>; + }; + }; + }; +}; + +&dphy0 { + status = "okay"; +}; + +&ti_csi2rx0 { + status = "okay"; +};
Three different OV5640 modules are supported using the FFC connector on BeaglePlay: - Digilent PCam 5C - ALINX AN5641 - TEVI-OV5640-*-RPI The Digilent and ALINX modules supply a 12Mhz XCLK to the sensor, while the TEVI module supplies a 24Mhz XCLK, thus requiring a separate overlay. Signed-off-by: Jai Luthra <j-luthra@ti.com> --- arch/arm64/boot/dts/ti/Makefile | 7 ++ .../dts/ti/k3-am625-beagleplay-csi2-ov5640.dtso | 77 ++++++++++++++++++++++ .../ti/k3-am625-beagleplay-csi2-tevi-ov5640.dtso | 77 ++++++++++++++++++++++ 3 files changed, 161 insertions(+)