mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 18:47:06 +00:00
482 lines
12 KiB
Diff
482 lines
12 KiB
Diff
|
From db902a4ec646e0ab4dee6168c3d1ef2d121c5865 Mon Sep 17 00:00:00 2001
|
||
|
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||
|
Date: Wed, 31 Oct 2018 15:01:59 +0000
|
||
|
Subject: [PATCH 204/703] 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 | 76 ++++++++++++
|
||
|
arch/arm/boot/dts/overlays/ov5647-overlay.dts | 87 ++++++++++++++
|
||
|
.../dts/overlays/tc358743-audio-overlay.dts | 52 ++++++++
|
||
|
.../boot/dts/overlays/tc358743-overlay.dts | 112 ++++++++++++++++++
|
||
|
6 files changed, 382 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 \
|
||
|
@@ -81,6 +82,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
||
|
mmc.dtbo \
|
||
|
mpu6050.dtbo \
|
||
|
mz61581.dtbo \
|
||
|
+ ov5647.dtbo \
|
||
|
papirus.dtbo \
|
||
|
pi3-act-led.dtbo \
|
||
|
pi3-disable-bt.dtbo \
|
||
|
@@ -132,6 +134,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).
|
||
|
@@ -1284,6 +1293,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>
|
||
|
@@ -1893,6 +1919,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,76 @@
|
||
|
+// SPDX-License-Identifier: GPL-2.0-only
|
||
|
+// 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,87 @@
|
||
|
+// SPDX-License-Identifier: GPL-2.0-only
|
||
|
+// 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,52 @@
|
||
|
+// SPDX-License-Identifier: GPL-2.0-only
|
||
|
+// 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,112 @@
|
||
|
+// SPDX-License-Identifier: GPL-2.0-only
|
||
|
+// 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";
|
||
|
+ };
|
||
|
+};
|