diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile index 97088044ffcaab..e9cd9722bb94b9 100644 --- a/arch/arm/boot/dts/overlays/Makefile +++ b/arch/arm/boot/dts/overlays/Makefile @@ -83,6 +83,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ iqaudio-dac.dtbo \ iqaudio-dacplus.dtbo \ iqaudio-digi-wm8804-audio.dtbo \ + irs1125.dtbo \ jedec-spi-nor.dtbo \ justboom-dac.dtbo \ justboom-digi.dtbo \ diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README index c20d4f8736766e..8ce8cf05a2c865 100644 --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -1347,6 +1347,18 @@ Params: card_name Override the default, "IQAudIODigi", card name. dai stream name. +Name: irs1125 +Info: Infineon irs1125 TOF camera module. + Uses Unicam 1, which is the standard camera connector on most Pi + variants. +Load: dtoverlay=irs1125,= +Params: i2c_pins_0_1 Use pins 0&1 for the I2C instead of 44&45. + Useful on Compute Modules. + + i2c_pins_28_29 Use pins 28&29 for the I2C instead of 44&45. + This is required for Pi B+, 2, 0, and 0W. + + Name: jedec-spi-nor Info: Adds support for JEDEC-compliant SPI NOR flash devices. (Note: The "jedec,spi-nor" kernel driver was formerly known as "m25p80".) diff --git a/arch/arm/boot/dts/overlays/irs1125-overlay.dts b/arch/arm/boot/dts/overlays/irs1125-overlay.dts new file mode 100644 index 00000000000000..b9006715a5397a --- /dev/null +++ b/arch/arm/boot/dts/overlays/irs1125-overlay.dts @@ -0,0 +1,97 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Definitions for IRS1125 camera module on VC I2C bus +/dts-v1/; +/plugin/; + +/{ + compatible = "brcm,bcm2835"; + + fragment@0 { + target = <&i2c_vc>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + irs1125: irs1125@3D { + compatible = "infineon,irs1125"; + reg = <0x3D>; + status = "okay"; + + pwdn-gpios = <&gpio 5 0>; + clocks = <&irs1125_clk>; + + irs1125_clk: camera-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <26000000>; + }; + + port { + irs1125_0: endpoint { + remote-endpoint = <&csi1_ep>; + clock-lanes = <0>; + data-lanes = <1 2>; + clock-noncontinuous; + link-frequencies = + /bits/ 64 <297000000>; + }; + }; + }; + }; + }; + + fragment@1 { + target = <&csi1>; + __overlay__ { + status = "okay"; + + port { + csi1_ep: endpoint { + remote-endpoint = <&irs1125_0>; + }; + }; + }; + }; + + fragment@2 { + target = <&i2c0_pins>; + __dormant__ { + brcm,pins = <28 29>; + brcm,function = <4>; /* alt0 */ + }; + }; + fragment@3 { + target = <&i2c0_pins>; + __overlay__ { + brcm,pins = <44 45>; + brcm,function = <5>; /* alt1 */ + }; + }; + fragment@4 { + target = <&i2c0_pins>; + __dormant__ { + brcm,pins = <0 1>; + brcm,function = <4>; /* alt0 */ + }; + }; + fragment@5 { + target = <&i2c_vc>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@6 { + target-path="/__overrides__"; + __overlay__ { + cam0-pwdn-ctrl = <&irs1125>,"pwdn-gpios:0"; + cam0-pwdn = <&irs1125>,"pwdn-gpios:4"; + }; + }; + + __overrides__ { + i2c_pins_0_1 = <0>,"-2-3+4"; + i2c_pins_28_29 = <0>,"+2-3-4"; + }; +};