diff options
Diffstat (limited to 'target/linux/brcm2708/patches-4.14/950-0343-arm-dt-Add-DT-overlays-for-ADV7282M-OV5647-and-TC358.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.14/950-0343-arm-dt-Add-DT-overlays-for-ADV7282M-OV5647-and-TC358.patch | 477 |
1 files changed, 477 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.14/950-0343-arm-dt-Add-DT-overlays-for-ADV7282M-OV5647-and-TC358.patch b/target/linux/brcm2708/patches-4.14/950-0343-arm-dt-Add-DT-overlays-for-ADV7282M-OV5647-and-TC358.patch new file mode 100644 index 0000000000..008af64e8e --- /dev/null +++ b/target/linux/brcm2708/patches-4.14/950-0343-arm-dt-Add-DT-overlays-for-ADV7282M-OV5647-and-TC358.patch @@ -0,0 +1,477 @@ +From c4146a18836381f09b1ea2f4295cb94aa606f67b Mon Sep 17 00:00:00 2001 +From: Dave Stevenson <dave.stevenson@raspberrypi.org> +Date: Thu, 5 Jul 2018 16:44:39 +0100 +Subject: [PATCH 343/454] arm: dt: Add DT overlays for ADV7282M, OV5647, and + TC358743 + +DT overlays to setup the above devices via i2c_arm and csi1. +(This currently does not use the i2c-mux-pinctrl driver to +dynamically switch the pinctrl) + +tc358743 is tc358743 running at a default link frequency +of 972Mbit/s. This allows up to 1080P50 UYVY on 2 lanes. +There is a parameter to allow changing the link frequency, +but the only values supported by the driver are 297000000 +for 594Mbit/s, and 486000000 for 972Mbit/s. +There is also a parameter to enable 4 lane mode (only +relevant to Compute Module (1 or 3) csi1). + +tc358743-audio overlay enables I2S audio from the TC358743 +to the Pi (SD to GPIO20, SCK to GPIO18, WFS to GPIO19). + +ADV7282M is the Analog Devices analogue video to CSI bridge +chip. + +OV5647 is the Pi V1.3 camera module. Currently the driver only +supports VGA 8bit Bayer and very few controls. + +Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org> +--- + arch/arm/boot/dts/overlays/Makefile | 4 + + arch/arm/boot/dts/overlays/README | 51 ++++++++ + .../boot/dts/overlays/adv7282m-overlay.dts | 75 ++++++++++++ + arch/arm/boot/dts/overlays/ov5647-overlay.dts | 86 ++++++++++++++ + .../dts/overlays/tc358743-audio-overlay.dts | 51 ++++++++ + .../boot/dts/overlays/tc358743-overlay.dts | 111 ++++++++++++++++++ + 6 files changed, 378 insertions(+) + create mode 100644 arch/arm/boot/dts/overlays/adv7282m-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/ov5647-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/tc358743-overlay.dts + +--- a/arch/arm/boot/dts/overlays/Makefile ++++ b/arch/arm/boot/dts/overlays/Makefile +@@ -6,6 +6,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ + ads1015.dtbo \ + ads1115.dtbo \ + ads7846.dtbo \ ++ adv7282m.dtbo \ + akkordion-iqdacplus.dtbo \ + allo-boss-dac-pcm512x-audio.dtbo \ + allo-digione.dtbo \ +@@ -77,6 +78,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ + mmc.dtbo \ + mpu6050.dtbo \ + mz61581.dtbo \ ++ ov5647.dtbo \ + papirus.dtbo \ + pi3-act-led.dtbo \ + pi3-disable-bt.dtbo \ +@@ -127,6 +129,8 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ + spi2-3cs.dtbo \ + superaudioboard.dtbo \ + sx150x.dtbo \ ++ tc358743.dtbo \ ++ tc358743-audio.dtbo \ + tinylcd35.dtbo \ + uart0.dtbo \ + uart1.dtbo \ +--- a/arch/arm/boot/dts/overlays/README ++++ b/arch/arm/boot/dts/overlays/README +@@ -267,6 +267,15 @@ Params: cs SPI bus + www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt + + ++Name: adv7282m ++Info: Analog Devices ADV7282M analogue video to CSI2 bridge. ++ Uses Unicam1, which is the standard camera connector on most Pi ++ variants. ++Load: dtoverlay=adv7282m,<param>=<val> ++Params: 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: akkordion-iqdacplus + Info: Configures the Digital Dreamtime Akkordion Music Player (based on the + OEM IQAudIO DAC+ or DAC Zero module). +@@ -1232,6 +1241,23 @@ Params: speed Display + xohms Touchpanel sensitivity (X-plate resistance) + + ++Name: ov5647 ++Info: Omnivision OV5647 camera module. ++ Uses Unicam 1, which is the standard camera connector on most Pi ++ variants. ++Load: dtoverlay=ov5647,<param>=<val> ++Params: cam0-pwdn GPIO used to control the sensor powerdown line. ++ ++ cam0-led GPIO used to control the sensor led ++ Both these fields should be automatically filled ++ in by the firmware to reflect the default GPIO ++ configuration of the particular Pi variant in ++ use. ++ ++ 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: papirus + Info: PaPiRus ePaper Screen by Pi Supply (both HAT and pHAT) + Load: dtoverlay=papirus,<param>=<val> +@@ -1828,6 +1854,31 @@ Params: sx150<x>-<n>-<m> Enables + connected. + + ++Name: tc358743 ++Info: Toshiba TC358743 HDMI to CSI-2 bridge chip. ++ Uses Unicam 1, which is the standard camera connector on most Pi ++ variants. ++Load: dtoverlay=tc358743,<param>=<val> ++Params: 4lane Use 4 lanes (only applicable to Compute Modules ++ CAM1 connector). ++ ++ link-frequency Set the link frequency. Only values of 297000000 ++ (574Mbit/s) and 486000000 (972Mbit/s - default) ++ are supported by the driver. ++ ++ 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: tc358743-audio ++Info: Used in combination with the tc358743-fast overlay to route the audio ++ from the TC358743 over I2S to the Pi. ++ Wiring is LRCK/WFS to GPIO 19, BCK/SCK to GPIO 18, and DATA/SD to GPIO ++ 20. ++Load: dtoverlay=tc358743-audio,<param>=<val> ++Params: card-name Override the default, "tc358743", card name. ++ ++ + Name: tinylcd35 + Info: 3.5" Color TFT Display by www.tinylcd.com + Options: Touch, RTC, keypad +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/adv7282m-overlay.dts +@@ -0,0 +1,75 @@ ++// Definitions for Analog Devices ADV7282-M video to CSI2 bridge on VC I2C bus ++/dts-v1/; ++/plugin/; ++ ++/{ ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&i2c_vc>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ adv7282: adv7282@21 { ++ compatible = "adi,adv7282-m"; ++ reg = <0x21>; ++ status = "okay"; ++ clock-frequency = <24000000>; ++ port { ++ adv7282_0: endpoint { ++ remote-endpoint = <&csi1_ep>; ++ clock-lanes = <0>; ++ data-lanes = <1>; ++ link-frequencies = ++ /bits/ 64 <297000000>; ++ ++ mclk-frequency = <12000000>; ++ }; ++ }; ++ }; ++ }; ++ }; ++ fragment@1 { ++ target = <&csi1>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ port { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ csi1_ep: endpoint { ++ remote-endpoint = <&adv7282_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 = <&i2c_vc>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ __overrides__ { ++ i2c_pins_28_29 = <0>,"+2-3"; ++ }; ++}; +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/ov5647-overlay.dts +@@ -0,0 +1,86 @@ ++// Definitions for OV5647 camera module on VC I2C bus ++/dts-v1/; ++/plugin/; ++ ++/{ ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&i2c_vc>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ ov5647: ov5647@36 { ++ compatible = "ov5647"; ++ reg = <0x36>; ++ status = "okay"; ++ ++ pwdn-gpios = <&gpio 41 1>, <&gpio 32 1>; ++ clocks = <&ov5647_clk>; ++ ++ ov5647_clk: camera-clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <25000000>; ++ }; ++ ++ port { ++ ov5647_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__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ port { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ csi1_ep: endpoint { ++ remote-endpoint = <&ov5647_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 = <&i2c_vc>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ __overrides__ { ++ i2c_pins_28_29 = <0>,"+4-5"; ++ cam0-pwdn = <&ov5647>,"pwdn-gpios:4"; ++ cam0-led = <&ov5647>,"pwdn-gpios:16"; ++ }; ++}; +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts +@@ -0,0 +1,51 @@ ++// Definitions to add I2S audio from the Toshiba TC358743 HDMI to CSI2 bridge. ++// Requires tc358743 overlay to have been loaded to actually function. ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&i2s>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@1 { ++ target-path = "/"; ++ __overlay__ { ++ tc358743_codec: tc358743-codec { ++ #sound-dai-cells = <0>; ++ compatible = "linux,spdif-dir"; ++ status = "okay"; ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&sound>; ++ sound_overlay: __overlay__ { ++ compatible = "simple-audio-card"; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,name = "tc358743"; ++ simple-audio-card,bitclock-master = <&dailink0_slave>; ++ simple-audio-card,frame-master = <&dailink0_slave>; ++ status = "okay"; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&i2s>; ++ dai-tdm-slot-num = <2>; ++ dai-tdm-slot-width = <32>; ++ }; ++ dailink0_slave: simple-audio-card,codec { ++ sound-dai = <&tc358743_codec>; ++ }; ++ }; ++ }; ++ ++ __overrides__ { ++ card-name = <&sound_overlay>,"simple-audio-card,name"; ++ }; ++}; +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/tc358743-overlay.dts +@@ -0,0 +1,111 @@ ++// Definitions for Toshiba TC358743 HDMI to CSI2 bridge on VC I2C bus ++/dts-v1/; ++/plugin/; ++ ++/{ ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&i2c_vc>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ tc358743@0f { ++ compatible = "toshiba,tc358743"; ++ reg = <0x0f>; ++ status = "okay"; ++ ++ clocks = <&tc358743_clk>; ++ clock-names = "refclk"; ++ ++ tc358743_clk: bridge-clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <27000000>; ++ }; ++ ++ port { ++ tc358743: endpoint { ++ remote-endpoint = <&csi1_ep>; ++ clock-lanes = <0>; ++ clock-noncontinuous; ++ link-frequencies = ++ /bits/ 64 <486000000>; ++ }; ++ }; ++ }; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&csi1>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ port { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ csi1_ep: endpoint { ++ remote-endpoint = <&tc358743>; ++ }; ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&i2c_vc>; ++ __overlay__ { ++ tc358743@0f { ++ port { ++ endpoint { ++ data-lanes = <1 2>; ++ }; ++ }; ++ }; ++ }; ++ }; ++ ++ fragment@3 { ++ target = <&i2c_vc>; ++ __dormant__ { ++ tc358743@0f { ++ port { ++ endpoint { ++ data-lanes = <1 2 3 4>; ++ }; ++ }; ++ }; ++ }; ++ }; ++ ++ fragment@4 { ++ target = <&i2c0_pins>; ++ __dormant__ { ++ brcm,pins = <28 29>; ++ brcm,function = <4>; /* alt0 */ ++ }; ++ }; ++ fragment@5 { ++ target = <&i2c0_pins>; ++ __overlay__ { ++ brcm,pins = <44 45>; ++ brcm,function = <5>; /* alt1 */ ++ }; ++ }; ++ fragment@6 { ++ target = <&i2c_vc>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ __overrides__ { ++ i2c_pins_28_29 = <0>,"+4-5"; ++ 4lane = <0>, "-2+3"; ++ link-frequency = <&tc358743>,"link-frequencies#0"; ++ }; ++}; |