openwrt/target/linux/brcm2708/patches-4.14/950-0343-arm-dt-Add-DT-overlays-for-ADV7282M-OV5647-and-TC358.patch
Stijn Tintel f5919b65d4 brcm2708: add kernel 4.14 support
Patch generation process:
- rebase rpi/rpi-4.14.y on v4.14.89 from linux-stable
- git format-patch v4.14.89

Patches skipped during rebase:
- lan78xx: Read MAC address from DT if present
- lan78xx: Enable LEDs and auto-negotiation
- Revert "softirq: Let ksoftirqd do its job"
- sc16is7xx: Fix for multi-channel stall
- lan78xx: Ignore DT MAC address if already valid
- lan78xx: Simple patch to prevent some crashes
- tcp_write_queue_purge clears all the SKBs in the write queue
- Revert "lan78xx: Simple patch to prevent some crashes"
- lan78xx: Connect phy early
- Arm: mm: ftrace: Only set text back to ro after kernel has been marked ro
- Revert "Revert "softirq: Let ksoftirqd do its job""
- ASoC: cs4265: SOC_SINGLE register value error fix
- Revert "ASoC: cs4265: SOC_SINGLE register value error fix"
- Revert "net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are friends"
- Revert "Revert "net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are friends""

Patches dropped after rebase:
- net: Add non-mainline source for rtl8192cu wlan
- net: Fix rtl8192cu build errors on other platforms
- brcm: adds support for BCM43341 wifi
- brcmfmac: Mute expected startup 'errors'
- ARM64: Fix build break for RTL8187/RTL8192CU wifi
- ARM64: Enable RTL8187/RTL8192CU wifi in build config
- This is the driver for Sony CXD2880 DVB-T2/T tuner + demodulator
- brcmfmac: add CLM download support
- brcmfmac: request_firmware_direct is quieter
- Sets the BCDC priority to constant 0
- brcmfmac: Disable ARP offloading when promiscuous
- brcmfmac: Avoid possible out-of-bounds read
- brcmfmac: Delete redundant length check
- net: rtl8192cu: Normalize indentation
- net: rtl8192cu: Fix implicit fallthrough warnings
- Revert "Sets the BCDC priority to constant 0"
- media: cxd2880: Bump to match 4.18.y version
- media: cxd2880-spi: Bump to match 4.18.y version
- Revert "mm: alloc_contig: re-allow CMA to compact FS pages"
- Revert "Revert "mm: alloc_contig: re-allow CMA to compact FS pages""
- cxd2880: CXD2880_SPI_DRV should select DVB_CXD2880 with
  MEDIA_SUBDRV_AUTOSELECT
- 950-0421-HID-hid-bigbenff-driver-for-BigBen-Interactive-PS3OF.patch
- 950-0453-Add-hid-bigbenff-to-list-of-have_special_driver-for-.patch

Make I2C built-in instead of modular as in upstream defconfig; also the
easiest way to get MFD_ARIZONA enabled, which is required by
kmod-sound-soc-rpi-cirrus.
Add missing compatible strings from
4.9/960-add-rasbperrypi-compatible.patch, using upstream names for
compute modules.
Add extra patch to enable the LEDs on lan78xx.

Compile-tested: bcm2708, bcm2709, bcm2710 (with CONFIG_ALL_KMODS=y)
Runtime-tested: bcm2708, bcm2710

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2018-12-18 23:19:21 +02:00

478 lines
12 KiB
Diff

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";
+ };
+};