aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm2708/patches-4.14/950-0343-arm-dt-Add-DT-overlays-for-ADV7282M-OV5647-and-TC358.patch
diff options
context:
space:
mode:
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.patch477
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";
++ };
++};