mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
BCM2708: Add core Device Tree support
Add the bare minimum needed to boot BCM2708 from a Device Tree.
Signed-off-by: Noralf Tronnes <notro@tronnes.org>
BCM2708: DT: change 'axi' nodename to 'soc'
Change DT node named 'axi' to 'soc' so it matches ARCH_BCM2835.
The VC4 bootloader fills in certain properties in the 'axi' subtree,
but since this is part of an upstreaming effort, the name is changed.
Signed-off-by: Noralf Tronnes notro@tronnes.org
BCM2708_DT: Correct length of the peripheral space
Use dts-dirs feature for overlays.
The kernel makefiles have a dts-dirs target that is for vendor subdirectories.
Using this fixes the install_dtbs target, which previously did not install the overlays.
BCM270X_DT: configure I2S DMA channels
Signed-off-by: Matthias Reichl <hias@horus.com>
BCM270X_DT: switch to bcm2835-i2s
I2S soundcard drivers with proper devicetree support (i.e. not linking
to the cpu_dai/platform via name but to cpu/platform via of_node)
will work out of the box without any modifications.
When the kernel is compiled without devicetree support the platform
code will instantiate the bcm2708-i2s driver and I2S soundcard drivers
will link to it via name, as before.
Signed-off-by: Matthias Reichl <hias@horus.com>
SDIO-overlay: add poll_once-boolean parameter
Add paramter to toggle sdio-device-polling
done every second or once at boot-time.
Signed-off-by: Patrick Boettcher <patrick.boettcher@posteo.de>
BCM270X_DT: Make mmc overlay compatible with current firmware
The original DT overlay logic followed a merge-then-patch procedure,
i.e. parameters are applied to the loaded overlay before the overlay
is merged into the base DTB. This sequence has been changed to
patch-then-merge, in order to support parameterised node names, and
to protect against bad overlays. As a result, overrides (parameters)
must only target labels in the overlay, but the overlay can obviously target nodes in the base DTB.
mmc-overlay.dts (that switches back to the original mmc sdcard
driver) is the only overlay violating that rule, and this patch
fixes it.
bcm270x_dt: Use the sdhost MMC controller by default
The "mmc" overlay reverts to using the other controller.
squash: Add cprman to dt
BCM270X_DT: Use clk_core for I2C interfaces
BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi
The mainline Device Tree files are quite close to downstream now.
Let's use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi as base files
for our dts files.
Mainline dts files are based on these files:
bcm2835-rpi.dtsi
bcm2835.dtsi bcm2836.dtsi
bcm283x.dtsi
Current downstream are based on these:
bcm2708.dtsi bcm2709.dtsi bcm2710.dtsi
bcm2708_common.dtsi
This patch introduces this dependency:
bcm2708.dtsi bcm2709.dtsi
bcm2708-rpi.dtsi
bcm270x.dtsi
bcm2835.dtsi bcm2836.dtsi
bcm283x.dtsi
And:
bcm2710.dtsi
bcm2708-rpi.dtsi
bcm270x.dtsi
bcm283x.dtsi
bcm270x.dtsi contains the downstream bcm283x.dtsi diff.
bcm2708-rpi.dtsi is the downstream version of bcm2835-rpi.dtsi.
Other changes:
- The led node has moved from /soc/leds to /leds. This is not a problem
since the label is used to reference it.
- The clk_osc reg property changes from 6 to 3.
- The gpu nodes has their interrupt property set in the base file.
- the clocks label does not point to the /clocks node anymore, but
points to the cprman node. This is not a problem since the overlays
that use the clock node refer to it directly: target-path = "/clocks";
- some nodes now have 2 labels since mainline and downstream differs in
this respect: cprman/clocks, spi0/spi, gpu/vc4.
- some nodes doesn't have an explicit status = "okay" since they're not
disabled in the base file: watchdog and random.
- gpiomem doesn't need an explicit status = "okay".
- bcm2708-rpi-cm.dts got the hpd-gpios property from bcm2708_common.dtsi,
it's now set directly in that file.
- bcm2709-rpi-2-b.dts has the timer node moved from /soc/timer to /timer.
- Removed clock-frequency property on the bcm{2709,2710}.dtsi timer nodes.
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
BCM270X_DT: Use raspberrypi-power to turn on USB power
Use the raspberrypi-power driver to turn on USB power.
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
BCM270X_DT: Add a .dtbo target, use for overlays
Change the filenames and extensions to keep the pre-DDT style of
overlay (<name>-overlay.dtb) distinct from new ones that use a
different style of local fixups (<name>.dtbo), and to match other
platforms.
The RPi firmware uses the DDTK trailer atom to choose which type of
overlay to use for each kernel.
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
BCM270X_DT: Don't generate "linux,phandle" props
The EPAPR standard says to use "phandle" properties to store phandles,
rather than the deprecated "linux,phandle" version. By default, dtc
generates both, but adding "-H epapr" causes it to only generate
"phandle"s, saving some space and clutter.
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
BCM270X_DT: Add overlay for enc28j60 on SPI2
Works on SPI2 for compute module
BCM270X_DT: Add midi-uart0 overlay
MIDI requires 31.25kbaud, a baudrate unsupported by Linux. The
midi-uart0 overlay configures uart0 (ttyAMA0) to use a fake clock
so that requesting 38.4kbaud actually gets 31.25kbaud.
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
BCM270X_DT: Add i2c-sensor overlay
The i2c-sensor overlay is a container for various pressure and
temperature sensors, currently bmp085 and bmp280. The standalone
bmp085_i2c-sensor overlay is now deprecated.
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
BCM270X_DT: overlays/*-overlay.dtb -> overlays/*.dtbo (#1752)
We now create overlays as .dtbo files.
build: support for .dtbo files for dtb overlays
Kernel 4.4.6+ on RaspberryPi support .dtbo files for overlays, instead of .dtb.
Patch the kernel, which has faulty rules to generate .dtbo the way yocto does
Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
BCM270X: Drop position requirement for CMA in VC4 overlay.
No longer necessary since 2aefcd5761,
and will probably let peeople that want to choose a larger CMA
allocation (particularly on pi0/1).
Signed-off-by: Eric Anholt <eric@anholt.net>
BCM270X_DT: RPi Device Tree tidy
Use the upstream sdhost node, add thermal-zones, and factor out some
common elements.
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
kbuild: Silence unhelpful DTC warnings
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
BCM270X_DT: DT build rules no longer arch-specific
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
kbuild: Silence unavoidable dtc overlay warnings
Much effort has been put into finding ways to avoid warnings from dtc
about overlays, usually to do with the presence of #address-cells and
size-cells, but not exclusively so. Since the issues being warned about
are harmless, suppress the warnings to declutter the build output and
to avoid alarming users.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
overlays: Suppress another dtc warning
I'm sure the dtc warnings mean well, but overlays don't have enough
context for the checkers to give meaningful results.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
overlays: Use dtbs-list for overlay installation
Update the overlay build rules to use the dtbs-list mechanism. Also
include the README, and don't set the executable bits.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
overlays: i2c-sensor: Add tmp117 support
Add support for the TMP117 temperature sensor to the i2c-sensor
overlay.
See: https://github.com/raspberrypi/linux/issues/7077
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
This commit is contained in:
@@ -39,3 +39,8 @@ subdir-y += unisoc
|
||||
subdir-y += vt8500
|
||||
subdir-y += xen
|
||||
subdir-y += xilinx
|
||||
|
||||
targets += dtbs dtbs_install
|
||||
targets += $(dtb-y)
|
||||
|
||||
subdir-y += overlays
|
||||
|
||||
@@ -37,6 +37,30 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
|
||||
bcm2711-rpi-cm4-io.dtb \
|
||||
bcm2835-rpi-zero.dtb \
|
||||
bcm2835-rpi-zero-w.dtb
|
||||
|
||||
dtb-$(CONFIG_ARCH_BCM2835) += \
|
||||
bcm2708-rpi-b.dtb \
|
||||
bcm2708-rpi-b-rev1.dtb \
|
||||
bcm2708-rpi-b-plus.dtb \
|
||||
bcm2708-rpi-cm.dtb \
|
||||
bcm2708-rpi-zero.dtb \
|
||||
bcm2708-rpi-zero-w.dtb \
|
||||
bcm2710-rpi-zero-2.dtb \
|
||||
bcm2710-rpi-zero-2-w.dtb \
|
||||
bcm2709-rpi-2-b.dtb \
|
||||
bcm2710-rpi-2-b.dtb \
|
||||
bcm2710-rpi-3-b.dtb \
|
||||
bcm2710-rpi-3-b-plus.dtb \
|
||||
bcm2709-rpi-cm2.dtb \
|
||||
bcm2710-rpi-cm0.dtb \
|
||||
bcm2710-rpi-cm3.dtb \
|
||||
bcm2711-rpi-cm4.dtb \
|
||||
bcm2711-rpi-cm4s.dtb
|
||||
|
||||
ifeq ($(CONFIG_ARCH_BCM2835),y)
|
||||
DTC_FLAGS += -@ -Wno-gpios_property
|
||||
endif
|
||||
|
||||
dtb-$(CONFIG_ARCH_BCMBCA) += \
|
||||
bcm6846-genexis-xg6846b.dtb \
|
||||
bcm947622.dtb \
|
||||
|
||||
210
arch/arm/boot/dts/broadcom/bcm2708-rpi-b-plus.dts
Normal file
210
arch/arm/boot/dts/broadcom/bcm2708-rpi-b-plus.dts
Normal file
@@ -0,0 +1,210 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2708.dtsi"
|
||||
#include "bcm2708-rpi.dtsi"
|
||||
#include "bcm283x-rpi-smsc9514.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Model B+";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* Taken from Raspberry-Pi-B-Plus-V1.2-Schematics.pdf
|
||||
* RPI-BPLUS sheet 1
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"SDA0",
|
||||
"SCL0",
|
||||
"NC", /* GPIO30 */
|
||||
"LAN_RUN", /* GPIO31 */
|
||||
"CAM_GPIO1", /* GPIO32 */
|
||||
"NC", /* GPIO33 */
|
||||
"NC", /* GPIO34 */
|
||||
"PWR_LOW_N", /* GPIO35 */
|
||||
"NC", /* GPIO36 */
|
||||
"NC", /* GPIO37 */
|
||||
"USB_LIMIT", /* GPIO38 */
|
||||
"NC", /* GPIO39 */
|
||||
"PWM0_OUT", /* GPIO40 */
|
||||
"CAM_GPIO0", /* GPIO41 */
|
||||
"NC", /* GPIO42 */
|
||||
"NC", /* GPIO43 */
|
||||
"ETH_CLK", /* GPIO44 */
|
||||
"PWM1_OUT", /* GPIO45 */
|
||||
"HDMI_HPD_N",
|
||||
"STATUS_LED",
|
||||
/* Used by SD Card */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <40 45>;
|
||||
brcm,function = <4>;
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
&leds {
|
||||
led_pwr: led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "input";
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
i2c_arm: &i2c1 {
|
||||
};
|
||||
|
||||
i2c_vc: &i2c0 {
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
|
||||
pwr_led_gpio = <&led_pwr>,"gpios:4";
|
||||
pwr_led_activelow = <&led_pwr>,"gpios:8";
|
||||
pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
223
arch/arm/boot/dts/broadcom/bcm2708-rpi-b-rev1.dts
Normal file
223
arch/arm/boot/dts/broadcom/bcm2708-rpi-b-rev1.dts
Normal file
@@ -0,0 +1,223 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2708.dtsi"
|
||||
#include "bcm2708-rpi.dtsi"
|
||||
#include "bcm283x-rpi-smsc9512.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,model-b", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Model B";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* Taken from Raspberry-Pi-Rev-1.0-Model-AB-Schematics.pdf
|
||||
* RPI00021 sheet 02
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "SDA0",
|
||||
"SCL0",
|
||||
"SDA1",
|
||||
"SCL1",
|
||||
"GPIO_GCLK",
|
||||
"CAM_GPIO1",
|
||||
"LAN_RUN",
|
||||
"SPI_CE1_N",
|
||||
"SPI_CE0_N",
|
||||
"SPI_MISO",
|
||||
"SPI_MOSI",
|
||||
"SPI_SCLK",
|
||||
"NC", /* GPIO12 */
|
||||
"NC", /* GPIO13 */
|
||||
/* Serial port */
|
||||
"TXD0",
|
||||
"RXD0",
|
||||
"STATUS_LED_N",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"NC", /* GPIO19 */
|
||||
"NC", /* GPIO20 */
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"NC", /* GPIO26 */
|
||||
"CAM_GPIO0",
|
||||
/* Binary number representing build/revision */
|
||||
"CONFIG0",
|
||||
"CONFIG1",
|
||||
"CONFIG2",
|
||||
"CONFIG3",
|
||||
"NC", /* GPIO32 */
|
||||
"NC", /* GPIO33 */
|
||||
"NC", /* GPIO34 */
|
||||
"NC", /* GPIO35 */
|
||||
"NC", /* GPIO36 */
|
||||
"NC", /* GPIO37 */
|
||||
"NC", /* GPIO38 */
|
||||
"NC", /* GPIO39 */
|
||||
"PWM0_OUT",
|
||||
"NC", /* GPIO41 */
|
||||
"NC", /* GPIO42 */
|
||||
"NC", /* GPIO43 */
|
||||
"NC", /* GPIO44 */
|
||||
"PWM1_OUT",
|
||||
"HDMI_HPD_P",
|
||||
"SD_CARD_DET",
|
||||
/* Used by SD Card */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <28 29 30 31>;
|
||||
brcm,function = <6>; /* alt2 */
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <40 45>;
|
||||
brcm,function = <4>;
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
/delete-node/ &i2c0mux;
|
||||
|
||||
i2c0: &i2c0if {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
i2c_csi_dsi: &i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
i2c0 = &i2c0;
|
||||
};
|
||||
|
||||
/* Provide an i2c0mux label to avoid undefined symbols in overlays */
|
||||
i2c0mux: i2c0mux {
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
i2c0 = <&i2c0>, "status";
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 27 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
i2c_arm: &i2c0 {
|
||||
};
|
||||
|
||||
i2c_vc: &i2c1 {
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
|
||||
i2c = <&i2c0>,"status";
|
||||
i2c_arm = <&i2c0>,"status";
|
||||
i2c_vc = <&i2c1>,"status";
|
||||
i2c_baudrate = <&i2c0>,"clock-frequency:0";
|
||||
i2c_arm_baudrate = <&i2c0>,"clock-frequency:0";
|
||||
i2c_vc_baudrate = <&i2c1>,"clock-frequency:0";
|
||||
};
|
||||
};
|
||||
198
arch/arm/boot/dts/broadcom/bcm2708-rpi-b.dts
Normal file
198
arch/arm/boot/dts/broadcom/bcm2708-rpi-b.dts
Normal file
@@ -0,0 +1,198 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2708.dtsi"
|
||||
#include "bcm2708-rpi.dtsi"
|
||||
#include "bcm283x-rpi-smsc9512.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,model-b", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Model B";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* Taken from Raspberry-Pi-Rev-2.0-Model-AB-Schematics.pdf
|
||||
* RPI00022 sheet 02
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "SDA0",
|
||||
"SCL0",
|
||||
"SDA1",
|
||||
"SCL1",
|
||||
"GPIO_GCLK",
|
||||
"CAM_GPIO1",
|
||||
"LAN_RUN",
|
||||
"SPI_CE1_N",
|
||||
"SPI_CE0_N",
|
||||
"SPI_MISO",
|
||||
"SPI_MOSI",
|
||||
"SPI_SCLK",
|
||||
"NC", /* GPIO12 */
|
||||
"NC", /* GPIO13 */
|
||||
/* Serial port */
|
||||
"TXD0",
|
||||
"RXD0",
|
||||
"STATUS_LED_N",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"NC", /* GPIO19 */
|
||||
"NC", /* GPIO20 */
|
||||
"CAM_GPIO0",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"NC", /* GPIO26 */
|
||||
"GPIO27",
|
||||
"GPIO28",
|
||||
"GPIO29",
|
||||
"GPIO30",
|
||||
"GPIO31",
|
||||
"NC", /* GPIO32 */
|
||||
"NC", /* GPIO33 */
|
||||
"NC", /* GPIO34 */
|
||||
"NC", /* GPIO35 */
|
||||
"NC", /* GPIO36 */
|
||||
"NC", /* GPIO37 */
|
||||
"NC", /* GPIO38 */
|
||||
"NC", /* GPIO39 */
|
||||
"PWM0_OUT",
|
||||
"NC", /* GPIO41 */
|
||||
"NC", /* GPIO42 */
|
||||
"NC", /* GPIO43 */
|
||||
"NC", /* GPIO44 */
|
||||
"PWM1_OUT",
|
||||
"HDMI_HPD_P",
|
||||
"SD_CARD_DET",
|
||||
/* Used by SD Card */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <28 29 30 31>;
|
||||
brcm,function = <6>; /* alt2 */
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <40 45>;
|
||||
brcm,function = <4>;
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 21 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
i2c_arm: &i2c1 {
|
||||
};
|
||||
|
||||
i2c_vc: &i2c0 {
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
42
arch/arm/boot/dts/broadcom/bcm2708-rpi-bt.dtsi
Normal file
42
arch/arm/boot/dts/broadcom/bcm2708-rpi-bt.dtsi
Normal file
@@ -0,0 +1,42 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
&uart0 {
|
||||
bt: bluetooth {
|
||||
compatible = "brcm,bcm43438-bt";
|
||||
max-speed = <3000000>;
|
||||
shutdown-gpios = <&gpio 45 GPIO_ACTIVE_HIGH>;
|
||||
local-bd-address = [ 00 00 00 00 00 00 ];
|
||||
fallback-bd-address; // Don't override a valid address
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
minibt: bluetooth {
|
||||
compatible = "brcm,bcm43438-bt";
|
||||
max-speed = <230400>;
|
||||
shutdown-gpios = <&gpio 45 GPIO_ACTIVE_HIGH>;
|
||||
local-bd-address = [ 00 00 00 00 00 00 ];
|
||||
fallback-bd-address; // Don't override a valid address
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 cgroup_disable=memory";
|
||||
};
|
||||
|
||||
aliases {
|
||||
bluetooth = &bt;
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
bdaddr = <&bt>,"local-bd-address[",
|
||||
<&bt>,"fallback-bd-address?=0",
|
||||
<&minibt>,"local-bd-address[",
|
||||
<&minibt>,"fallback-bd-address?=0";
|
||||
krnbt = <&bt>,"status";
|
||||
krnbt_baudrate = <&bt>,"max-speed:0", <&minibt>,"max-speed:0";
|
||||
};
|
||||
};
|
||||
174
arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dts
Normal file
174
arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dts
Normal file
@@ -0,0 +1,174 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2708-rpi-cm.dtsi"
|
||||
#include "bcm283x-rpi-csi0-2lane.dtsi"
|
||||
#include "bcm283x-rpi-csi1-4lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,compute-module", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Compute Module";
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 3 GPIO_ACTIVE_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
cam0_reg: &cam0_regulator {
|
||||
gpio = <&gpio 31 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* This is based on the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "GPIO0",
|
||||
"GPIO1",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"GPIO28",
|
||||
"GPIO29",
|
||||
"GPIO30",
|
||||
"GPIO31",
|
||||
"GPIO32",
|
||||
"GPIO33",
|
||||
"GPIO34",
|
||||
"GPIO35",
|
||||
"GPIO36",
|
||||
"GPIO37",
|
||||
"GPIO38",
|
||||
"GPIO39",
|
||||
"GPIO40",
|
||||
"GPIO41",
|
||||
"GPIO42",
|
||||
"GPIO43",
|
||||
"GPIO44",
|
||||
"GPIO45",
|
||||
"HDMI_HPD_N",
|
||||
/* Also used as ACT LED */
|
||||
"EMMC_EN_N",
|
||||
/* Used by eMMC */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
};
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
23
arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dtsi
Normal file
23
arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dtsi
Normal file
@@ -0,0 +1,23 @@
|
||||
#include "bcm2708.dtsi"
|
||||
#include "bcm2708-rpi.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
&led_act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
i2c_arm: &i2c1 {
|
||||
};
|
||||
|
||||
i2c_vc: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
250
arch/arm/boot/dts/broadcom/bcm2708-rpi-zero-w.dts
Normal file
250
arch/arm/boot/dts/broadcom/bcm2708-rpi-zero-w.dts
Normal file
@@ -0,0 +1,250 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2708.dtsi"
|
||||
#include "bcm2708-rpi.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
||||
#include "bcm2708-rpi-bt.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Zero W";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart1;
|
||||
serial1 = &uart0;
|
||||
mmc1 = &mmcnr;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* This is based on the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"SDA0",
|
||||
"SCL0",
|
||||
/* Used by BT module */
|
||||
"CTS0",
|
||||
"RTS0",
|
||||
"TXD0",
|
||||
"RXD0",
|
||||
/* Used by Wifi */
|
||||
"SD1_CLK",
|
||||
"SD1_CMD",
|
||||
"SD1_DATA0",
|
||||
"SD1_DATA1",
|
||||
"SD1_DATA2",
|
||||
"SD1_DATA3",
|
||||
"CAM_GPIO1", /* GPIO40 */
|
||||
"WL_ON", /* GPIO41 */
|
||||
"NC", /* GPIO42 */
|
||||
"WIFI_CLK", /* GPIO43 */
|
||||
"CAM_GPIO0", /* GPIO44 */
|
||||
"BT_ON", /* GPIO45 */
|
||||
"HDMI_HPD_N",
|
||||
"STATUS_LED_N",
|
||||
/* Used by SD Card */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
sdio_pins: sdio_pins {
|
||||
brcm,pins = <34 35 36 37 38 39>;
|
||||
brcm,function = <7>; /* ALT3 = SD1 */
|
||||
brcm,pull = <0 2 2 2 2 2>;
|
||||
};
|
||||
|
||||
bt_pins: bt_pins {
|
||||
brcm,pins = <43>;
|
||||
brcm,function = <4>; /* alt0:GPCLK2 */
|
||||
brcm,pull = <0>; /* none */
|
||||
};
|
||||
|
||||
uart0_pins: uart0_pins {
|
||||
brcm,pins = <30 31 32 33>;
|
||||
brcm,function = <7>; /* alt3=UART0 */
|
||||
brcm,pull = <2 0 0 2>; /* up none none up */
|
||||
};
|
||||
|
||||
uart1_pins: uart1_pins {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
brcm,pull;
|
||||
};
|
||||
|
||||
uart1_bt_pins: uart1_bt_pins {
|
||||
brcm,pins = <32 33 30 31>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>; /* alt5=UART1 */
|
||||
brcm,pull = <0 2 2 0>;
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <>;
|
||||
brcm,function = <>;
|
||||
};
|
||||
};
|
||||
|
||||
&mmcnr {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdio_pins>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
brcmf: wifi@1 {
|
||||
reg = <1>;
|
||||
compatible = "brcm,bcm4329-fmac";
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pins &bt_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart1_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "actpwr";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 44 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
i2c_arm: &i2c1 {};
|
||||
i2c_vc: &i2c0 {};
|
||||
i2c_csi_dsi0: &i2c0 {};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
189
arch/arm/boot/dts/broadcom/bcm2708-rpi-zero.dts
Normal file
189
arch/arm/boot/dts/broadcom/bcm2708-rpi-zero.dts
Normal file
@@ -0,0 +1,189 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2708.dtsi"
|
||||
#include "bcm2708-rpi.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,model-zero", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Zero";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* This is based on the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"SDA0",
|
||||
"SCL0",
|
||||
"NC", /* GPIO30 */
|
||||
"NC", /* GPIO31 */
|
||||
"CAM_GPIO1", /* GPIO32 */
|
||||
"NC", /* GPIO33 */
|
||||
"NC", /* GPIO34 */
|
||||
"NC", /* GPIO35 */
|
||||
"NC", /* GPIO36 */
|
||||
"NC", /* GPIO37 */
|
||||
"NC", /* GPIO38 */
|
||||
"NC", /* GPIO39 */
|
||||
"NC", /* GPIO40 */
|
||||
"CAM_GPIO0", /* GPIO41 */
|
||||
"NC", /* GPIO42 */
|
||||
"NC", /* GPIO43 */
|
||||
"NC", /* GPIO44 */
|
||||
"NC", /* GPIO45 */
|
||||
"HDMI_HPD_N",
|
||||
"STATUS_LED_N",
|
||||
/* Used by SD Card */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <>;
|
||||
brcm,function = <>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "actpwr";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
i2c_arm: &i2c1 {};
|
||||
i2c_vc: &i2c0 {};
|
||||
i2c_csi_dsi0: &i2c0 {};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
63
arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi
Normal file
63
arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi
Normal file
@@ -0,0 +1,63 @@
|
||||
/* Downstream modifications common to bcm2835, bcm2836, bcm2837 */
|
||||
|
||||
#define i2c0 i2c0mux
|
||||
#include "bcm2835-rpi.dtsi"
|
||||
#undef i2c0
|
||||
#include "bcm270x-rpi.dtsi"
|
||||
|
||||
/ {
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0x0 0x0>;
|
||||
};
|
||||
|
||||
aliases {
|
||||
i2c2 = &i2c2;
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
hdmi = <&hdmi>,"status";
|
||||
i2c2_iknowwhatimdoing = <&i2c2>,"status";
|
||||
i2c2_baudrate = <&i2c2>,"clock-frequency:0";
|
||||
nvmem_cust_rw = <&nvmem_cust>,"rw?";
|
||||
sd = <&sdhost>,"status";
|
||||
sd_poll_once = <&sdhost>,"non-removable?";
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
nvmem {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
nvmem_otp: nvmem_otp {
|
||||
compatible = "raspberrypi,rpi-otp";
|
||||
firmware = <&firmware>;
|
||||
reg = <0 192>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
nvmem_cust: nvmem_cust {
|
||||
compatible = "raspberrypi,rpi-otp";
|
||||
firmware = <&firmware>;
|
||||
reg = <1 8>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhost_gpio48>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
status = "disabled";
|
||||
};
|
||||
19
arch/arm/boot/dts/broadcom/bcm2708.dtsi
Normal file
19
arch/arm/boot/dts/broadcom/bcm2708.dtsi
Normal file
@@ -0,0 +1,19 @@
|
||||
#define i2c0 i2c0if
|
||||
#include "bcm2835.dtsi"
|
||||
#undef i2c0
|
||||
#include "bcm270x.dtsi"
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
arm_freq;
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
dma-ranges = <0x80000000 0x00000000 0x20000000>,
|
||||
<0x7e000000 0x20000000 0x02000000>;
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
status = "disabled";
|
||||
};
|
||||
204
arch/arm/boot/dts/broadcom/bcm2709-rpi-2-b.dts
Normal file
204
arch/arm/boot/dts/broadcom/bcm2709-rpi-2-b.dts
Normal file
@@ -0,0 +1,204 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2709.dtsi"
|
||||
#include "bcm2709-rpi.dtsi"
|
||||
#include "bcm283x-rpi-smsc9514.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
|
||||
model = "Raspberry Pi 2 Model B";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* Taken from rpi_SCH_2b_1p2_reduced.pdf and
|
||||
* the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"SDA0",
|
||||
"SCL0",
|
||||
"NC", /* GPIO30 */
|
||||
"LAN_RUN",
|
||||
"CAM_GPIO1",
|
||||
"NC", /* GPIO33 */
|
||||
"NC", /* GPIO34 */
|
||||
"PWR_LOW_N",
|
||||
"NC", /* GPIO36 */
|
||||
"NC", /* GPIO37 */
|
||||
"USB_LIMIT",
|
||||
"NC", /* GPIO39 */
|
||||
"PWM0_OUT",
|
||||
"CAM_GPIO0",
|
||||
"SMPS_SCL",
|
||||
"SMPS_SDA",
|
||||
"ETH_CLK",
|
||||
"PWM1_OUT",
|
||||
"HDMI_HPD_N",
|
||||
"STATUS_LED",
|
||||
/* Used by SD Card */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <40 45>;
|
||||
brcm,function = <4>;
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
&leds {
|
||||
led_pwr: led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "input";
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
|
||||
pwr_led_gpio = <&led_pwr>,"gpios:4";
|
||||
pwr_led_activelow = <&led_pwr>,"gpios:8";
|
||||
pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
215
arch/arm/boot/dts/broadcom/bcm2709-rpi-cm2.dts
Normal file
215
arch/arm/boot/dts/broadcom/bcm2709-rpi-cm2.dts
Normal file
@@ -0,0 +1,215 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2709.dtsi"
|
||||
#include "bcm2709-rpi.dtsi"
|
||||
#include "bcm283x-rpi-csi0-2lane.dtsi"
|
||||
#include "bcm283x-rpi-csi1-4lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,2-compute-module", "brcm,bcm2836";
|
||||
model = "Raspberry Pi Compute Module 2";
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 2 GPIO_ACTIVE_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
cam0_reg: &cam0_regulator {
|
||||
gpio = <&gpio 30 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* This is based on the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "GPIO0",
|
||||
"GPIO1",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"GPIO28",
|
||||
"GPIO29",
|
||||
"GPIO30",
|
||||
"GPIO31",
|
||||
"GPIO32",
|
||||
"GPIO33",
|
||||
"GPIO34",
|
||||
"GPIO35",
|
||||
"GPIO36",
|
||||
"GPIO37",
|
||||
"GPIO38",
|
||||
"GPIO39",
|
||||
"GPIO40",
|
||||
"GPIO41",
|
||||
"GPIO42",
|
||||
"GPIO43",
|
||||
"GPIO44",
|
||||
"GPIO45",
|
||||
"SMPS_SCL",
|
||||
"SMPS_SDA",
|
||||
/* Used by eMMC */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
};
|
||||
};
|
||||
|
||||
&firmware {
|
||||
expgpio: expgpio {
|
||||
compatible = "raspberrypi,firmware-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-line-names = "HDMI_HPD_N",
|
||||
"EMMC_EN_N",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
virtgpio: virtgpio {
|
||||
compatible = "brcm,bcm2835-virtgpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&virtgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&expgpio 0 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
8
arch/arm/boot/dts/broadcom/bcm2709-rpi.dtsi
Normal file
8
arch/arm/boot/dts/broadcom/bcm2709-rpi.dtsi
Normal file
@@ -0,0 +1,8 @@
|
||||
#include "bcm2708-rpi.dtsi"
|
||||
|
||||
&vchiq {
|
||||
compatible = "brcm,bcm2836-vchiq", "brcm,bcm2835-vchiq";
|
||||
};
|
||||
|
||||
i2c_arm: &i2c1 {};
|
||||
i2c_vc: &i2c0 {};
|
||||
29
arch/arm/boot/dts/broadcom/bcm2709.dtsi
Normal file
29
arch/arm/boot/dts/broadcom/bcm2709.dtsi
Normal file
@@ -0,0 +1,29 @@
|
||||
#define i2c0 i2c0if
|
||||
#include "bcm2836.dtsi"
|
||||
#undef i2c0
|
||||
#include "bcm270x.dtsi"
|
||||
|
||||
/ {
|
||||
soc {
|
||||
ranges = <0x7e000000 0x3f000000 0x01000000>,
|
||||
<0x40000000 0x40000000 0x00040000>;
|
||||
|
||||
dma-ranges = <0xc0000000 0x00000000 0x3f000000>,
|
||||
<0x7e000000 0x3f000000 0x01000000>;
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
arm_freq = <&v7_cpu0>, "clock-frequency:0",
|
||||
<&v7_cpu1>, "clock-frequency:0",
|
||||
<&v7_cpu2>, "clock-frequency:0",
|
||||
<&v7_cpu3>, "clock-frequency:0";
|
||||
};
|
||||
};
|
||||
|
||||
&system_timer {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
status = "disabled";
|
||||
};
|
||||
201
arch/arm/boot/dts/broadcom/bcm270x-rpi.dtsi
Normal file
201
arch/arm/boot/dts/broadcom/bcm270x-rpi.dtsi
Normal file
@@ -0,0 +1,201 @@
|
||||
/* Downstream modifications to bcm2835-rpi.dtsi */
|
||||
|
||||
/ {
|
||||
aliases: aliases {
|
||||
aux = &aux;
|
||||
sound = &sound;
|
||||
soc = &soc;
|
||||
dma = &dma;
|
||||
intc = &intc;
|
||||
watchdog = &watchdog;
|
||||
random = &random;
|
||||
mailbox = &mailbox;
|
||||
gpio = &gpio;
|
||||
uart0 = &uart0;
|
||||
uart1 = &uart1;
|
||||
sdhost = &sdhost;
|
||||
mmc = &mmc;
|
||||
mmc1 = &mmc;
|
||||
mmc0 = &sdhost;
|
||||
i2s = &i2s;
|
||||
i2c0 = &i2c0;
|
||||
i2c1 = &i2c1;
|
||||
i2c10 = &i2c_csi_dsi;
|
||||
i2c = &i2c_arm;
|
||||
spi0 = &spi0;
|
||||
spi1 = &spi1;
|
||||
spi2 = &spi2;
|
||||
usb = &usb;
|
||||
leds = &leds;
|
||||
fb = &fb;
|
||||
thermal = &thermal;
|
||||
axiperf = &axiperf;
|
||||
};
|
||||
|
||||
/* Define these notional regulators for use by overlays */
|
||||
vdd_3v3_reg: fixedregulator_3v3 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-always-on;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-name = "3v3";
|
||||
};
|
||||
|
||||
vdd_5v0_reg: fixedregulator_5v0 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-always-on;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-name = "5v0";
|
||||
};
|
||||
|
||||
soc {
|
||||
gpiomem {
|
||||
compatible = "brcm,bcm2835-gpiomem";
|
||||
reg = <0x7e200000 0x1000>;
|
||||
};
|
||||
|
||||
fb: fb {
|
||||
compatible = "brcm,bcm2708-fb";
|
||||
firmware = <&firmware>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* External sound card */
|
||||
sound: sound {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
cache_line_size;
|
||||
|
||||
uart0 = <&uart0>,"status";
|
||||
uart1 = <&uart1>,"status";
|
||||
i2s = <&i2s>,"status";
|
||||
spi = <&spi0>,"status";
|
||||
i2c0 = <&i2c0if>,"status",<&i2c0mux>,"status";
|
||||
i2c1 = <&i2c1>,"status";
|
||||
i2c = <&i2c1>,"status";
|
||||
i2c_arm = <&i2c1>,"status";
|
||||
i2c_vc = <&i2c0if>,"status",<&i2c0mux>,"status";
|
||||
i2c0_baudrate = <&i2c0if>,"clock-frequency:0";
|
||||
i2c1_baudrate = <&i2c1>,"clock-frequency:0";
|
||||
i2c_baudrate = <&i2c1>,"clock-frequency:0";
|
||||
i2c_arm_baudrate = <&i2c1>,"clock-frequency:0";
|
||||
i2c_vc_baudrate = <&i2c0if>,"clock-frequency:0";
|
||||
|
||||
watchdog = <&watchdog>,"early-watchdog?";
|
||||
random = <&random>,"status";
|
||||
sd_overclock = <&sdhost>,"brcm,overclock-50:0";
|
||||
sd_force_pio = <&sdhost>,"brcm,force-pio?";
|
||||
sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
|
||||
sd_debug = <&sdhost>,"brcm,debug";
|
||||
sdio_overclock = <&mmc>,"brcm,overclock-50:0",
|
||||
<&mmcnr>,"brcm,overclock-50:0";
|
||||
axiperf = <&axiperf>,"status";
|
||||
drm_fb0_vc4 = <&aliases>, "drm-fb0=",&vc4;
|
||||
drm_fb1_vc4 = <&aliases>, "drm-fb1=",&vc4;
|
||||
drm_fb2_vc4 = <&aliases>, "drm-fb2=",&vc4;
|
||||
|
||||
cam1_sync = <&csi1>, "sync-gpios:0=", <&gpio>,
|
||||
<&csi1>, "sync-gpios:4",
|
||||
<&csi1>, "sync-gpios:8=", <GPIO_ACTIVE_HIGH>;
|
||||
cam1_sync_inverted = <&csi1>, "sync-gpios:0=", <&gpio>,
|
||||
<&csi1>, "sync-gpios:4",
|
||||
<&csi1>, "sync-gpios:8=", <GPIO_ACTIVE_LOW>;
|
||||
cam0_sync = <&csi0>, "sync-gpios:0=", <&gpio>,
|
||||
<&csi0>, "sync-gpios:4",
|
||||
<&csi0>, "sync-gpios:8=", <GPIO_ACTIVE_HIGH>;
|
||||
cam0_sync_inverted = <&csi0>, "sync-gpios:0=", <&gpio>,
|
||||
<&csi0>, "sync-gpios:4",
|
||||
<&csi0>, "sync-gpios:8=", <GPIO_ACTIVE_LOW>;
|
||||
|
||||
cam0_reg = <&cam0_reg>,"status";
|
||||
cam0_reg_gpio = <&cam0_reg>,"gpio:4",
|
||||
<&cam0_reg>,"gpio:0=", <&gpio>;
|
||||
cam1_reg = <&cam1_reg>,"status";
|
||||
cam1_reg_gpio = <&cam1_reg>,"gpio:4",
|
||||
<&cam1_reg>,"gpio:0=", <&gpio>;
|
||||
|
||||
strict_gpiod = <&chosen>, "bootargs=pinctrl_bcm2835.persist_gpio_outputs=n";
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
skip-init;
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
skip-init;
|
||||
};
|
||||
|
||||
&txp {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&i2c0mux {
|
||||
pinctrl-names = "i2c0", "i2c_csi_dsi";
|
||||
/delete-property/ clock-frequency;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2s_clk_producer: &i2s {};
|
||||
i2s_clk_consumer: &i2s {};
|
||||
|
||||
&clocks {
|
||||
firmware = <&firmware>;
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_gpio48>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
&cpu_thermal {
|
||||
// Add some labels
|
||||
thermal_trips: trips {
|
||||
cpu-crit {
|
||||
// Raise upstream limit of 90C
|
||||
temperature = <110000>;
|
||||
};
|
||||
};
|
||||
cooling_maps: cooling-maps {
|
||||
};
|
||||
};
|
||||
|
||||
&vec {
|
||||
clocks = <&firmware_clocks 15>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&firmware {
|
||||
vcio: vcio {
|
||||
compatible = "raspberrypi,vcio";
|
||||
};
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
raspberrypi,firmware = <&firmware>;
|
||||
};
|
||||
|
||||
#ifndef BCM2711
|
||||
|
||||
&hdmi {
|
||||
reg-names = "hdmi",
|
||||
"hd";
|
||||
clocks = <&firmware_clocks 9>,
|
||||
<&firmware_clocks 13>;
|
||||
dmas = <&dma (17|(1<<27)|(1<<24))>;
|
||||
};
|
||||
|
||||
#endif
|
||||
265
arch/arm/boot/dts/broadcom/bcm270x.dtsi
Normal file
265
arch/arm/boot/dts/broadcom/bcm270x.dtsi
Normal file
@@ -0,0 +1,265 @@
|
||||
/* Downstream bcm283x.dtsi diff */
|
||||
#include <dt-bindings/power/raspberrypi-power.h>
|
||||
|
||||
/ {
|
||||
chosen: chosen {
|
||||
// Disable audio by default
|
||||
bootargs = "coherent_pool=1M snd_bcm2835.enable_headphones=0 cgroup_disable=memory";
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
soc: soc {
|
||||
watchdog: watchdog@7e100000 {
|
||||
/* Add label */
|
||||
};
|
||||
|
||||
random: rng@7e104000 {
|
||||
/* Add label */
|
||||
};
|
||||
|
||||
spi0: spi@7e204000 {
|
||||
/* Add label */
|
||||
};
|
||||
|
||||
#ifndef BCM2711
|
||||
pixelvalve0: pixelvalve@7e206000 {
|
||||
/* Add label */
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pixelvalve1: pixelvalve@7e207000 {
|
||||
/* Add label */
|
||||
status = "disabled";
|
||||
};
|
||||
#endif
|
||||
|
||||
/delete-node/ mmc@7e300000;
|
||||
|
||||
sdhci: mmc: mmc@7e300000 {
|
||||
compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
|
||||
reg = <0x7e300000 0x100>;
|
||||
interrupts = <2 30>;
|
||||
clocks = <&clocks BCM2835_CLOCK_EMMC>;
|
||||
dmas = <&dma 11>;
|
||||
dma-names = "rx-tx";
|
||||
brcm,overclock-50 = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
/* A clone of mmc but with non-removable set */
|
||||
mmcnr: mmcnr@7e300000 {
|
||||
compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
|
||||
reg = <0x7e300000 0x100>;
|
||||
interrupts = <2 30>;
|
||||
clocks = <&clocks BCM2835_CLOCK_EMMC>;
|
||||
dmas = <&dma 11>;
|
||||
dma-names = "rx-tx";
|
||||
brcm,overclock-50 = <0>;
|
||||
non-removable;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
hvs: hvs@7e400000 {
|
||||
/* Add label */
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
firmwarekms: firmwarekms@7e600000 {
|
||||
compatible = "raspberrypi,rpi-firmware-kms";
|
||||
/* SMI interrupt reg */
|
||||
reg = <0x7e600000 0x100>;
|
||||
interrupts = <2 16>;
|
||||
brcm,firmware = <&firmware>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
smi: smi@7e600000 {
|
||||
compatible = "brcm,bcm2835-smi";
|
||||
reg = <0x7e600000 0x100>;
|
||||
interrupts = <2 16>;
|
||||
clocks = <&clocks BCM2835_CLOCK_SMI>;
|
||||
assigned-clocks = <&clocks BCM2835_CLOCK_SMI>;
|
||||
assigned-clock-rates = <125000000>;
|
||||
dmas = <&dma 4>;
|
||||
dma-names = "rx-tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
#ifndef BCM2711
|
||||
pixelvalve2: pixelvalve@7e807000 {
|
||||
/* Add label */
|
||||
status = "disabled";
|
||||
};
|
||||
#endif
|
||||
|
||||
hdmi@7e902000 { /* hdmi */
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@7e980000 { /* usb */
|
||||
compatible = "brcm,bcm2708-usb";
|
||||
reg = <0x7e980000 0x10000>,
|
||||
<0x7e006000 0x1000>;
|
||||
interrupt-names = "usb",
|
||||
"soft";
|
||||
interrupts = <1 9>,
|
||||
<2 0>;
|
||||
};
|
||||
|
||||
#ifndef BCM2711
|
||||
v3d@7ec00000 { /* vd3 */
|
||||
compatible = "brcm,vc4-v3d";
|
||||
power-domains = <&power RPI_POWER_DOMAIN_V3D>;
|
||||
status = "disabled";
|
||||
};
|
||||
#endif
|
||||
|
||||
axiperf: axiperf {
|
||||
compatible = "brcm,bcm2835-axiperf";
|
||||
reg = <0x7e009800 0x100>,
|
||||
<0x7ee08000 0x100>;
|
||||
firmware = <&firmware>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c0mux: i2c0mux {
|
||||
compatible = "i2c-mux-pinctrl";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c-parent = <&i2c0if>;
|
||||
|
||||
status = "disabled";
|
||||
|
||||
i2c0: i2c@0 {
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
i2c_csi_dsi: i2c@1 {
|
||||
reg = <1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
cam1_reg: cam1_regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "cam1-reg";
|
||||
enable-active-high;
|
||||
/* Needs to be enabled, as removing a regulator is very unsafe */
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
cam1_clk: cam1_clk {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
cam0_regulator: cam0_regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "cam0-reg";
|
||||
enable-active-high;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
cam0_clk: cam0_clk {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
cam_dummy_reg: cam_dummy_reg {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "cam-dummy-reg";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
cam0-pwdn-ctrl;
|
||||
cam0-pwdn;
|
||||
cam0-led-ctrl;
|
||||
cam0-led;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
interrupts = <2 17>, <2 18>;
|
||||
|
||||
dpi_18bit_cpadhi_gpio0: dpi_18bit_cpadhi_gpio0 {
|
||||
brcm,pins = <0 1 2 3 4 5 6 7 8 9
|
||||
12 13 14 15 16 17
|
||||
20 21 22 23 24 25>;
|
||||
brcm,function = <BCM2835_FSEL_ALT2>;
|
||||
brcm,pull = <0>; /* no pull */
|
||||
};
|
||||
dpi_18bit_cpadhi_gpio2: dpi_18bit_cpadhi_gpio2 {
|
||||
brcm,pins = <2 3 4 5 6 7 8 9
|
||||
12 13 14 15 16 17
|
||||
20 21 22 23 24 25>;
|
||||
brcm,function = <BCM2835_FSEL_ALT2>;
|
||||
};
|
||||
dpi_18bit_gpio0: dpi_18bit_gpio0 {
|
||||
brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
|
||||
12 13 14 15 16 17 18 19
|
||||
20 21>;
|
||||
brcm,function = <BCM2835_FSEL_ALT2>;
|
||||
};
|
||||
dpi_18bit_gpio2: dpi_18bit_gpio2 {
|
||||
brcm,pins = <2 3 4 5 6 7 8 9 10 11
|
||||
12 13 14 15 16 17 18 19
|
||||
20 21>;
|
||||
brcm,function = <BCM2835_FSEL_ALT2>;
|
||||
};
|
||||
dpi_16bit_gpio0: dpi_16bit_gpio0 {
|
||||
brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
|
||||
12 13 14 15 16 17 18 19>;
|
||||
brcm,function = <BCM2835_FSEL_ALT2>;
|
||||
};
|
||||
dpi_16bit_gpio2: dpi_16bit_gpio2 {
|
||||
brcm,pins = <2 3 4 5 6 7 8 9 10 11
|
||||
12 13 14 15 16 17 18 19>;
|
||||
brcm,function = <BCM2835_FSEL_ALT2>;
|
||||
};
|
||||
dpi_16bit_cpadhi_gpio0: dpi_16bit_cpadhi_gpio0 {
|
||||
brcm,pins = <0 1 2 3 4 5 6 7 8
|
||||
12 13 14 15 16 17
|
||||
20 21 22 23 24>;
|
||||
brcm,function = <BCM2835_FSEL_ALT2>;
|
||||
};
|
||||
dpi_16bit_cpadhi_gpio2: dpi_16bit_cpadhi_gpio2 {
|
||||
brcm,pins = <2 3 4 5 6 7 8
|
||||
12 13 14 15 16 17
|
||||
20 21 22 23 24>;
|
||||
brcm,function = <BCM2835_FSEL_ALT2>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
compatible = "arm,pl011-axi";
|
||||
/* Enable CTS bug workaround */
|
||||
cts-event-workaround;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
#sound-dai-cells = <0>;
|
||||
dmas = <&dma 2>, <&dma 3>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
dmas = <&dma (13|(1<<29))>;
|
||||
dma-names = "rx-tx";
|
||||
bus-width = <4>;
|
||||
brcm,overclock-50 = <0>;
|
||||
brcm,pio-limit = <1>;
|
||||
firmware = <&firmware>;
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
dmas = <&dma 6>, <&dma 7>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
204
arch/arm/boot/dts/broadcom/bcm2710-rpi-2-b.dts
Normal file
204
arch/arm/boot/dts/broadcom/bcm2710-rpi-2-b.dts
Normal file
@@ -0,0 +1,204 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2710.dtsi"
|
||||
#include "bcm2709-rpi.dtsi"
|
||||
#include "bcm283x-rpi-smsc9514.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,2-model-b-rev2", "brcm,bcm2837";
|
||||
model = "Raspberry Pi 2 Model B rev 1.2";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* Taken from rpi_SCH_2b_1p2_reduced.pdf and
|
||||
* the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"SDA0",
|
||||
"SCL0",
|
||||
"NC", /* GPIO30 */
|
||||
"LAN_RUN",
|
||||
"CAM_GPIO1",
|
||||
"NC", /* GPIO33 */
|
||||
"NC", /* GPIO34 */
|
||||
"PWR_LOW_N",
|
||||
"NC", /* GPIO36 */
|
||||
"NC", /* GPIO37 */
|
||||
"USB_LIMIT",
|
||||
"NC", /* GPIO39 */
|
||||
"PWM0_OUT",
|
||||
"CAM_GPIO0",
|
||||
"SMPS_SCL",
|
||||
"SMPS_SDA",
|
||||
"ETH_CLK",
|
||||
"PWM1_OUT",
|
||||
"HDMI_HPD_N",
|
||||
"STATUS_LED",
|
||||
/* Used by SD Card */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <40 45>;
|
||||
brcm,function = <4>;
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
&leds {
|
||||
led_pwr: led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "input";
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 41 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
|
||||
pwr_led_gpio = <&led_pwr>,"gpios:4";
|
||||
pwr_led_activelow = <&led_pwr>,"gpios:8";
|
||||
pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
295
arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
Normal file
295
arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
Normal file
@@ -0,0 +1,295 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2710.dtsi"
|
||||
#include "bcm2709-rpi.dtsi"
|
||||
#include "bcm283x-rpi-lan7515.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
||||
#include "bcm271x-rpi-bt.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837";
|
||||
model = "Raspberry Pi 3 Model B+";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart1;
|
||||
serial1 = &uart0;
|
||||
mmc1 = &mmcnr;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* Taken from rpi_SCH_3bplus_1p0_reduced.pdf and
|
||||
* the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"HDMI_HPD_N",
|
||||
"STATUS_LED_G",
|
||||
/* Used by BT module */
|
||||
"CTS0",
|
||||
"RTS0",
|
||||
"TXD0",
|
||||
"RXD0",
|
||||
/* Used by Wifi */
|
||||
"SD1_CLK",
|
||||
"SD1_CMD",
|
||||
"SD1_DATA0",
|
||||
"SD1_DATA1",
|
||||
"SD1_DATA2",
|
||||
"SD1_DATA3",
|
||||
"PWM0_OUT",
|
||||
"PWM1_OUT",
|
||||
"ETH_CLK",
|
||||
"WIFI_CLK",
|
||||
"SDA0",
|
||||
"SCL0",
|
||||
"SMPS_SCL",
|
||||
"SMPS_SDA",
|
||||
/* Used by SD Card */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
sdio_pins: sdio_pins {
|
||||
brcm,pins = <34 35 36 37 38 39>;
|
||||
brcm,function = <7>; // alt3 = SD1
|
||||
brcm,pull = <0 2 2 2 2 2>;
|
||||
};
|
||||
|
||||
bt_pins: bt_pins {
|
||||
brcm,pins = <43>;
|
||||
brcm,function = <4>; /* alt0:GPCLK2 */
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
|
||||
uart0_pins: uart0_pins {
|
||||
brcm,pins = <32 33>;
|
||||
brcm,function = <7>; /* alt3=UART0 */
|
||||
brcm,pull = <0 2>;
|
||||
};
|
||||
|
||||
uart1_pins: uart1_pins {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
brcm,pull;
|
||||
};
|
||||
|
||||
uart1_bt_pins: uart1_bt_pins {
|
||||
brcm,pins = <32 33 30 31>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>; /* alt5=UART1 */
|
||||
brcm,pull = <0 2 2 0>;
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <40 41>;
|
||||
brcm,function = <4>;
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&mmcnr {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdio_pins>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
brcmf: wifi@1 {
|
||||
reg = <1>;
|
||||
compatible = "brcm,bcm4329-fmac";
|
||||
};
|
||||
};
|
||||
|
||||
&firmware {
|
||||
expgpio: expgpio {
|
||||
compatible = "raspberrypi,firmware-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-line-names = "BT_ON",
|
||||
"WL_ON",
|
||||
"PWR_LED_R",
|
||||
"LAN_RUN",
|
||||
"NC",
|
||||
"CAM_GPIO0",
|
||||
"CAM_GPIO1",
|
||||
"NC";
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pins &bt_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart1_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
&leds {
|
||||
led_pwr: led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
ð_phy {
|
||||
microchip,eee-enabled;
|
||||
microchip,tx-lpi-timer = <600>; /* non-aggressive*/
|
||||
microchip,downshift-after = <2>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
|
||||
pwr_led_gpio = <&led_pwr>,"gpios:4";
|
||||
pwr_led_activelow = <&led_pwr>,"gpios:8";
|
||||
pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
|
||||
|
||||
eee = <ð_phy>,"microchip,eee-enabled?";
|
||||
tx_lpi_timer = <ð_phy>,"microchip,tx-lpi-timer:0";
|
||||
eth_led0 = <ð_phy>,"microchip,led-modes:0";
|
||||
eth_led1 = <ð_phy>,"microchip,led-modes:4";
|
||||
eth_downshift_after = <ð_phy>,"microchip,downshift-after:0";
|
||||
eth_max_speed = <ð_phy>,"max-speed:0";
|
||||
};
|
||||
};
|
||||
293
arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts
Normal file
293
arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts
Normal file
@@ -0,0 +1,293 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2710.dtsi"
|
||||
#include "bcm2709-rpi.dtsi"
|
||||
#include "bcm283x-rpi-smsc9514.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
||||
#include "bcm271x-rpi-bt.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
|
||||
model = "Raspberry Pi 3 Model B";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart1;
|
||||
serial1 = &uart0;
|
||||
mmc1 = &mmcnr;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* Taken from rpi_SCH_3b_1p2_reduced.pdf and
|
||||
* the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"NC", /* GPIO 28 */
|
||||
"LAN_RUN_BOOT",
|
||||
/* Used by BT module */
|
||||
"CTS0",
|
||||
"RTS0",
|
||||
"TXD0",
|
||||
"RXD0",
|
||||
/* Used by Wifi */
|
||||
"SD1_CLK",
|
||||
"SD1_CMD",
|
||||
"SD1_DATA0",
|
||||
"SD1_DATA1",
|
||||
"SD1_DATA2",
|
||||
"SD1_DATA3",
|
||||
"PWM0_OUT",
|
||||
"PWM1_OUT",
|
||||
"ETH_CLK",
|
||||
"WIFI_CLK",
|
||||
"SDA0",
|
||||
"SCL0",
|
||||
"SMPS_SCL",
|
||||
"SMPS_SDA",
|
||||
/* Used by SD Card */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
sdio_pins: sdio_pins {
|
||||
brcm,pins = <34 35 36 37 38 39>;
|
||||
brcm,function = <7>; // alt3 = SD1
|
||||
brcm,pull = <0 2 2 2 2 2>;
|
||||
};
|
||||
|
||||
bt_pins: bt_pins {
|
||||
brcm,pins = <43>;
|
||||
brcm,function = <4>; /* alt0:GPCLK2 */
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
|
||||
uart0_pins: uart0_pins {
|
||||
brcm,pins = <32 33>;
|
||||
brcm,function = <7>; /* alt3=UART0 */
|
||||
brcm,pull = <0 2>;
|
||||
};
|
||||
|
||||
uart1_pins: uart1_pins {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
brcm,pull;
|
||||
};
|
||||
|
||||
uart1_bt_pins: uart1_bt_pins {
|
||||
brcm,pins = <32 33>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>; /* alt5=UART1 */
|
||||
brcm,pull = <0 2>;
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <40 41>;
|
||||
brcm,function = <4>;
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&mmcnr {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdio_pins>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
brcmf: wifi@1 {
|
||||
reg = <1>;
|
||||
compatible = "brcm,bcm4329-fmac";
|
||||
};
|
||||
};
|
||||
|
||||
&firmware {
|
||||
expgpio: expgpio {
|
||||
compatible = "raspberrypi,firmware-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-line-names = "BT_ON",
|
||||
"WL_ON",
|
||||
"STATUS_LED",
|
||||
"LAN_RUN",
|
||||
"HDMI_HPD_N",
|
||||
"CAM_GPIO0",
|
||||
"CAM_GPIO1",
|
||||
"PWR_LOW_N";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
virtgpio: virtgpio {
|
||||
compatible = "brcm,bcm2835-virtgpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pins &bt_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart1_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&bt {
|
||||
max-speed = <921600>;
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&virtgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
&leds {
|
||||
led_pwr: led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&expgpio 7 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "input";
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&expgpio 4 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
|
||||
pwr_led_gpio = <&led_pwr>,"gpios:4";
|
||||
pwr_led_activelow = <&led_pwr>,"gpios:8";
|
||||
pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
252
arch/arm/boot/dts/broadcom/bcm2710-rpi-cm0.dts
Normal file
252
arch/arm/boot/dts/broadcom/bcm2710-rpi-cm0.dts
Normal file
@@ -0,0 +1,252 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2710.dtsi"
|
||||
#include "bcm2709-rpi.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
||||
#include "bcm2708-rpi-bt.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,0-compute-module", "brcm,bcm2837";
|
||||
model = "Raspberry Pi Compute Module 0";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart1;
|
||||
serial1 = &uart0;
|
||||
mmc1 = &mmcnr;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* These names are (mostly) from the schematic.
|
||||
*/
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"HDMI_HPD_N",
|
||||
"STATUS_LED_N",
|
||||
/* Used by BT module */
|
||||
"BT_CTS",
|
||||
"BT_RTS",
|
||||
"BT_TXD",
|
||||
"BT_RXD",
|
||||
/* Used by Wifi */
|
||||
"WIFI_SD_CLK",
|
||||
"WIFI_SD_CMD",
|
||||
"WIFI_SD_D0",
|
||||
"WIFI_SD_D1",
|
||||
"WIFI_SD_D2",
|
||||
"WIFI_SD_D3",
|
||||
"CAM_GPIO", /* GPIO40 */
|
||||
"WL_ON", /* GPIO41 */
|
||||
"BT_ON", /* GPIO42 */
|
||||
"EMMC_REENABLE_N", /* GPIO43 */
|
||||
"SDA0", /* GPIO44 */
|
||||
"SCL0", /* GPIO45 */
|
||||
"INT_SDA", /* GPIO46 */
|
||||
"INT_SCL", /* GPIO47 */
|
||||
/* Used by SD Card */
|
||||
"SD_CLK",
|
||||
"SD_CMD",
|
||||
"SD_D0",
|
||||
"SD_D1",
|
||||
"SD_D2",
|
||||
"SD_D3";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
sdio_pins: sdio_pins {
|
||||
brcm,pins = <34 35 36 37 38 39>;
|
||||
brcm,function = <7>; // alt3 = SD1
|
||||
brcm,pull = <0 2 2 2 2 2>;
|
||||
};
|
||||
|
||||
bt_pins: bt_pins {
|
||||
brcm,pins = <43>;
|
||||
brcm,function = <4>; /* alt0:GPCLK2 */
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
|
||||
uart0_pins: uart0_pins {
|
||||
brcm,pins = <30 31 32 33>;
|
||||
brcm,function = <7>; /* alt3=UART0 */
|
||||
brcm,pull = <2 0 0 2>; /* up none none up */
|
||||
};
|
||||
|
||||
uart1_pins: uart1_pins {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
brcm,pull;
|
||||
};
|
||||
|
||||
uart1_bt_pins: uart1_bt_pins {
|
||||
brcm,pins = <32 33 30 31>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>; /* alt5=UART1 */
|
||||
brcm,pull = <0 2 2 0>;
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <>;
|
||||
brcm,function = <>;
|
||||
};
|
||||
};
|
||||
|
||||
&mmcnr {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdio_pins>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
brcmf: wifi@1 {
|
||||
reg = <1>;
|
||||
compatible = "brcm,bcm4329-fmac";
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pins &bt_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart1_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&gpio 29 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "actpwr";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&bt {
|
||||
shutdown-gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&minibt {
|
||||
shutdown-gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 40 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
215
arch/arm/boot/dts/broadcom/bcm2710-rpi-cm3.dts
Normal file
215
arch/arm/boot/dts/broadcom/bcm2710-rpi-cm3.dts
Normal file
@@ -0,0 +1,215 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2710.dtsi"
|
||||
#include "bcm2709-rpi.dtsi"
|
||||
#include "bcm283x-rpi-csi0-2lane.dtsi"
|
||||
#include "bcm283x-rpi-csi1-4lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,3-compute-module", "brcm,bcm2837";
|
||||
model = "Raspberry Pi Compute Module 3";
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 3 GPIO_ACTIVE_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
cam0_reg: &cam0_regulator {
|
||||
gpio = <&gpio 31 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* This is based on the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "GPIO0",
|
||||
"GPIO1",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"GPIO28",
|
||||
"GPIO29",
|
||||
"GPIO30",
|
||||
"GPIO31",
|
||||
"GPIO32",
|
||||
"GPIO33",
|
||||
"GPIO34",
|
||||
"GPIO35",
|
||||
"GPIO36",
|
||||
"GPIO37",
|
||||
"GPIO38",
|
||||
"GPIO39",
|
||||
"GPIO40",
|
||||
"GPIO41",
|
||||
"GPIO42",
|
||||
"GPIO43",
|
||||
"GPIO44",
|
||||
"GPIO45",
|
||||
"SMPS_SCL",
|
||||
"SMPS_SDA",
|
||||
/* Used by eMMC */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
};
|
||||
};
|
||||
|
||||
&firmware {
|
||||
expgpio: expgpio {
|
||||
compatible = "raspberrypi,firmware-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-line-names = "HDMI_HPD_N",
|
||||
"EMMC_EN_N",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC",
|
||||
"NC";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
virtgpio: virtgpio {
|
||||
compatible = "brcm,bcm2835-virtgpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&virtgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&expgpio 0 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
257
arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2-w.dts
Normal file
257
arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2-w.dts
Normal file
@@ -0,0 +1,257 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2710.dtsi"
|
||||
#include "bcm2709-rpi.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
||||
#include "bcm2708-rpi-bt.dtsi"
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,model-zero-2-w", "brcm,bcm2837";
|
||||
model = "Raspberry Pi Zero 2 W";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart1;
|
||||
serial1 = &uart0;
|
||||
mmc1 = &mmcnr;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* This is based on the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "NC" = not connected (no rail from the SoC)
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"HDMI_HPD_N",
|
||||
"STATUS_LED_N",
|
||||
/* Used by BT module */
|
||||
"CTS0",
|
||||
"RTS0",
|
||||
"TXD0",
|
||||
"RXD0",
|
||||
/* Used by Wifi */
|
||||
"SD1_CLK",
|
||||
"SD1_CMD",
|
||||
"SD1_DATA0",
|
||||
"SD1_DATA1",
|
||||
"SD1_DATA2",
|
||||
"SD1_DATA3",
|
||||
"CAM_GPIO1", /* GPIO40 */
|
||||
"WL_ON", /* GPIO41 */
|
||||
"BT_ON", /* GPIO42 */
|
||||
"WIFI_CLK", /* GPIO43 */
|
||||
"SDA0", /* GPIO44 */
|
||||
"SCL0", /* GPIO45 */
|
||||
"SMPS_SCL", /* GPIO46 */
|
||||
"SMPS_SDA", /* GPIO47 */
|
||||
/* Used by SD Card */
|
||||
"SD_CLK_R",
|
||||
"SD_CMD_R",
|
||||
"SD_DATA0_R",
|
||||
"SD_DATA1_R",
|
||||
"SD_DATA2_R",
|
||||
"SD_DATA3_R";
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; /* output */
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <4>; /* alt0 */
|
||||
};
|
||||
|
||||
sdio_pins: sdio_pins {
|
||||
brcm,pins = <34 35 36 37 38 39>;
|
||||
brcm,function = <7>; // alt3 = SD1
|
||||
brcm,pull = <0 2 2 2 2 2>;
|
||||
};
|
||||
|
||||
bt_pins: bt_pins {
|
||||
brcm,pins = <43>;
|
||||
brcm,function = <4>; /* alt0:GPCLK2 */
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
|
||||
uart0_pins: uart0_pins {
|
||||
brcm,pins = <30 31 32 33>;
|
||||
brcm,function = <7>; /* alt3=UART0 */
|
||||
brcm,pull = <2 0 0 2>; /* up none none up */
|
||||
};
|
||||
|
||||
uart1_pins: uart1_pins {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
brcm,pull;
|
||||
};
|
||||
|
||||
uart1_bt_pins: uart1_bt_pins {
|
||||
brcm,pins = <32 33 30 31>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>; /* alt5=UART1 */
|
||||
brcm,pull = <0 2 2 0>;
|
||||
};
|
||||
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <>;
|
||||
brcm,function = <>;
|
||||
};
|
||||
};
|
||||
|
||||
&mmcnr {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdio_pins>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
brcmf: wifi@1 {
|
||||
reg = <1>;
|
||||
compatible = "brcm,bcm4329-fmac";
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pins &bt_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart1_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&gpio 29 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "actpwr";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&bt {
|
||||
shutdown-gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&minibt {
|
||||
shutdown-gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 40 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
1
arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2.dts
Normal file
1
arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2.dts
Normal file
@@ -0,0 +1 @@
|
||||
#include "bcm2710-rpi-zero-2-w.dts"
|
||||
32
arch/arm/boot/dts/broadcom/bcm2710.dtsi
Normal file
32
arch/arm/boot/dts/broadcom/bcm2710.dtsi
Normal file
@@ -0,0 +1,32 @@
|
||||
#define i2c0 i2c0if
|
||||
#include "bcm2837.dtsi"
|
||||
#undef i2c0
|
||||
#include "bcm270x.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2837", "brcm,bcm2836";
|
||||
|
||||
arm-pmu {
|
||||
compatible = "arm,cortex-a53-pmu", "arm,cortex-a7-pmu";
|
||||
};
|
||||
|
||||
soc {
|
||||
dma-ranges = <0xc0000000 0x00000000 0x3f000000>,
|
||||
<0x7e000000 0x3f000000 0x01000000>;
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
arm_freq = <&cpu0>, "clock-frequency:0",
|
||||
<&cpu1>, "clock-frequency:0",
|
||||
<&cpu2>, "clock-frequency:0",
|
||||
<&cpu3>, "clock-frequency:0";
|
||||
};
|
||||
};
|
||||
|
||||
&system_timer {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
status = "disabled";
|
||||
};
|
||||
@@ -1,11 +1,19 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
#define BCM2711
|
||||
#define i2c0 i2c0if
|
||||
#include "bcm2711.dtsi"
|
||||
#include "bcm2711-rpi.dtsi"
|
||||
/delete-node/&i2c0mux;
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
#include "bcm283x-rpi-usb-peripheral.dtsi"
|
||||
#include "bcm283x-rpi-wifi-bt.dtsi"
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#undef i2c0
|
||||
#include "bcm270x.dtsi"
|
||||
#define i2c0 i2c0mux
|
||||
#undef i2c0
|
||||
|
||||
/delete-node/ &cam1_reg;
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,4-model-b", "brcm,bcm2711";
|
||||
@@ -68,7 +76,7 @@
|
||||
"VDD_SD_IO_SEL",
|
||||
"CAM_GPIO", /* 5 */
|
||||
"SD_PWR_ON",
|
||||
"";
|
||||
"SD_OC_N";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
@@ -82,21 +90,21 @@
|
||||
*/
|
||||
gpio-line-names = "ID_SDA", /* 0 */
|
||||
"ID_SCL",
|
||||
"SDA1",
|
||||
"SCL1",
|
||||
"GPIO_GCLK",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5", /* 5 */
|
||||
"GPIO6",
|
||||
"SPI_CE1_N",
|
||||
"SPI_CE0_N",
|
||||
"SPI_MISO",
|
||||
"SPI_MOSI", /* 10 */
|
||||
"SPI_SCLK",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10", /* 10 */
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
/* Serial port */
|
||||
"TXD1",
|
||||
"RXD1", /* 15 */
|
||||
"GPIO14",
|
||||
"GPIO15", /* 15 */
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
@@ -214,7 +222,7 @@
|
||||
led@0 {
|
||||
reg = <0>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function = "lan";//LED_FUNCTION_LAN;
|
||||
default-state = "keep";
|
||||
};
|
||||
|
||||
@@ -222,7 +230,7 @@
|
||||
led@1 {
|
||||
reg = <1>;
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function = "lan";//LED_FUNCTION_LAN;
|
||||
default-state = "keep";
|
||||
};
|
||||
};
|
||||
@@ -270,3 +278,234 @@
|
||||
&wifi_pwrseq {
|
||||
reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
// =============================================
|
||||
// Downstream rpi- changes
|
||||
|
||||
#include "bcm271x-rpi-bt.dtsi"
|
||||
|
||||
/ {
|
||||
soc {
|
||||
/delete-node/ pixelvalve@7e807000;
|
||||
/delete-node/ hdmi@7e902000;
|
||||
};
|
||||
};
|
||||
|
||||
&phy1 {
|
||||
/delete-node/ leds;
|
||||
};
|
||||
|
||||
#include "bcm2711-rpi-ds.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
||||
|
||||
/ {
|
||||
/delete-node/ wifi-pwrseq;
|
||||
};
|
||||
|
||||
&mmcnr {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdio_pins>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-0 = <&uart0_pins &bt_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-0 = <&uart1_pins>;
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"RGMII_MDIO",
|
||||
"RGMIO_MDC",
|
||||
/* Used by BT module */
|
||||
"CTS0", /* 30 */
|
||||
"RTS0",
|
||||
"TXD0",
|
||||
"RXD0",
|
||||
/* Used by Wifi */
|
||||
"SD1_CLK",
|
||||
"SD1_CMD", /* 35 */
|
||||
"SD1_DATA0",
|
||||
"SD1_DATA1",
|
||||
"SD1_DATA2",
|
||||
"SD1_DATA3",
|
||||
/* Shared with SPI flash */
|
||||
"PWM0_MISO", /* 40 */
|
||||
"PWM1_MOSI",
|
||||
"STATUS_LED_G_CLK",
|
||||
"SPIFLASH_CE_N",
|
||||
"SDA0",
|
||||
"SCL0", /* 45 */
|
||||
"RGMII_RXCLK",
|
||||
"RGMII_RXCTL",
|
||||
"RGMII_RXD0",
|
||||
"RGMII_RXD1",
|
||||
"RGMII_RXD2", /* 50 */
|
||||
"RGMII_RXD3",
|
||||
"RGMII_TXCLK",
|
||||
"RGMII_TXCTL",
|
||||
"RGMII_TXD0",
|
||||
"RGMII_TXD1", /* 55 */
|
||||
"RGMII_TXD2",
|
||||
"RGMII_TXD3";
|
||||
|
||||
bt_pins: bt_pins {
|
||||
brcm,pins = "-"; // non-empty to keep btuart happy, //4 = 0
|
||||
// to fool pinctrl
|
||||
brcm,function = <0>;
|
||||
brcm,pull = <2>;
|
||||
};
|
||||
|
||||
uart0_pins: uart0_pins {
|
||||
brcm,pins = <32 33>;
|
||||
brcm,function = <BCM2835_FSEL_ALT3>;
|
||||
brcm,pull = <0 2>;
|
||||
};
|
||||
|
||||
uart1_pins: uart1_pins {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
brcm,pull;
|
||||
};
|
||||
|
||||
uart1_bt_pins: uart1_bt_pins {
|
||||
brcm,pins = <32 33 30 31>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>; /* alt5=UART1 */
|
||||
brcm,pull = <0 2 2 0>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
// =============================================
|
||||
// Board specific stuff here
|
||||
|
||||
&sdhost {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&phy1 {
|
||||
led-modes = <0x00 0x08>; /* link/activity link */
|
||||
};
|
||||
|
||||
&gpio {
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <40 41>;
|
||||
brcm,function = <4>;
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&led_act {
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
&led_pwr {
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
|
||||
pwr_led_gpio = <&led_pwr>,"gpios:4";
|
||||
pwr_led_activelow = <&led_pwr>,"gpios:8";
|
||||
pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
|
||||
|
||||
eth_led0 = <&phy1>,"led-modes:0";
|
||||
eth_led1 = <&phy1>,"led-modes:4";
|
||||
eth_max_speed = <&phy1>,"max-speed:0";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
#include "bcm2711-rpi-4-b.dts"
|
||||
|
||||
/ {
|
||||
@@ -37,8 +36,54 @@
|
||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
/delete-node/ &led_act;
|
||||
|
||||
&pm {
|
||||
/delete-property/ system-power-controller;
|
||||
};
|
||||
|
||||
// =============================================
|
||||
// Downstream rpi- changes
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
};
|
||||
|
||||
&audio_pins {
|
||||
brcm,pins = <>;
|
||||
brcm,function = <>;
|
||||
};
|
||||
|
||||
// Declare the LED but leave it disabled, in case a user wants to map it
|
||||
// to a GPIO on the header
|
||||
&led_act {
|
||||
default-state = "off";
|
||||
gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&led_pwr {
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
/delete-property/ gpio;
|
||||
};
|
||||
|
||||
cam0_reg: &cam_dummy_reg {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4",
|
||||
<&led_act>,"status=okay";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
eth_max_speed = <&phy1>,"max-speed:0";
|
||||
pwr_led_gpio = <&led_pwr>,"gpios:4";
|
||||
pwr_led_activelow = <&led_pwr>,"gpios:8";
|
||||
pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
|
||||
498
arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts
Normal file
498
arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts
Normal file
@@ -0,0 +1,498 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
#define BCM2711
|
||||
#define i2c0 i2c0if
|
||||
#include "bcm2711.dtsi"
|
||||
#include "bcm2711-rpi.dtsi"
|
||||
/delete-node/&i2c0mux;
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
#include "bcm283x-rpi-wifi-bt.dtsi"
|
||||
#undef i2c0
|
||||
#include "bcm270x.dtsi"
|
||||
#define i2c0 i2c0mux
|
||||
#undef i2c0
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,4-compute-module", "brcm,bcm2711";
|
||||
model = "Raspberry Pi Compute Module 4";
|
||||
|
||||
chosen {
|
||||
/* 8250 auxiliary UART instead of pl011 */
|
||||
stdout-path = "serial1:115200n8";
|
||||
};
|
||||
|
||||
sd_io_1v8_reg: sd_io_1v8_reg {
|
||||
compatible = "regulator-gpio";
|
||||
regulator-name = "vdd-sd-io";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-settling-time-us = <5000>;
|
||||
gpios = <&expgpio 4 GPIO_ACTIVE_HIGH>;
|
||||
states = <1800000 0x1>,
|
||||
<3300000 0x0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sd_vcc_reg: sd_vcc_reg {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc-sd";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
enable-active-high;
|
||||
gpio = <&expgpio 6 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
&bt {
|
||||
shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&ddc0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ddc1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&expgpio {
|
||||
gpio-line-names = "BT_ON",
|
||||
"WL_ON",
|
||||
"PWR_LED_OFF",
|
||||
"ANT1",
|
||||
"VDD_SD_IO_SEL",
|
||||
"CAM_GPIO",
|
||||
"SD_PWR_ON",
|
||||
"ANT2";
|
||||
|
||||
ant1: ant1 {
|
||||
gpio-hog;
|
||||
gpios = <3 GPIO_ACTIVE_HIGH>;
|
||||
output-high;
|
||||
};
|
||||
|
||||
ant2: ant2 {
|
||||
gpio-hog;
|
||||
gpios = <7 GPIO_ACTIVE_HIGH>;
|
||||
output-low;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* Parts taken from rpi_SCH_4b_4p0_reduced.pdf and
|
||||
* the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"SDA1",
|
||||
"SCL1",
|
||||
"GPIO_GCLK",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"SPI_CE1_N",
|
||||
"SPI_CE0_N",
|
||||
"SPI_MISO",
|
||||
"SPI_MOSI",
|
||||
"SPI_SCLK",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
/* Serial port */
|
||||
"TXD1",
|
||||
"RXD1",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"RGMII_MDIO",
|
||||
"RGMIO_MDC",
|
||||
/* Used by BT module */
|
||||
"CTS0",
|
||||
"RTS0",
|
||||
"TXD0",
|
||||
"RXD0",
|
||||
/* Used by Wifi */
|
||||
"SD1_CLK",
|
||||
"SD1_CMD",
|
||||
"SD1_DATA0",
|
||||
"SD1_DATA1",
|
||||
"SD1_DATA2",
|
||||
"SD1_DATA3",
|
||||
/* Shared with SPI flash */
|
||||
"PWM0_MISO",
|
||||
"PWM1_MOSI",
|
||||
"STATUS_LED_G_CLK",
|
||||
"SPIFLASH_CE_N",
|
||||
"SDA0",
|
||||
"SCL0",
|
||||
"RGMII_RXCLK",
|
||||
"RGMII_RXCTL",
|
||||
"RGMII_RXD0",
|
||||
"RGMII_RXD1",
|
||||
"RGMII_RXD2",
|
||||
"RGMII_RXD3",
|
||||
"RGMII_TXCLK",
|
||||
"RGMII_TXCTL",
|
||||
"RGMII_TXD0",
|
||||
"RGMII_TXD1",
|
||||
"RGMII_TXD2",
|
||||
"RGMII_TXD3";
|
||||
};
|
||||
|
||||
&hdmi0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&leds {
|
||||
led_pwr: led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
default-state = "keep";
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
};
|
||||
|
||||
&pixelvalve0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pixelvalve1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pixelvalve2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pixelvalve4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm1_0_gpio40 &pwm1_1_gpio41>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* EMMC2 is used to drive the EMMC card */
|
||||
&emmc2 {
|
||||
bus-width = <8>;
|
||||
vqmmc-supply = <&sd_io_1v8_reg>;
|
||||
vmmc-supply = <&sd_vcc_reg>;
|
||||
broken-cd;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&genet {
|
||||
phy-handle = <&phy1>;
|
||||
phy-mode = "rgmii-rxid";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&genet_mdio {
|
||||
phy1: ethernet-phy@0 {
|
||||
/* No PHY interrupt */
|
||||
reg = <0x0>;
|
||||
};
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
pci@0,0 {
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
reg = <0 0 0 0 0>;
|
||||
};
|
||||
};
|
||||
|
||||
/* uart0 communicates with the BT module */
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32>;
|
||||
uart-has-rtscts;
|
||||
};
|
||||
|
||||
/* uart1 is mapped to the pin header */
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart1_gpio14>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vec {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&wifi_pwrseq {
|
||||
reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
// =============================================
|
||||
// Downstream rpi- changes
|
||||
|
||||
#include "bcm271x-rpi-bt.dtsi"
|
||||
|
||||
/ {
|
||||
soc {
|
||||
/delete-node/ pixelvalve@7e807000;
|
||||
/delete-node/ hdmi@7e902000;
|
||||
};
|
||||
};
|
||||
|
||||
#include "bcm2711-rpi-ds.dtsi"
|
||||
#include "bcm283x-rpi-csi0-2lane.dtsi"
|
||||
#include "bcm283x-rpi-csi1-4lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
||||
|
||||
/ {
|
||||
/delete-node/ wifi-pwrseq;
|
||||
};
|
||||
|
||||
&mmcnr {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdio_pins>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-0 = <&uart0_pins &bt_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-0 = <&uart1_pins>;
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"RGMII_MDIO",
|
||||
"RGMIO_MDC",
|
||||
/* Used by BT module */
|
||||
"CTS0",
|
||||
"RTS0",
|
||||
"TXD0",
|
||||
"RXD0",
|
||||
/* Used by Wifi */
|
||||
"SD1_CLK",
|
||||
"SD1_CMD",
|
||||
"SD1_DATA0",
|
||||
"SD1_DATA1",
|
||||
"SD1_DATA2",
|
||||
"SD1_DATA3",
|
||||
/* Shared with SPI flash */
|
||||
"PWM0_MISO",
|
||||
"PWM1_MOSI",
|
||||
"STATUS_LED_G_CLK",
|
||||
"SPIFLASH_CE_N",
|
||||
"SDA0",
|
||||
"SCL0",
|
||||
"RGMII_RXCLK",
|
||||
"RGMII_RXCTL",
|
||||
"RGMII_RXD0",
|
||||
"RGMII_RXD1",
|
||||
"RGMII_RXD2",
|
||||
"RGMII_RXD3",
|
||||
"RGMII_TXCLK",
|
||||
"RGMII_TXCTL",
|
||||
"RGMII_TXD0",
|
||||
"RGMII_TXD1",
|
||||
"RGMII_TXD2",
|
||||
"RGMII_TXD3";
|
||||
|
||||
bt_pins: bt_pins {
|
||||
brcm,pins = "-"; // non-empty to keep btuart happy, //4 = 0
|
||||
// to fool pinctrl
|
||||
brcm,function = <0>;
|
||||
brcm,pull = <2>;
|
||||
};
|
||||
|
||||
uart0_pins: uart0_pins {
|
||||
brcm,pins = <32 33>;
|
||||
brcm,function = <BCM2835_FSEL_ALT3>;
|
||||
brcm,pull = <0 2>;
|
||||
};
|
||||
|
||||
uart1_pins: uart1_pins {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
brcm,pull;
|
||||
};
|
||||
|
||||
uart1_bt_pins: uart1_bt_pins {
|
||||
brcm,pins = <32 33 30 31>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>; /* alt5=UART1 */
|
||||
brcm,pull = <0 2 2 0>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
// =============================================
|
||||
// Board specific stuff here
|
||||
|
||||
&sdhost {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&phy1 {
|
||||
led-modes = <0x00 0x08>; /* link/activity link */
|
||||
};
|
||||
|
||||
&gpio {
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <>;
|
||||
brcm,function = <>;
|
||||
};
|
||||
};
|
||||
|
||||
&led_act {
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
&led_pwr {
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
cam0_reg: &cam1_reg {
|
||||
gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
|
||||
pwr_led_gpio = <&led_pwr>,"gpios:4";
|
||||
pwr_led_activelow = <&led_pwr>,"gpios:8";
|
||||
pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
|
||||
|
||||
eth_led0 = <&phy1>,"led-modes:0";
|
||||
eth_led1 = <&phy1>,"led-modes:4";
|
||||
eth_max_speed = <&phy1>,"max-speed:0";
|
||||
|
||||
ant1 = <&ant1>,"output-high?=on",
|
||||
<&ant1>, "output-low?=off",
|
||||
<&ant2>, "output-high?=off",
|
||||
<&ant2>, "output-low?=on";
|
||||
ant2 = <&ant1>,"output-high?=off",
|
||||
<&ant1>, "output-low?=on",
|
||||
<&ant2>, "output-high?=on",
|
||||
<&ant2>, "output-low?=off";
|
||||
noant = <&ant1>,"output-high?=off",
|
||||
<&ant1>, "output-low?=on",
|
||||
<&ant2>, "output-high?=off",
|
||||
<&ant2>, "output-low?=on";
|
||||
noanthogs = <&ant1>,"status=disabled",
|
||||
<&ant2>, "status=disabled";
|
||||
|
||||
pcie_tperst_clk_ms = <&pcie0>,"brcm,tperst-clk-ms:0";
|
||||
};
|
||||
};
|
||||
293
arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
Normal file
293
arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
Normal file
@@ -0,0 +1,293 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
#define BCM2711
|
||||
#define i2c0 i2c0if
|
||||
#include "bcm2711.dtsi"
|
||||
#include "bcm2711-rpi.dtsi"
|
||||
/delete-node/&i2c0mux;
|
||||
#include "bcm283x-rpi-led-deprecated.dtsi"
|
||||
#undef i2c0
|
||||
#include "bcm270x.dtsi"
|
||||
#define i2c0 i2c0mux
|
||||
#undef i2c0
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,4-compute-module-s", "brcm,bcm2711";
|
||||
model = "Raspberry Pi Compute Module 4S";
|
||||
};
|
||||
|
||||
&ddc0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* Parts taken from rpi_SCH_4b_4p0_reduced.pdf and
|
||||
* the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"GPIO2",
|
||||
"GPIO3",
|
||||
"GPIO4",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"GPIO7",
|
||||
"GPIO8",
|
||||
"GPIO9",
|
||||
"GPIO10",
|
||||
"GPIO11",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
"GPIO14",
|
||||
"GPIO15",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"GPIO28",
|
||||
"GPIO29",
|
||||
"GPIO30",
|
||||
"GPIO31",
|
||||
"GPIO32",
|
||||
"GPIO33",
|
||||
"GPIO34",
|
||||
"GPIO35",
|
||||
"GPIO36",
|
||||
"GPIO37",
|
||||
"GPIO38",
|
||||
"GPIO39",
|
||||
"PWM0_MISO",
|
||||
"PWM1_MOSI",
|
||||
"GPIO42",
|
||||
"GPIO43",
|
||||
"GPIO44",
|
||||
"GPIO45";
|
||||
};
|
||||
|
||||
&hdmi0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&led_act {
|
||||
gpios = <&virtgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&pixelvalve0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pixelvalve1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pixelvalve2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pixelvalve4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm1_0_gpio40 &pwm1_1_gpio41>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* EMMC2 is used to drive the EMMC card */
|
||||
&emmc2 {
|
||||
bus-width = <8>;
|
||||
broken-cd;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vec {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
// =============================================
|
||||
// Downstream rpi- changes
|
||||
|
||||
#include "bcm2711-rpi-ds.dtsi"
|
||||
|
||||
/ {
|
||||
soc {
|
||||
/delete-node/ pixelvalve@7e807000;
|
||||
/delete-node/ hdmi@7e902000;
|
||||
};
|
||||
};
|
||||
|
||||
#include "bcm283x-rpi-csi0-2lane.dtsi"
|
||||
#include "bcm283x-rpi-csi1-4lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
bootargs = "coherent_pool=1M snd_bcm2835.enable_headphones=0 cgroup_disable=memory numa_policy=interleave";
|
||||
};
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
serial1 = &uart1;
|
||||
/delete-property/ i2c20;
|
||||
/delete-property/ i2c21;
|
||||
};
|
||||
|
||||
/delete-node/ wifi-pwrseq;
|
||||
};
|
||||
|
||||
&firmware {
|
||||
virtgpio: virtgpio {
|
||||
compatible = "brcm,bcm2835-virtgpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
|
||||
spidev0: spidev@0{
|
||||
compatible = "spidev";
|
||||
reg = <0>; /* CE0 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
|
||||
spidev1: spidev@1{
|
||||
compatible = "spidev";
|
||||
reg = <1>; /* CE1 */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-max-frequency = <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
uart0_pins: uart0_pins {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
brcm,pull;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2s {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
// =============================================
|
||||
// Board specific stuff here
|
||||
|
||||
/* Enable USB in OTG-aware mode */
|
||||
&usb {
|
||||
compatible = "brcm,bcm2835-usb";
|
||||
dr_mode = "otg";
|
||||
g-np-tx-fifo-size = <32>;
|
||||
g-rx-fifo-size = <558>;
|
||||
g-tx-fifo-size = <512 512 512 512 512 256 256>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
audio_pins: audio_pins {
|
||||
brcm,pins = <>;
|
||||
brcm,function = <>;
|
||||
};
|
||||
};
|
||||
|
||||
/* Permanently disable HDMI1 */
|
||||
&hdmi1 {
|
||||
compatible = "disabled";
|
||||
};
|
||||
|
||||
/* Permanently disable DDC1 */
|
||||
&ddc1 {
|
||||
compatible = "disabled";
|
||||
};
|
||||
|
||||
&led_act {
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
};
|
||||
|
||||
&cam1_reg {
|
||||
gpio = <&gpio 3 GPIO_ACTIVE_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
cam0_reg: &cam0_regulator {
|
||||
gpio = <&gpio 31 GPIO_ACTIVE_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c_csi_dsi0: &i2c0 {
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
audio = <&chosen>,"bootargs{on='snd_bcm2835.enable_hdmi=1',off='snd_bcm2835.enable_hdmi=0'}";
|
||||
|
||||
act_led_gpio = <&led_act>,"gpios:4";
|
||||
act_led_activelow = <&led_act>,"gpios:8";
|
||||
act_led_trigger = <&led_act>,"linux,default-trigger";
|
||||
};
|
||||
};
|
||||
570
arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
Normal file
570
arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
Normal file
@@ -0,0 +1,570 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include "bcm270x-rpi.dtsi"
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 cgroup_disable=memory numa_policy=interleave nvme.max_host_mem_size_mb=0";
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
arm_freq;
|
||||
eee = <&chosen>,"bootargs{on='',off='genet.eee=N'}";
|
||||
hdmi = <&hdmi0>,"status",
|
||||
<&hdmi1>,"status";
|
||||
nvmem_cust_rw = <&nvmem_cust>,"rw?";
|
||||
nvmem_priv_rw = <&nvmem_priv>,"rw?";
|
||||
pcie = <&pcie0>,"status";
|
||||
sd = <&emmc2>,"status";
|
||||
|
||||
sd_poll_once = <&emmc2>, "non-removable?";
|
||||
spi_dma4 = <&spi0>, "dmas:0=", <&dma40>,
|
||||
<&spi0>, "dmas:8=", <&dma40>;
|
||||
i2s_dma4 = <&i2s>, "dmas:0=", <&dma40>,
|
||||
<&i2s>, "dmas:8=", <&dma40>;
|
||||
};
|
||||
|
||||
scb: scb {
|
||||
/* Add a label */
|
||||
};
|
||||
|
||||
soc: soc {
|
||||
/* Add a label */
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
aliases {
|
||||
uart2 = &uart2;
|
||||
uart3 = &uart3;
|
||||
uart4 = &uart4;
|
||||
uart5 = &uart5;
|
||||
serial0 = &uart1;
|
||||
serial1 = &uart0;
|
||||
serial2 = &uart2;
|
||||
serial3 = &uart3;
|
||||
serial4 = &uart4;
|
||||
serial5 = &uart5;
|
||||
mmc0 = &emmc2;
|
||||
mmc1 = &mmcnr;
|
||||
mmc2 = &sdhost;
|
||||
i2c3 = &i2c3;
|
||||
i2c4 = &i2c4;
|
||||
i2c5 = &i2c5;
|
||||
i2c6 = &i2c6;
|
||||
i2c20 = &ddc0;
|
||||
i2c21 = &ddc1;
|
||||
spi3 = &spi3;
|
||||
spi4 = &spi4;
|
||||
spi5 = &spi5;
|
||||
spi6 = &spi6;
|
||||
/delete-property/ intc;
|
||||
};
|
||||
|
||||
/*
|
||||
* Add a node with a dma-ranges value that exists only to be found
|
||||
* by of_dma_get_max_cpu_address, and hence limit the DMA zone.
|
||||
*/
|
||||
zone_dma {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
dma-ranges = <0x0 0x0 0x0 0x40000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
raspberrypi,firmware = <&firmware>;
|
||||
};
|
||||
|
||||
&cma {
|
||||
/* Limit cma to the lower 768MB to allow room for HIGHMEM on 32-bit */
|
||||
alloc-ranges = <0x0 0x00000000 0x30000000>;
|
||||
};
|
||||
|
||||
&soc {
|
||||
/* Add the physical <-> DMA mapping for the I/O space */
|
||||
dma-ranges = <0xc0000000 0x0 0x00000000 0x40000000>,
|
||||
<0x7c000000 0x0 0xfc000000 0x03800000>;
|
||||
nvmem {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
nvmem_otp: nvmem_otp {
|
||||
compatible = "raspberrypi,rpi-otp";
|
||||
firmware = <&firmware>;
|
||||
reg = <0 166>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
nvmem_cust: nvmem_cust {
|
||||
compatible = "raspberrypi,rpi-otp";
|
||||
firmware = <&firmware>;
|
||||
reg = <1 8>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
nvmem_priv: nvmem_priv {
|
||||
compatible = "raspberrypi,rpi-otp";
|
||||
firmware = <&firmware>;
|
||||
reg = <3 8>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&scb {
|
||||
#size-cells = <2>;
|
||||
|
||||
ranges = <0x0 0x7c000000 0x0 0xfc000000 0x0 0x03800000>,
|
||||
<0x0 0x40000000 0x0 0xff800000 0x0 0x00800000>,
|
||||
<0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>,
|
||||
<0x0 0x00000000 0x0 0x00000000 0x0 0xfc000000>;
|
||||
dma-ranges = <0x4 0x7c000000 0x0 0xfc000000 0x0 0x03800000>,
|
||||
<0x0 0x00000000 0x0 0x00000000 0x4 0x00000000>;
|
||||
|
||||
dma40: dma@7e007b00 {
|
||||
compatible = "brcm,bcm2711-dma";
|
||||
reg = <0x0 0x7e007b00 0x0 0x400>;
|
||||
interrupts =
|
||||
<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, /* dma4 11 */
|
||||
<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, /* dma4 12 */
|
||||
<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>, /* dma4 13 */
|
||||
<GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; /* dma4 14 */
|
||||
interrupt-names = "dma11",
|
||||
"dma12",
|
||||
"dma13",
|
||||
"dma14";
|
||||
#dma-cells = <1>;
|
||||
brcm,dma-channel-mask = <0x7800>;
|
||||
};
|
||||
|
||||
xhci: xhci@7e9c0000 {
|
||||
compatible = "generic-xhci";
|
||||
status = "disabled";
|
||||
reg = <0x0 0x7e9c0000 0x0 0x100000>;
|
||||
interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_USB>;
|
||||
};
|
||||
};
|
||||
|
||||
&hevc_dec {
|
||||
reg = <0x0 0x7eb00000 0x0 0x10000>, /* HEVC */
|
||||
<0x0 0x7eb10000 0x0 0x1000>; /* INTC */
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
reg = <0x0 0x7d500000 0x0 0x9310>;
|
||||
ranges = <0x02000000 0x0 0xc0000000 0x6 0x00000000
|
||||
0x0 0x40000000>;
|
||||
};
|
||||
|
||||
&genet {
|
||||
reg = <0x0 0x7d580000 0x0 0x10000>;
|
||||
};
|
||||
|
||||
&dma40 {
|
||||
/* The VPU firmware uses DMA channel 11 for VCHIQ */
|
||||
brcm,dma-channel-mask = <0x7000>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
compatible = "brcm,bcm2711-vchiq";
|
||||
};
|
||||
|
||||
&firmwarekms {
|
||||
compatible = "raspberrypi,rpi-firmware-kms-2711";
|
||||
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&smi {
|
||||
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&mmc {
|
||||
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&mmcnr {
|
||||
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
brcmf: wifi@1 {
|
||||
reg = <1>;
|
||||
compatible = "brcm,bcm4329-fmac";
|
||||
};
|
||||
};
|
||||
|
||||
&csi0 {
|
||||
interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&csi1 {
|
||||
interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&random {
|
||||
compatible = "brcm,bcm2711-rng200";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb {
|
||||
/* Enable the FIQ support */
|
||||
reg = <0x7e980000 0x10000>,
|
||||
<0x7e00b200 0x200>;
|
||||
interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
};
|
||||
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <BCM2835_FSEL_GPIO_OUT>;
|
||||
};
|
||||
|
||||
spi3_pins: spi3_pins {
|
||||
brcm,pins = <1 2 3>;
|
||||
brcm,function = <BCM2835_FSEL_ALT3>;
|
||||
};
|
||||
|
||||
spi3_cs_pins: spi3_cs_pins {
|
||||
brcm,pins = <0 24>;
|
||||
brcm,function = <BCM2835_FSEL_GPIO_OUT>;
|
||||
};
|
||||
|
||||
spi4_pins: spi4_pins {
|
||||
brcm,pins = <5 6 7>;
|
||||
brcm,function = <BCM2835_FSEL_ALT3>;
|
||||
};
|
||||
|
||||
spi4_cs_pins: spi4_cs_pins {
|
||||
brcm,pins = <4 25>;
|
||||
brcm,function = <BCM2835_FSEL_GPIO_OUT>;
|
||||
};
|
||||
|
||||
spi5_pins: spi5_pins {
|
||||
brcm,pins = <13 14 15>;
|
||||
brcm,function = <BCM2835_FSEL_ALT3>;
|
||||
};
|
||||
|
||||
spi5_cs_pins: spi5_cs_pins {
|
||||
brcm,pins = <12 26>;
|
||||
brcm,function = <BCM2835_FSEL_GPIO_OUT>;
|
||||
};
|
||||
|
||||
spi6_pins: spi6_pins {
|
||||
brcm,pins = <19 20 21>;
|
||||
brcm,function = <BCM2835_FSEL_ALT3>;
|
||||
};
|
||||
|
||||
spi6_cs_pins: spi6_cs_pins {
|
||||
brcm,pins = <18 27>;
|
||||
brcm,function = <BCM2835_FSEL_GPIO_OUT>;
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
brcm,pull = <BCM2835_PUD_UP>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1 {
|
||||
brcm,pins = <2 3>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
brcm,pull = <BCM2835_PUD_UP>;
|
||||
};
|
||||
|
||||
i2c3_pins: i2c3 {
|
||||
brcm,pins = <4 5>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>;
|
||||
brcm,pull = <BCM2835_PUD_UP>;
|
||||
};
|
||||
|
||||
i2c4_pins: i2c4 {
|
||||
brcm,pins = <8 9>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>;
|
||||
brcm,pull = <BCM2835_PUD_UP>;
|
||||
};
|
||||
|
||||
i2c5_pins: i2c5 {
|
||||
brcm,pins = <12 13>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>;
|
||||
brcm,pull = <BCM2835_PUD_UP>;
|
||||
};
|
||||
|
||||
i2c6_pins: i2c6 {
|
||||
brcm,pins = <22 23>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>;
|
||||
brcm,pull = <BCM2835_PUD_UP>;
|
||||
};
|
||||
|
||||
i2s_pins: i2s {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
};
|
||||
|
||||
sdio_pins: sdio_pins {
|
||||
brcm,pins = <34 35 36 37 38 39>;
|
||||
brcm,function = <BCM2835_FSEL_ALT3>; // alt3 = SD1
|
||||
brcm,pull = <0 2 2 2 2 2>;
|
||||
};
|
||||
|
||||
uart2_pins: uart2_pins {
|
||||
brcm,pins = <0 1>;
|
||||
brcm,function = <BCM2835_FSEL_ALT4>;
|
||||
brcm,pull = <0 2>;
|
||||
};
|
||||
|
||||
uart3_pins: uart3_pins {
|
||||
brcm,pins = <4 5>;
|
||||
brcm,function = <BCM2835_FSEL_ALT4>;
|
||||
brcm,pull = <0 2>;
|
||||
};
|
||||
|
||||
uart4_pins: uart4_pins {
|
||||
brcm,pins = <8 9>;
|
||||
brcm,function = <BCM2835_FSEL_ALT4>;
|
||||
brcm,pull = <0 2>;
|
||||
};
|
||||
|
||||
uart5_pins: uart5_pins {
|
||||
brcm,pins = <12 13>;
|
||||
brcm,function = <BCM2835_FSEL_ALT4>;
|
||||
brcm,pull = <0 2>;
|
||||
};
|
||||
};
|
||||
|
||||
&emmc2 {
|
||||
mmc-ddr-3_3v;
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve4 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&hdmi0 {
|
||||
reg = <0x7ef00700 0x300>,
|
||||
<0x7ef00300 0x200>,
|
||||
<0x7ef00f00 0x80>,
|
||||
<0x7ef00f80 0x80>,
|
||||
<0x7ef01b00 0x200>,
|
||||
<0x7ef01f00 0x400>,
|
||||
<0x7ef00200 0x80>,
|
||||
<0x7ef04300 0x100>,
|
||||
<0x7ef20000 0x100>,
|
||||
<0x7ef00100 0x30>;
|
||||
reg-names = "hdmi",
|
||||
"dvp",
|
||||
"phy",
|
||||
"rm",
|
||||
"packet",
|
||||
"metadata",
|
||||
"csc",
|
||||
"cec",
|
||||
"hd",
|
||||
"intr2";
|
||||
clocks = <&firmware_clocks 13>,
|
||||
<&firmware_clocks 14>,
|
||||
<&dvp 0>,
|
||||
<&clk_27MHz>;
|
||||
dmas = <&dma40 (10|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&ddc0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&hdmi1 {
|
||||
reg = <0x7ef05700 0x300>,
|
||||
<0x7ef05300 0x200>,
|
||||
<0x7ef05f00 0x80>,
|
||||
<0x7ef05f80 0x80>,
|
||||
<0x7ef06b00 0x200>,
|
||||
<0x7ef06f00 0x400>,
|
||||
<0x7ef00280 0x80>,
|
||||
<0x7ef09300 0x100>,
|
||||
<0x7ef20000 0x100>,
|
||||
<0x7ef00100 0x30>;
|
||||
reg-names = "hdmi",
|
||||
"dvp",
|
||||
"phy",
|
||||
"rm",
|
||||
"packet",
|
||||
"metadata",
|
||||
"csc",
|
||||
"cec",
|
||||
"hd",
|
||||
"intr2";
|
||||
clocks = <&firmware_clocks 13>,
|
||||
<&firmware_clocks 14>,
|
||||
<&dvp 1>,
|
||||
<&clk_27MHz>;
|
||||
dmas = <&dma40 (17|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&ddc1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dvp {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&vec {
|
||||
clocks = <&firmware_clocks 15>;
|
||||
};
|
||||
|
||||
&aon_intr {
|
||||
interrupts = <GIC_SPI 96 IRQ_TYPE_EDGE_RISING>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&system_timer {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
/delete-property/ compatible;
|
||||
/delete-property/ interrupts;
|
||||
};
|
||||
|
||||
&i2c0if {
|
||||
compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
|
||||
interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
i2c_arm: &i2c1 {};
|
||||
i2c_vc: &i2c0 {};
|
||||
|
||||
&i2c3 {
|
||||
pinctrl-0 = <&i2c3_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&i2c4 {
|
||||
pinctrl-0 = <&i2c4_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&i2c5 {
|
||||
pinctrl-0 = <&i2c5_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&i2c6 {
|
||||
pinctrl-0 = <&i2c6_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&spi3 {
|
||||
pinctrl-0 = <&spi3_pins &spi3_cs_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&spi4 {
|
||||
pinctrl-0 = <&spi4_pins &spi4_cs_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&spi5 {
|
||||
pinctrl-0 = <&spi5_pins &spi5_cs_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&spi6 {
|
||||
pinctrl-0 = <&spi6_pins &spi6_cs_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
compatible = "arm,pl011-axi";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
compatible = "arm,pl011-axi";
|
||||
pinctrl-0 = <&uart2_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
compatible = "arm,pl011-axi";
|
||||
pinctrl-0 = <&uart3_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&uart4 {
|
||||
compatible = "arm,pl011-axi";
|
||||
pinctrl-0 = <&uart4_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&uart5 {
|
||||
compatible = "arm,pl011-axi";
|
||||
pinctrl-0 = <&uart5_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&axiperf {
|
||||
compatible = "brcm,bcm2711-axiperf";
|
||||
};
|
||||
|
||||
/delete-node/ &v3d;
|
||||
|
||||
/ {
|
||||
v3dbus: v3dbus {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
ranges = <0x7c500000 0x0 0xfc500000 0x0 0x03300000>,
|
||||
<0x40000000 0x0 0xff800000 0x0 0x00800000>;
|
||||
dma-ranges = <0x00000000 0x0 0x00000000 0x4 0x00000000>;
|
||||
|
||||
v3d: v3d@7ec04000 {
|
||||
compatible = "brcm,2711-v3d";
|
||||
reg =
|
||||
<0x7ec00000 0x0 0x4000>,
|
||||
<0x7ec04000 0x0 0x4000>;
|
||||
reg-names = "hub", "core0";
|
||||
|
||||
power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
|
||||
resets = <&pm BCM2835_RESET_V3D>;
|
||||
clocks = <&firmware_clocks 5>;
|
||||
clocks-names = "v3d";
|
||||
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -15,6 +15,7 @@
|
||||
ethernet0 = &genet;
|
||||
pcie0 = &pcie0;
|
||||
blconfig = &blconfig;
|
||||
blpubkey = &blpubkey;
|
||||
};
|
||||
|
||||
i2c0mux: i2c-mux0 {
|
||||
@@ -99,6 +100,18 @@
|
||||
no-map;
|
||||
status = "disabled";
|
||||
};
|
||||
/*
|
||||
* RPi4 will copy the binary public key blob (if present) from the bootloader
|
||||
* into memory for use by the OS.
|
||||
*/
|
||||
blpubkey: nvram@1 {
|
||||
compatible = "raspberrypi,bootloader-public-key", "nvmem-rmem";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x0 0x0 0x0>;
|
||||
no-map;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
&v3d {
|
||||
@@ -108,3 +121,7 @@
|
||||
&vchiq {
|
||||
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&hevc_dec {
|
||||
clocks = <&firmware_clocks 11>;
|
||||
};
|
||||
|
||||
@@ -277,7 +277,7 @@
|
||||
reg = <0x7e20c800 0x28>;
|
||||
clocks = <&clocks BCM2835_CLOCK_PWM>;
|
||||
assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
|
||||
assigned-clock-rates = <10000000>;
|
||||
assigned-clock-rates = <50000000>;
|
||||
#pwm-cells = <3>;
|
||||
status = "disabled";
|
||||
};
|
||||
@@ -612,6 +612,15 @@
|
||||
resets = <&pm BCM2835_RESET_V3D>;
|
||||
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
hevc_dec: codec@7eb10000 {
|
||||
compatible = "brcm,bcm2711-hevc-dec", "raspberrypi,hevc-dec";
|
||||
reg = <0x0 0x7eb00000 0x10000>, /* HEVC */
|
||||
<0x0 0x7eb10000 0x1000>; /* INTC */
|
||||
reg-names = "hevc",
|
||||
"intc";
|
||||
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
42
arch/arm/boot/dts/broadcom/bcm271x-rpi-bt.dtsi
Normal file
42
arch/arm/boot/dts/broadcom/bcm271x-rpi-bt.dtsi
Normal file
@@ -0,0 +1,42 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
&uart0 {
|
||||
bt: bluetooth {
|
||||
compatible = "brcm,bcm43438-bt";
|
||||
max-speed = <3000000>;
|
||||
shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
local-bd-address = [ 00 00 00 00 00 00 ];
|
||||
fallback-bd-address; // Don't override a valid address
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
minibt: bluetooth {
|
||||
compatible = "brcm,bcm43438-bt";
|
||||
max-speed = <230400>;
|
||||
shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
local-bd-address = [ 00 00 00 00 00 00 ];
|
||||
fallback-bd-address; // Don't override a valid address
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 cgroup_disable=memory";
|
||||
};
|
||||
|
||||
aliases {
|
||||
bluetooth = &bt;
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
bdaddr = <&bt>,"local-bd-address[",
|
||||
<&bt>,"fallback-bd-address?=0",
|
||||
<&minibt>,"local-bd-address[",
|
||||
<&minibt>,"fallback-bd-address?=0";
|
||||
krnbt = <&bt>,"status";
|
||||
krnbt_baudrate = <&bt>,"max-speed:0", <&minibt>,"max-speed:0";
|
||||
};
|
||||
};
|
||||
4
arch/arm/boot/dts/broadcom/bcm283x-rpi-csi0-2lane.dtsi
Normal file
4
arch/arm/boot/dts/broadcom/bcm283x-rpi-csi0-2lane.dtsi
Normal file
@@ -0,0 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
&csi0 {
|
||||
brcm,num-data-lanes = <2>;
|
||||
};
|
||||
4
arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi
Normal file
4
arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi
Normal file
@@ -0,0 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
&csi1 {
|
||||
brcm,num-data-lanes = <2>;
|
||||
};
|
||||
4
arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-4lane.dtsi
Normal file
4
arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-4lane.dtsi
Normal file
@@ -0,0 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
&csi1 {
|
||||
brcm,num-data-lanes = <4>;
|
||||
};
|
||||
4
arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_28.dtsi
Normal file
4
arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_28.dtsi
Normal file
@@ -0,0 +1,4 @@
|
||||
&i2c0mux {
|
||||
pinctrl-0 = <&i2c0_gpio0>;
|
||||
pinctrl-1 = <&i2c0_gpio28>;
|
||||
};
|
||||
4
arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_44.dtsi
Normal file
4
arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_44.dtsi
Normal file
@@ -0,0 +1,4 @@
|
||||
&i2c0mux {
|
||||
pinctrl-0 = <&i2c0_gpio0>;
|
||||
pinctrl-1 = <&i2c0_gpio44>;
|
||||
};
|
||||
@@ -363,7 +363,7 @@
|
||||
#size-cells = <0>;
|
||||
#clock-cells = <1>;
|
||||
|
||||
clocks = <&clocks BCM2835_PLLA_DSI0>,
|
||||
clocks = <&clocks BCM2835_PLLD_DSI0>,
|
||||
<&clocks BCM2835_CLOCK_DSI0E>,
|
||||
<&clocks BCM2835_CLOCK_DSI0P>;
|
||||
clock-names = "phy", "escape", "pixel";
|
||||
@@ -415,7 +415,7 @@
|
||||
reg = <0x7e20c000 0x28>;
|
||||
clocks = <&clocks BCM2835_CLOCK_PWM>;
|
||||
assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
|
||||
assigned-clock-rates = <10000000>;
|
||||
assigned-clock-rates = <50000000>;
|
||||
#pwm-cells = <3>;
|
||||
status = "disabled";
|
||||
};
|
||||
@@ -502,6 +502,10 @@
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
/* The oscillator is the root of the clock tree. */
|
||||
clk_osc: clk-osc {
|
||||
compatible = "fixed-clock";
|
||||
|
||||
367
arch/arm/boot/dts/overlays/Makefile
Normal file
367
arch/arm/boot/dts/overlays/Makefile
Normal file
@@ -0,0 +1,367 @@
|
||||
# Overlays for the Raspberry Pi platform
|
||||
|
||||
dtb-$(CONFIG_ARCH_BCM2835) += overlay_map.dtb hat_map.dtb
|
||||
|
||||
dtbo-$(CONFIG_ARCH_BCM2835) += \
|
||||
act-led.dtbo \
|
||||
adafruit-st7735r.dtbo \
|
||||
adafruit18.dtbo \
|
||||
adau1977-adc.dtbo \
|
||||
adau7002-simple.dtbo \
|
||||
ads1015.dtbo \
|
||||
ads1115.dtbo \
|
||||
ads7846.dtbo \
|
||||
adv7282m.dtbo \
|
||||
adv728x-m.dtbo \
|
||||
akkordion-iqdacplus.dtbo \
|
||||
allo-boss-dac-pcm512x-audio.dtbo \
|
||||
allo-boss2-dac-audio.dtbo \
|
||||
allo-digione.dtbo \
|
||||
allo-katana-dac-audio.dtbo \
|
||||
allo-piano-dac-pcm512x-audio.dtbo \
|
||||
allo-piano-dac-plus-pcm512x-audio.dtbo \
|
||||
anyspi.dtbo \
|
||||
apds9960.dtbo \
|
||||
applepi-dac.dtbo \
|
||||
arducam-64mp.dtbo \
|
||||
arducam-pivariety.dtbo \
|
||||
at86rf233.dtbo \
|
||||
audioinjector-addons.dtbo \
|
||||
audioinjector-bare-i2s.dtbo \
|
||||
audioinjector-isolated-soundcard.dtbo \
|
||||
audioinjector-ultra.dtbo \
|
||||
audioinjector-wm8731-audio.dtbo \
|
||||
audiosense-pi.dtbo \
|
||||
audremap.dtbo \
|
||||
audremap-pi5.dtbo \
|
||||
balena-fin.dtbo \
|
||||
bcm2712d0.dtbo \
|
||||
camera-mux-2port.dtbo \
|
||||
camera-mux-4port.dtbo \
|
||||
cap1106.dtbo \
|
||||
chipcap2.dtbo \
|
||||
chipdip-dac.dtbo \
|
||||
cirrus-wm5102.dtbo \
|
||||
cm-swap-i2c0.dtbo \
|
||||
cma.dtbo \
|
||||
crystalfontz-cfa050_pi_m.dtbo \
|
||||
cutiepi-panel.dtbo \
|
||||
dacberry400.dtbo \
|
||||
dht11.dtbo \
|
||||
dionaudio-kiwi.dtbo \
|
||||
dionaudio-loco.dtbo \
|
||||
dionaudio-loco-v2.dtbo \
|
||||
disable-bt.dtbo \
|
||||
disable-bt-pi5.dtbo \
|
||||
disable-emmc2.dtbo \
|
||||
disable-wifi.dtbo \
|
||||
disable-wifi-pi5.dtbo \
|
||||
dpi18.dtbo \
|
||||
dpi18cpadhi.dtbo \
|
||||
dpi24.dtbo \
|
||||
draws.dtbo \
|
||||
dwc-otg-deprecated.dtbo \
|
||||
dwc2.dtbo \
|
||||
edt-ft5406.dtbo \
|
||||
enc28j60.dtbo \
|
||||
enc28j60-spi2.dtbo \
|
||||
exc3000.dtbo \
|
||||
ezsound-6x8iso.dtbo \
|
||||
fbtft.dtbo \
|
||||
fe-pi-audio.dtbo \
|
||||
fsm-demo.dtbo \
|
||||
gc9a01.dtbo \
|
||||
ghost-amp.dtbo \
|
||||
goodix.dtbo \
|
||||
googlevoicehat-soundcard.dtbo \
|
||||
gpio-charger.dtbo \
|
||||
gpio-fan.dtbo \
|
||||
gpio-hog.dtbo \
|
||||
gpio-ir.dtbo \
|
||||
gpio-ir-tx.dtbo \
|
||||
gpio-key.dtbo \
|
||||
gpio-led.dtbo \
|
||||
gpio-no-bank0-irq.dtbo \
|
||||
gpio-no-irq.dtbo \
|
||||
gpio-poweroff.dtbo \
|
||||
gpio-shutdown.dtbo \
|
||||
hd44780-i2c-lcd.dtbo \
|
||||
hd44780-lcd.dtbo \
|
||||
hdmi-backlight-hwhack-gpio.dtbo \
|
||||
hifiberry-adc.dtbo \
|
||||
hifiberry-adc8x.dtbo \
|
||||
hifiberry-amp.dtbo \
|
||||
hifiberry-amp100.dtbo \
|
||||
hifiberry-amp3.dtbo \
|
||||
hifiberry-amp4pro.dtbo \
|
||||
hifiberry-dac.dtbo \
|
||||
hifiberry-dac8x.dtbo \
|
||||
hifiberry-dacplus.dtbo \
|
||||
hifiberry-dacplus-pro.dtbo \
|
||||
hifiberry-dacplus-std.dtbo \
|
||||
hifiberry-dacplusadc.dtbo \
|
||||
hifiberry-dacplusadcpro.dtbo \
|
||||
hifiberry-dacplusdsp.dtbo \
|
||||
hifiberry-dacplushd.dtbo \
|
||||
hifiberry-digi.dtbo \
|
||||
hifiberry-digi-pro.dtbo \
|
||||
highperi.dtbo \
|
||||
hy28a.dtbo \
|
||||
hy28b.dtbo \
|
||||
hy28b-2017.dtbo \
|
||||
i-sabre-q2m.dtbo \
|
||||
i2c-bcm2708.dtbo \
|
||||
i2c-fan.dtbo \
|
||||
i2c-gpio.dtbo \
|
||||
i2c-mux.dtbo \
|
||||
i2c-pwm-pca9685a.dtbo \
|
||||
i2c-rtc.dtbo \
|
||||
i2c-rtc-gpio.dtbo \
|
||||
i2c-sensor.dtbo \
|
||||
i2c0.dtbo \
|
||||
i2c0-pi5.dtbo \
|
||||
i2c1.dtbo \
|
||||
i2c1-pi5.dtbo \
|
||||
i2c2-pi5.dtbo \
|
||||
i2c3.dtbo \
|
||||
i2c3-pi5.dtbo \
|
||||
i2c4.dtbo \
|
||||
i2c5.dtbo \
|
||||
i2c6.dtbo \
|
||||
i2s-dac.dtbo \
|
||||
i2s-gpio28-31.dtbo \
|
||||
i2s-master-dac.dtbo \
|
||||
ilitek251x.dtbo \
|
||||
imx219.dtbo \
|
||||
imx258.dtbo \
|
||||
imx283.dtbo \
|
||||
imx290.dtbo \
|
||||
imx296.dtbo \
|
||||
imx327.dtbo \
|
||||
imx335.dtbo \
|
||||
imx378.dtbo \
|
||||
imx415.dtbo \
|
||||
imx462.dtbo \
|
||||
imx477.dtbo \
|
||||
imx500.dtbo \
|
||||
imx500-pi5.dtbo \
|
||||
imx519.dtbo \
|
||||
imx708.dtbo \
|
||||
interludeaudio-analog.dtbo \
|
||||
interludeaudio-digital.dtbo \
|
||||
iqaudio-codec.dtbo \
|
||||
iqaudio-dac.dtbo \
|
||||
iqaudio-dacplus.dtbo \
|
||||
iqaudio-digi-wm8804-audio.dtbo \
|
||||
iqs550.dtbo \
|
||||
irs1125.dtbo \
|
||||
jedec-spi-nor.dtbo \
|
||||
justboom-both.dtbo \
|
||||
justboom-dac.dtbo \
|
||||
justboom-digi.dtbo \
|
||||
ltc294x.dtbo \
|
||||
max98357a.dtbo \
|
||||
maxtherm.dtbo \
|
||||
mbed-dac.dtbo \
|
||||
mcp23017.dtbo \
|
||||
mcp23s17.dtbo \
|
||||
mcp2515.dtbo \
|
||||
mcp2515-can0.dtbo \
|
||||
mcp2515-can1.dtbo \
|
||||
mcp251xfd.dtbo \
|
||||
mcp3008.dtbo \
|
||||
mcp3202.dtbo \
|
||||
mcp342x.dtbo \
|
||||
media-center.dtbo \
|
||||
merus-amp.dtbo \
|
||||
midi-uart0.dtbo \
|
||||
midi-uart0-pi5.dtbo \
|
||||
midi-uart1.dtbo \
|
||||
midi-uart1-pi5.dtbo \
|
||||
midi-uart2.dtbo \
|
||||
midi-uart2-pi5.dtbo \
|
||||
midi-uart3.dtbo \
|
||||
midi-uart3-pi5.dtbo \
|
||||
midi-uart4.dtbo \
|
||||
midi-uart4-pi5.dtbo \
|
||||
midi-uart5.dtbo \
|
||||
minipitft13.dtbo \
|
||||
miniuart-bt.dtbo \
|
||||
mipi-dbi-spi.dtbo \
|
||||
mira220.dtbo \
|
||||
mlx90640.dtbo \
|
||||
mmc.dtbo \
|
||||
mz61581.dtbo \
|
||||
ov2311.dtbo \
|
||||
ov5647.dtbo \
|
||||
ov64a40.dtbo \
|
||||
ov7251.dtbo \
|
||||
ov9281.dtbo \
|
||||
papirus.dtbo \
|
||||
pca953x.dtbo \
|
||||
pcf857x.dtbo \
|
||||
pcie-32bit-dma.dtbo \
|
||||
pcie-32bit-dma-pi5.dtbo \
|
||||
pciex1-compat-pi5.dtbo \
|
||||
pibell.dtbo \
|
||||
pifacedigital.dtbo \
|
||||
pifi-40.dtbo \
|
||||
pifi-dac-hd.dtbo \
|
||||
pifi-dac-zero.dtbo \
|
||||
pifi-mini-210.dtbo \
|
||||
piglow.dtbo \
|
||||
pimidi.dtbo \
|
||||
pineboards-hat-ai.dtbo \
|
||||
pineboards-hatdrive-poe-plus.dtbo \
|
||||
piscreen.dtbo \
|
||||
piscreen2r.dtbo \
|
||||
pisound.dtbo \
|
||||
pisound-micro.dtbo \
|
||||
pisound-pi5.dtbo \
|
||||
pitft22.dtbo \
|
||||
pitft28-capacitive.dtbo \
|
||||
pitft28-resistive.dtbo \
|
||||
pitft35-resistive.dtbo \
|
||||
pivision.dtbo \
|
||||
pps-gpio.dtbo \
|
||||
proto-codec.dtbo \
|
||||
pwm.dtbo \
|
||||
pwm-2chan.dtbo \
|
||||
pwm-gpio.dtbo \
|
||||
pwm-gpio-fan.dtbo \
|
||||
pwm-ir-tx.dtbo \
|
||||
pwm-pio.dtbo \
|
||||
pwm1.dtbo \
|
||||
qca7000.dtbo \
|
||||
qca7000-uart0.dtbo \
|
||||
ramoops.dtbo \
|
||||
ramoops-pi4.dtbo \
|
||||
rootmaster.dtbo \
|
||||
rotary-encoder.dtbo \
|
||||
rpi-backlight.dtbo \
|
||||
rpi-codeczero.dtbo \
|
||||
rpi-dacplus.dtbo \
|
||||
rpi-dacpro.dtbo \
|
||||
rpi-digiampplus.dtbo \
|
||||
rpi-ft5406.dtbo \
|
||||
rpi-fw-uart.dtbo \
|
||||
rpi-poe.dtbo \
|
||||
rpi-poe-plus.dtbo \
|
||||
rpi-power-hat-b.dtbo \
|
||||
rpi-power-hat-t.dtbo \
|
||||
rpi-sense.dtbo \
|
||||
rpi-sense-v2.dtbo \
|
||||
rpi-tv.dtbo \
|
||||
rra-digidac1-wm8741-audio.dtbo \
|
||||
sainsmart18.dtbo \
|
||||
sc16is750-i2c.dtbo \
|
||||
sc16is752-i2c.dtbo \
|
||||
sc16is75x-spi.dtbo \
|
||||
sdhost.dtbo \
|
||||
sdio.dtbo \
|
||||
sdio-pi5.dtbo \
|
||||
seeed-can-fd-hat-v1.dtbo \
|
||||
seeed-can-fd-hat-v2.dtbo \
|
||||
sh1106-spi.dtbo \
|
||||
si446x-spi0.dtbo \
|
||||
smi.dtbo \
|
||||
smi-dev.dtbo \
|
||||
smi-nand.dtbo \
|
||||
spi-gpio35-39.dtbo \
|
||||
spi-gpio40-45.dtbo \
|
||||
spi-rtc.dtbo \
|
||||
spi0-0cs.dtbo \
|
||||
spi0-1cs.dtbo \
|
||||
spi0-1cs-inverted.dtbo \
|
||||
spi0-2cs.dtbo \
|
||||
spi1-1cs.dtbo \
|
||||
spi1-2cs.dtbo \
|
||||
spi1-3cs.dtbo \
|
||||
spi2-1cs.dtbo \
|
||||
spi2-1cs-pi5.dtbo \
|
||||
spi2-2cs.dtbo \
|
||||
spi2-2cs-pi5.dtbo \
|
||||
spi2-3cs.dtbo \
|
||||
spi3-1cs.dtbo \
|
||||
spi3-1cs-pi5.dtbo \
|
||||
spi3-2cs.dtbo \
|
||||
spi3-2cs-pi5.dtbo \
|
||||
spi4-1cs.dtbo \
|
||||
spi4-2cs.dtbo \
|
||||
spi5-1cs.dtbo \
|
||||
spi5-1cs-pi5.dtbo \
|
||||
spi5-2cs.dtbo \
|
||||
spi5-2cs-pi5.dtbo \
|
||||
spi6-1cs.dtbo \
|
||||
spi6-2cs.dtbo \
|
||||
ssd1306.dtbo \
|
||||
ssd1306-spi.dtbo \
|
||||
ssd1327-spi.dtbo \
|
||||
ssd1331-spi.dtbo \
|
||||
ssd1351-spi.dtbo \
|
||||
sunfounder-pipower3.dtbo \
|
||||
sunfounder-pironman5.dtbo \
|
||||
superaudioboard.dtbo \
|
||||
sx150x.dtbo \
|
||||
tc358743.dtbo \
|
||||
tc358743-audio.dtbo \
|
||||
tc358743-pi5.dtbo \
|
||||
tinylcd35.dtbo \
|
||||
tpm-slb9670.dtbo \
|
||||
tpm-slb9673.dtbo \
|
||||
uart0.dtbo \
|
||||
uart0-pi5.dtbo \
|
||||
uart1.dtbo \
|
||||
uart1-pi5.dtbo \
|
||||
uart2.dtbo \
|
||||
uart2-pi5.dtbo \
|
||||
uart3.dtbo \
|
||||
uart3-pi5.dtbo \
|
||||
uart4.dtbo \
|
||||
uart4-pi5.dtbo \
|
||||
uart5.dtbo \
|
||||
udrc.dtbo \
|
||||
ugreen-dabboard.dtbo \
|
||||
upstream.dtbo \
|
||||
upstream-pi4.dtbo \
|
||||
vc4-fkms-v3d.dtbo \
|
||||
vc4-fkms-v3d-pi4.dtbo \
|
||||
vc4-kms-dpi-generic.dtbo \
|
||||
vc4-kms-dpi-hyperpixel2r.dtbo \
|
||||
vc4-kms-dpi-hyperpixel4.dtbo \
|
||||
vc4-kms-dpi-hyperpixel4sq.dtbo \
|
||||
vc4-kms-dpi-panel.dtbo \
|
||||
vc4-kms-dsi-7inch.dtbo \
|
||||
vc4-kms-dsi-generic.dtbo \
|
||||
vc4-kms-dsi-ili9881-5inch.dtbo \
|
||||
vc4-kms-dsi-ili9881-7inch.dtbo \
|
||||
vc4-kms-dsi-lt070me05000.dtbo \
|
||||
vc4-kms-dsi-lt070me05000-v2.dtbo \
|
||||
vc4-kms-dsi-waveshare-800x480.dtbo \
|
||||
vc4-kms-dsi-waveshare-panel.dtbo \
|
||||
vc4-kms-dsi-waveshare-panel-v2.dtbo \
|
||||
vc4-kms-kippah-7inch.dtbo \
|
||||
vc4-kms-v3d.dtbo \
|
||||
vc4-kms-v3d-pi4.dtbo \
|
||||
vc4-kms-v3d-pi5.dtbo \
|
||||
vc4-kms-vga666.dtbo \
|
||||
vga666.dtbo \
|
||||
vl805.dtbo \
|
||||
w1-gpio.dtbo \
|
||||
w1-gpio-pi5.dtbo \
|
||||
w1-gpio-pullup.dtbo \
|
||||
w1-gpio-pullup-pi5.dtbo \
|
||||
w5500.dtbo \
|
||||
watterott-display.dtbo \
|
||||
waveshare-can-fd-hat-mode-a.dtbo \
|
||||
waveshare-can-fd-hat-mode-b.dtbo \
|
||||
wifimac.dtbo \
|
||||
wittypi.dtbo \
|
||||
wm8960-soundcard.dtbo \
|
||||
ws2812-pio.dtbo
|
||||
|
||||
targets += dtbs dtbs_install
|
||||
targets += $(dtbo-y)
|
||||
|
||||
always-y := $(dtbo-y)
|
||||
clean-files := *.dtbo
|
||||
5991
arch/arm/boot/dts/overlays/README
Normal file
5991
arch/arm/boot/dts/overlays/README
Normal file
File diff suppressed because it is too large
Load Diff
28
arch/arm/boot/dts/overlays/act-led-overlay.dts
Normal file
28
arch/arm/boot/dts/overlays/act-led-overlay.dts
Normal file
@@ -0,0 +1,28 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/* Pi3 uses a GPIO expander to drive the LEDs which can only be accessed
|
||||
from the VPU. There is a special driver for this with a separate DT node,
|
||||
which has the unfortunate consequence of breaking the act_led_gpio and
|
||||
act_led_activelow dtparams.
|
||||
|
||||
This overlay changes the GPIO controller back to the standard one and
|
||||
restores the dtparams.
|
||||
*/
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&led_act>;
|
||||
frag0: __overlay__ {
|
||||
gpios = <&gpio 0 0>;
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
gpio = <&frag0>,"gpios:4",
|
||||
<&frag0>,"status=okay";
|
||||
activelow = <&frag0>,"gpios:8";
|
||||
};
|
||||
};
|
||||
83
arch/arm/boot/dts/overlays/adafruit-st7735r-overlay.dts
Normal file
83
arch/arm/boot/dts/overlays/adafruit-st7735r-overlay.dts
Normal file
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* adafruit-st7735r-overlay.dts
|
||||
*
|
||||
* ST7735R based SPI LCD displays. Either
|
||||
* Adafruit 1.8" 160x128
|
||||
* or
|
||||
* Okaya 1.44" 128x128
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&spidev0>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
adafruit_pins: adafruit_pins {
|
||||
brcm,pins = <25 24>;
|
||||
brcm,function = <1>; /* out */
|
||||
};
|
||||
backlight_pins: backlight_pins {
|
||||
brcm,pins = <18>;
|
||||
brcm,function = <1>; /* out */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
af18_backlight: backlight {
|
||||
compatible = "gpio-backlight";
|
||||
gpios = <&gpio 18 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&backlight_pins>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&spi0>;
|
||||
__overlay__ {
|
||||
/* needed to avoid dtc warning */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
af18: adafruit18@0 {
|
||||
compatible = "jianda,jd-t18003-t01";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <32000000>;
|
||||
dc-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>;
|
||||
reset-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
|
||||
rotation = <90>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&adafruit_pins>;
|
||||
backlight = <&af18_backlight>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
128x128 = <&af18>, "compatible=okaya,rh128128t";
|
||||
speed = <&af18>,"spi-max-frequency:0";
|
||||
rotate = <&af18>,"rotation:0";
|
||||
dc_pin = <&af18>,"dc-gpios:4", <&adafruit_pins>,"brcm,pins:4";
|
||||
reset_pin = <&af18>,"reset-gpios:4",
|
||||
<&adafruit_pins>,"brcm,pins:0";
|
||||
led_pin = <&af18_backlight>,"gpios:4",
|
||||
<&backlight_pins>,"brcm,pins:0";
|
||||
};
|
||||
};
|
||||
55
arch/arm/boot/dts/overlays/adafruit18-overlay.dts
Normal file
55
arch/arm/boot/dts/overlays/adafruit18-overlay.dts
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Device Tree overlay for Adafruit 1.8" TFT LCD with ST7735R chip 160x128
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&spidev0>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&spi0>;
|
||||
__overlay__ {
|
||||
/* needed to avoid dtc warning */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
af18: adafruit18@0 {
|
||||
compatible = "fbtft,adafruit18";
|
||||
reg = <0>;
|
||||
pinctrl-names = "default";
|
||||
spi-max-frequency = <40000000>;
|
||||
rotate = <90>;
|
||||
buswidth = <8>;
|
||||
fps = <50>;
|
||||
height = <160>;
|
||||
width = <128>;
|
||||
reset-gpios = <&gpio 25 1>;
|
||||
dc-gpios = <&gpio 24 0>;
|
||||
led-gpios = <&gpio 18 0>;
|
||||
debug = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
green = <&af18>, "compatible=fbtft,adafruit18_green";
|
||||
speed = <&af18>,"spi-max-frequency:0";
|
||||
rotate = <&af18>,"rotate:0";
|
||||
fps = <&af18>,"fps:0";
|
||||
bgr = <&af18>,"bgr?";
|
||||
debug = <&af18>,"debug:0";
|
||||
dc_pin = <&af18>,"dc-gpios:4";
|
||||
reset_pin = <&af18>,"reset-gpios:4";
|
||||
led_pin = <&af18>,"led-gpios:4";
|
||||
};
|
||||
};
|
||||
40
arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
Normal file
40
arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
Normal file
@@ -0,0 +1,40 @@
|
||||
// Definitions for ADAU1977 ADC
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2c1>;
|
||||
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
adau1977: codec@11 {
|
||||
compatible = "adi,adau1977";
|
||||
reg = <0x11>;
|
||||
reset-gpios = <&gpio 5 0>;
|
||||
AVDD-supply = <&vdd_3v3_reg>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&i2s_clk_consumer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "adi,adau1977-adc";
|
||||
i2s-controller = <&i2s_clk_consumer>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
52
arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts
Normal file
52
arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts
Normal file
@@ -0,0 +1,52 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
adau7002_codec: adau7002-codec {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "adi,adau7002";
|
||||
/* IOVDD-supply = <&supply>;*/
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
sound_overlay: __overlay__ {
|
||||
compatible = "simple-audio-card";
|
||||
simple-audio-card,format = "i2s";
|
||||
simple-audio-card,name = "adau7002";
|
||||
simple-audio-card,bitclock-slave = <&dailink0_slave>;
|
||||
simple-audio-card,frame-slave = <&dailink0_slave>;
|
||||
simple-audio-card,widgets =
|
||||
"Microphone", "Microphone Jack";
|
||||
simple-audio-card,routing =
|
||||
"PDM_DAT", "Microphone Jack";
|
||||
status = "okay";
|
||||
simple-audio-card,cpu {
|
||||
sound-dai = <&i2s_clk_producer>;
|
||||
};
|
||||
dailink0_slave: simple-audio-card,codec {
|
||||
sound-dai = <&adau7002_codec>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
__overrides__ {
|
||||
card-name = <&sound_overlay>,"simple-audio-card,name";
|
||||
};
|
||||
};
|
||||
98
arch/arm/boot/dts/overlays/ads1015-overlay.dts
Normal file
98
arch/arm/boot/dts/overlays/ads1015-overlay.dts
Normal file
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* 2016 - Erik Sejr
|
||||
*/
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
/* ----------- ADS1015 ------------ */
|
||||
fragment@0 {
|
||||
target = <&i2c_arm>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
ads1015: ads1015@48 {
|
||||
compatible = "ti,ads1015";
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x48>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&ads1015>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
channel_a: channel_a {
|
||||
reg = <4>;
|
||||
ti,gain = <2>;
|
||||
ti,datarate = <4>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&ads1015>;
|
||||
__dormant__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
channel_b: channel_b {
|
||||
reg = <5>;
|
||||
ti,gain = <2>;
|
||||
ti,datarate = <4>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&ads1015>;
|
||||
__dormant__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
channel_c: channel_c {
|
||||
reg = <6>;
|
||||
ti,gain = <2>;
|
||||
ti,datarate = <4>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&ads1015>;
|
||||
__dormant__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
channel_d: channel_d {
|
||||
reg = <7>;
|
||||
ti,gain = <2>;
|
||||
ti,datarate = <4>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
addr = <&ads1015>,"reg:0";
|
||||
cha_enable = <0>,"=1";
|
||||
cha_cfg = <&channel_a>,"reg:0";
|
||||
cha_gain = <&channel_a>,"ti,gain:0";
|
||||
cha_datarate = <&channel_a>,"ti,datarate:0";
|
||||
chb_enable = <0>,"=2";
|
||||
chb_cfg = <&channel_b>,"reg:0";
|
||||
chb_gain = <&channel_b>,"ti,gain:0";
|
||||
chb_datarate = <&channel_b>,"ti,datarate:0";
|
||||
chc_enable = <0>,"=3";
|
||||
chc_cfg = <&channel_c>,"reg:0";
|
||||
chc_gain = <&channel_c>,"ti,gain:0";
|
||||
chc_datarate = <&channel_c>,"ti,datarate:0";
|
||||
chd_enable = <0>,"=4";
|
||||
chd_cfg = <&channel_d>,"reg:0";
|
||||
chd_gain = <&channel_d>,"ti,gain:0";
|
||||
chd_datarate = <&channel_d>,"ti,datarate:0";
|
||||
};
|
||||
|
||||
};
|
||||
105
arch/arm/boot/dts/overlays/ads1115-overlay.dts
Normal file
105
arch/arm/boot/dts/overlays/ads1115-overlay.dts
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
* TI ADS1115 multi-channel ADC overlay
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
#include "i2c-buses.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&ads1115>;
|
||||
__dormant__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
channel_a: channel_a {
|
||||
reg = <4>;
|
||||
ti,gain = <1>;
|
||||
ti,datarate = <7>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&ads1115>;
|
||||
__dormant__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
channel_b: channel_b {
|
||||
reg = <5>;
|
||||
ti,gain = <1>;
|
||||
ti,datarate = <7>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&ads1115>;
|
||||
__dormant__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
channel_c: channel_c {
|
||||
reg = <6>;
|
||||
ti,gain = <1>;
|
||||
ti,datarate = <7>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&ads1115>;
|
||||
__dormant__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
channel_d: channel_d {
|
||||
reg = <7>;
|
||||
ti,gain = <1>;
|
||||
ti,datarate = <7>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&i2cbus>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
ads1115: ads1115@48 {
|
||||
compatible = "ti,ads1115";
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x48>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
addr = <&ads1115>,"reg:0";
|
||||
cha_enable = <0>,"=0";
|
||||
cha_cfg = <&channel_a>,"reg:0";
|
||||
cha_gain = <&channel_a>,"ti,gain:0";
|
||||
cha_datarate = <&channel_a>,"ti,datarate:0";
|
||||
chb_enable = <0>,"=1";
|
||||
chb_cfg = <&channel_b>,"reg:0";
|
||||
chb_gain = <&channel_b>,"ti,gain:0";
|
||||
chb_datarate = <&channel_b>,"ti,datarate:0";
|
||||
chc_enable = <0>,"=2";
|
||||
chc_cfg = <&channel_c>,"reg:0";
|
||||
chc_gain = <&channel_c>,"ti,gain:0";
|
||||
chc_datarate = <&channel_c>,"ti,datarate:0";
|
||||
chd_enable = <0>,"=3";
|
||||
chd_cfg = <&channel_d>,"reg:0";
|
||||
chd_gain = <&channel_d>,"ti,gain:0";
|
||||
chd_datarate = <&channel_d>,"ti,datarate:0";
|
||||
};
|
||||
};
|
||||
91
arch/arm/boot/dts/overlays/ads7846-overlay.dts
Normal file
91
arch/arm/boot/dts/overlays/ads7846-overlay.dts
Normal file
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Generic Device Tree overlay for the ADS7846 touch controller
|
||||
*
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&spi0>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&spidev0>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&spidev1>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
ads7846_pins: ads7846_pins {
|
||||
brcm,pins = <255>; /* illegal default value */
|
||||
brcm,function = <0>; /* in */
|
||||
brcm,pull = <0>; /* none */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&spi0>;
|
||||
__overlay__ {
|
||||
/* needed to avoid dtc warning */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ads7846: ads7846@1 {
|
||||
compatible = "ti,ads7846";
|
||||
reg = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ads7846_pins>;
|
||||
|
||||
spi-max-frequency = <2000000>;
|
||||
interrupts = <255 2>; /* high-to-low edge triggered */
|
||||
interrupt-parent = <&gpio>;
|
||||
pendown-gpio = <&gpio 255 1>;
|
||||
|
||||
/* driver defaults */
|
||||
ti,x-min = /bits/ 16 <0>;
|
||||
ti,y-min = /bits/ 16 <0>;
|
||||
ti,x-max = /bits/ 16 <0x0FFF>;
|
||||
ti,y-max = /bits/ 16 <0x0FFF>;
|
||||
ti,pressure-min = /bits/ 16 <0>;
|
||||
ti,pressure-max = /bits/ 16 <0xFFFF>;
|
||||
ti,x-plate-ohms = /bits/ 16 <400>;
|
||||
};
|
||||
};
|
||||
};
|
||||
__overrides__ {
|
||||
cs = <&ads7846>,"reg:0";
|
||||
speed = <&ads7846>,"spi-max-frequency:0";
|
||||
penirq = <&ads7846_pins>,"brcm,pins:0", /* REQUIRED */
|
||||
<&ads7846>,"interrupts:0",
|
||||
<&ads7846>,"pendown-gpio:4";
|
||||
penirq_pull = <&ads7846_pins>,"brcm,pull:0";
|
||||
swapxy = <&ads7846>,"touchscreen-swapped-x-y?";
|
||||
xmin = <&ads7846>,"ti,x-min;0";
|
||||
ymin = <&ads7846>,"ti,y-min;0";
|
||||
xmax = <&ads7846>,"ti,x-max;0";
|
||||
ymax = <&ads7846>,"ti,y-max;0";
|
||||
pmin = <&ads7846>,"ti,pressure-min;0";
|
||||
pmax = <&ads7846>,"ti,pressure-max;0";
|
||||
xohms = <&ads7846>,"ti,x-plate-ohms;0";
|
||||
invx = <&ads7846>,"touchscreen-inverted-x?";
|
||||
invy = <&ads7846>,"touchscreen-inverted-y?";
|
||||
};
|
||||
};
|
||||
73
arch/arm/boot/dts/overlays/adv7282m-overlay.dts
Normal file
73
arch/arm/boot/dts/overlays/adv7282m-overlay.dts
Normal file
@@ -0,0 +1,73 @@
|
||||
// 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,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2c_csi_dsi>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
adv728x: adv728x@21 {
|
||||
compatible = "adi,adv7282-m";
|
||||
reg = <0x21>;
|
||||
status = "okay";
|
||||
clock-frequency = <24000000>;
|
||||
port {
|
||||
adv728x_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__ {
|
||||
status = "okay";
|
||||
|
||||
port {
|
||||
csi1_ep: endpoint {
|
||||
remote-endpoint = <&adv728x_0>;
|
||||
data-lanes = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
fragment@2 {
|
||||
target = <&i2c0if>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&i2c0mux>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&csi1>;
|
||||
__overlay__ {
|
||||
compatible = "brcm,bcm2835-unicam-legacy";
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
addr = <&adv728x>,"reg:0";
|
||||
media-controller = <0>,"!4";
|
||||
};
|
||||
};
|
||||
37
arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
Normal file
37
arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
Normal file
@@ -0,0 +1,37 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
// Definitions for Analog Devices ADV728[0|1|2]-M video to CSI2 bridges on VC
|
||||
// I2C bus
|
||||
|
||||
#include "adv7282m-overlay.dts"
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
// Fragment numbers deliberately high to avoid conflicts with the
|
||||
// included adv7282m overlay file.
|
||||
|
||||
fragment@101 {
|
||||
target = <&adv728x>;
|
||||
__dormant__ {
|
||||
compatible = "adi,adv7280-m";
|
||||
};
|
||||
};
|
||||
fragment@102 {
|
||||
target = <&adv728x>;
|
||||
__dormant__ {
|
||||
compatible = "adi,adv7281-m";
|
||||
};
|
||||
};
|
||||
fragment@103 {
|
||||
target = <&adv728x>;
|
||||
__dormant__ {
|
||||
compatible = "adi,adv7281-ma";
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
adv7280m = <0>, "+101";
|
||||
adv7281m = <0>, "+102";
|
||||
adv7281ma = <0>, "+103";
|
||||
};
|
||||
};
|
||||
49
arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
Normal file
49
arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
Normal file
@@ -0,0 +1,49 @@
|
||||
// Definitions for Digital Dreamtime Akkordion using IQaudIO DAC+ or DACZero
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
pcm5122@4c {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "ti,pcm5122";
|
||||
reg = <0x4c>;
|
||||
AVDD-supply = <&vdd_3v3_reg>;
|
||||
DVDD-supply = <&vdd_3v3_reg>;
|
||||
CPVDD-supply = <&vdd_3v3_reg>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
frag2: __overlay__ {
|
||||
compatible = "iqaudio,iqaudio-dac";
|
||||
card_name = "Akkordion";
|
||||
dai_name = "IQaudIO DAC";
|
||||
dai_stream_name = "IQaudIO DAC HiFi";
|
||||
i2s-controller = <&i2s_clk_producer>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Definitions for Allo Boss DAC board
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
boss_osc: boss_osc {
|
||||
compatible = "allo,dac-clk";
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
frag1: fragment@1 {
|
||||
target = <&i2s_clk_consumer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
pcm5122@4d {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "ti,pcm5122";
|
||||
clocks = <&boss_osc>;
|
||||
reg = <0x4d>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&sound>;
|
||||
boss_dac: __overlay__ {
|
||||
compatible = "allo,boss-dac";
|
||||
i2s-controller = <&i2s_clk_consumer>;
|
||||
mute-gpios = <&gpio 6 1>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
24db_digital_gain = <&boss_dac>,"allo,24db_digital_gain?";
|
||||
slave = <&boss_dac>,"allo,slave?",
|
||||
<&frag1>,"target:0=",<&i2s_clk_producer>,
|
||||
<&boss_dac>,"i2s-controller:0=",<&i2s_clk_producer>;
|
||||
};
|
||||
};
|
||||
57
arch/arm/boot/dts/overlays/allo-boss2-dac-audio-overlay.dts
Normal file
57
arch/arm/boot/dts/overlays/allo-boss2-dac-audio-overlay.dts
Normal file
@@ -0,0 +1,57 @@
|
||||
/* * Definitions for Allo Boss2 DAC boards
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_consumer>;
|
||||
__overlay__ {
|
||||
#sound-dai-cells = <0>;
|
||||
status = "okay";
|
||||
cpu_port: port {
|
||||
cpu_endpoint: endpoint {
|
||||
remote-endpoint = <&codec_endpoint>;
|
||||
bitclock-master = <&codec_endpoint>;
|
||||
frame-master = <&codec_endpoint>;
|
||||
dai-format = "i2s";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
allo-cs43130@30 {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "allo,allo-cs43198";
|
||||
clock44-gpio = <&gpio 5 0>;
|
||||
clock48-gpio = <&gpio 6 0>;
|
||||
reg = <0x30>;
|
||||
port {
|
||||
codec_endpoint: endpoint {
|
||||
remote-endpoint = <&cpu_endpoint>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
boss2_dac: __overlay__ {
|
||||
compatible = "audio-graph-card";
|
||||
label = "Allo Boss2";
|
||||
dais = <&cpu_port>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
44
arch/arm/boot/dts/overlays/allo-digione-overlay.dts
Normal file
44
arch/arm/boot/dts/overlays/allo-digione-overlay.dts
Normal file
@@ -0,0 +1,44 @@
|
||||
// Definitions for Allo DigiOne
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_consumer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
wm8804@3b {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "wlf,wm8804";
|
||||
reg = <0x3b>;
|
||||
PVDD-supply = <&vdd_3v3_reg>;
|
||||
DVDD-supply = <&vdd_3v3_reg>;
|
||||
status = "okay";
|
||||
wlf,reset-gpio = <&gpio 17 0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "allo,allo-digione";
|
||||
i2s-controller = <&i2s_clk_consumer>;
|
||||
status = "okay";
|
||||
clock44-gpio = <&gpio 5 0>;
|
||||
clock48-gpio = <&gpio 6 0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
58
arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts
Normal file
58
arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts
Normal file
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Definitions for Allo Katana DAC boards
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_consumer>;
|
||||
__overlay__ {
|
||||
#sound-dai-cells = <0>;
|
||||
status = "okay";
|
||||
cpu_port: port {
|
||||
cpu_endpoint: endpoint {
|
||||
remote-endpoint = <&codec_endpoint>;
|
||||
bitclock-master = <&codec_endpoint>;
|
||||
frame-master = <&codec_endpoint>;
|
||||
dai-format = "i2s";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
clock-frequency = <50000>;
|
||||
|
||||
allo-katana-codec@30 {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "allo,allo-katana-codec";
|
||||
reg = <0x30>;
|
||||
port {
|
||||
codec_endpoint: endpoint {
|
||||
remote-endpoint = <&cpu_endpoint>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
katana_dac: __overlay__ {
|
||||
compatible = "audio-graph-card";
|
||||
label = "Allo Katana";
|
||||
dais = <&cpu_port>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Definitions for Allo Piano DAC (2.0/2.1) boards
|
||||
*
|
||||
* NB. The Piano DAC 2.1 board contains 2x TI PCM5142 DAC's. One DAC is stereo
|
||||
* (left/right) and the other provides a subwoofer output, using DSP on the
|
||||
* chip for digital high/low pass crossover.
|
||||
* The initial support for this hardware, that doesn't require any codec driver
|
||||
* modifications, uses only one DAC chip for stereo (left/right) output, the
|
||||
* chip with 0x4c slave address. The other chip at 0x4d is currently ignored!
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
pcm5142@4c {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "ti,pcm5142";
|
||||
reg = <0x4c>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
piano_dac: __overlay__ {
|
||||
compatible = "allo,piano-dac";
|
||||
i2s-controller = <&i2s_clk_producer>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
24db_digital_gain =
|
||||
<&piano_dac>,"allo,24db_digital_gain?";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,57 @@
|
||||
// Definitions for Piano DAC
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
allo_pcm5122_4c: pcm5122@4c {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "ti,pcm5122";
|
||||
reg = <0x4c>;
|
||||
sound-name-prefix = "Main";
|
||||
status = "okay";
|
||||
};
|
||||
allo_pcm5122_4d: pcm5122@4d {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "ti,pcm5122";
|
||||
reg = <0x4d>;
|
||||
sound-name-prefix = "Sub";
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
piano_dac: __overlay__ {
|
||||
compatible = "allo,piano-dac-plus";
|
||||
audio-codec = <&allo_pcm5122_4c &allo_pcm5122_4d>;
|
||||
i2s-controller = <&i2s_clk_producer>;
|
||||
mute1-gpios = <&gpio 6 1>;
|
||||
mute2-gpios = <&gpio 25 1>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
24db_digital_gain =
|
||||
<&piano_dac>,"allo,24db_digital_gain?";
|
||||
glb_mclk =
|
||||
<&piano_dac>,"allo,glb_mclk?";
|
||||
};
|
||||
};
|
||||
205
arch/arm/boot/dts/overlays/anyspi-overlay.dts
Executable file
205
arch/arm/boot/dts/overlays/anyspi-overlay.dts
Executable file
@@ -0,0 +1,205 @@
|
||||
/*
|
||||
* Universal device tree overlay for SPI devices
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&spidev0>;
|
||||
__dormant__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&spidev1>;
|
||||
__dormant__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target-path = "spi1/spidev@0";
|
||||
__dormant__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target-path = "spi1/spidev@1";
|
||||
__dormant__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target-path = "spi1/spidev@2";
|
||||
__dormant__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@5 {
|
||||
target-path = "spi2/spidev@0";
|
||||
__dormant__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@6 {
|
||||
target-path = "spi2/spidev@1";
|
||||
__dormant__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@7 {
|
||||
target-path = "spi2/spidev@2";
|
||||
__dormant__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@8 {
|
||||
target = <&spi0>;
|
||||
__dormant__ {
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
anyspi_00: anyspi@0 {
|
||||
reg = <0>;
|
||||
spi-max-frequency = <500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@9 {
|
||||
target = <&spi0>;
|
||||
__dormant__ {
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
anyspi_01: anyspi@1 {
|
||||
reg = <1>;
|
||||
spi-max-frequency = <500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@10 {
|
||||
target = <&spi1>;
|
||||
__dormant__ {
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
anyspi_10: anyspi@0 {
|
||||
reg = <0>;
|
||||
spi-max-frequency = <500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@11 {
|
||||
target = <&spi1>;
|
||||
__dormant__ {
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
anyspi_11: anyspi@1 {
|
||||
reg = <1>;
|
||||
spi-max-frequency = <500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@12 {
|
||||
target = <&spi1>;
|
||||
__dormant__ {
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
anyspi_12: anyspi@2 {
|
||||
reg = <2>;
|
||||
spi-max-frequency = <500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@13 {
|
||||
target = <&spi2>;
|
||||
__dormant__ {
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
anyspi_20: anyspi@0 {
|
||||
reg = <0>;
|
||||
spi-max-frequency = <500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@14 {
|
||||
target = <&spi2>;
|
||||
__dormant__ {
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
anyspi_21: anyspi@1 {
|
||||
reg = <1>;
|
||||
spi-max-frequency = <500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@15 {
|
||||
target = <&spi2>;
|
||||
__dormant__ {
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
anyspi_22: anyspi@2 {
|
||||
reg = <2>;
|
||||
spi-max-frequency = <500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
spi0-0 = <0>, "+0+8";
|
||||
spi0-1 = <0>, "+1+9";
|
||||
spi1-0 = <0>, "+2+10";
|
||||
spi1-1 = <0>, "+3+11";
|
||||
spi1-2 = <0>, "+4+12";
|
||||
spi2-0 = <0>, "+5+13";
|
||||
spi2-1 = <0>, "+6+14";
|
||||
spi2-2 = <0>, "+7+15";
|
||||
dev = <&anyspi_00>,"compatible",
|
||||
<&anyspi_01>,"compatible",
|
||||
<&anyspi_10>,"compatible",
|
||||
<&anyspi_11>,"compatible",
|
||||
<&anyspi_12>,"compatible",
|
||||
<&anyspi_20>,"compatible",
|
||||
<&anyspi_21>,"compatible",
|
||||
<&anyspi_22>,"compatible";
|
||||
speed = <&anyspi_00>, "spi-max-frequency:0",
|
||||
<&anyspi_01>, "spi-max-frequency:0",
|
||||
<&anyspi_10>, "spi-max-frequency:0",
|
||||
<&anyspi_11>, "spi-max-frequency:0",
|
||||
<&anyspi_12>, "spi-max-frequency:0",
|
||||
<&anyspi_20>, "spi-max-frequency:0",
|
||||
<&anyspi_21>, "spi-max-frequency:0",
|
||||
<&anyspi_22>, "spi-max-frequency:0";
|
||||
};
|
||||
};
|
||||
55
arch/arm/boot/dts/overlays/apds9960-overlay.dts
Normal file
55
arch/arm/boot/dts/overlays/apds9960-overlay.dts
Normal file
@@ -0,0 +1,55 @@
|
||||
// Definitions for APDS-9960 ambient light and gesture sensor
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
apds9960_pins: apds9960_pins@39 {
|
||||
brcm,pins = <4>;
|
||||
brcm,function = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&apds9960>;
|
||||
apds9960_irq: __overlay__ {
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <4 1>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
apds9960: apds@39 {
|
||||
compatible = "avago,apds9960";
|
||||
reg = <0x39>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
gpiopin = <&apds9960_pins>,"brcm,pins:0",
|
||||
<&apds9960_irq>,"interrupts:0";
|
||||
noints = <0>,"!1!2";
|
||||
};
|
||||
};
|
||||
|
||||
57
arch/arm/boot/dts/overlays/applepi-dac-overlay.dts
Normal file
57
arch/arm/boot/dts/overlays/applepi-dac-overlay.dts
Normal file
@@ -0,0 +1,57 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "simple-audio-card";
|
||||
simple-audio-card,name = "ApplePi-DAC";
|
||||
|
||||
status = "okay";
|
||||
|
||||
playback_link: simple-audio-card,dai-link@1 {
|
||||
format = "i2s";
|
||||
|
||||
p_cpu_dai: cpu {
|
||||
sound-dai = <&i2s_clk_producer>;
|
||||
dai-tdm-slot-num = <2>;
|
||||
dai-tdm-slot-width = <32>;
|
||||
};
|
||||
|
||||
p_codec_dai: codec {
|
||||
sound-dai = <&codec_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
codec_out: pcm1794a-codec {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "ti,pcm1794a";
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
#sound-dai-cells = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
Written by: Leonid Ayzenshtat
|
||||
Company: Orchard Audio (www.orchardaudio.com)
|
||||
|
||||
compile with:
|
||||
dtc -@ -H epapr -O dtb -o ApplePi-DAC.dtbo -W no-unit_address_vs_reg ApplePi-DAC.dts
|
||||
*/
|
||||
97
arch/arm/boot/dts/overlays/arducam-64mp-overlay.dts
Normal file
97
arch/arm/boot/dts/overlays/arducam-64mp-overlay.dts
Normal file
@@ -0,0 +1,97 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
// Definitions for Arducam 64MP camera module on VC I2C bus
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
i2c_frag: fragment@0 {
|
||||
target = <&i2c_csi_dsi>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
#include "arducam-64mp.dtsi"
|
||||
};
|
||||
};
|
||||
|
||||
csi_frag: fragment@1 {
|
||||
target = <&csi1>;
|
||||
csi: __overlay__ {
|
||||
status = "okay";
|
||||
|
||||
port{
|
||||
csi_ep: endpoint{
|
||||
remote-endpoint = <&cam_endpoint>;
|
||||
clock-lanes = <0>;
|
||||
data-lanes = <1 2>;
|
||||
clock-noncontinuous;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&i2c0if>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
clk_frag: fragment@3 {
|
||||
target = <&cam1_clk>;
|
||||
__overlay__ {
|
||||
clock-frequency = <24000000>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&i2c0mux>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@5 {
|
||||
target = <&cam_node>;
|
||||
__overlay__ {
|
||||
lens-focus = <&vcm_node>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@6 {
|
||||
target = <&csi1>;
|
||||
__dormant__ {
|
||||
compatible = "brcm,bcm2835-unicam-legacy";
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
rotation = <&cam_node>,"rotation:0";
|
||||
orientation = <&cam_node>,"orientation:0";
|
||||
media-controller = <0>,"!6";
|
||||
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
|
||||
<&csi_frag>, "target:0=",<&csi0>,
|
||||
<&clk_frag>, "target:0=",<&cam0_clk>,
|
||||
<&cam_node>, "clocks:0=",<&cam0_clk>,
|
||||
<&cam_node>, "VANA-supply:0=",<&cam0_reg>,
|
||||
<&vcm_node>, "VDD-supply:0=", <&cam0_reg>;
|
||||
vcm = <&vcm_node>, "status",
|
||||
<0>, "=5";
|
||||
};
|
||||
};
|
||||
|
||||
&cam_node {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&cam_endpoint {
|
||||
remote-endpoint = <&csi_ep>;
|
||||
};
|
||||
|
||||
&vcm_node {
|
||||
status = "okay";
|
||||
};
|
||||
34
arch/arm/boot/dts/overlays/arducam-64mp.dtsi
Normal file
34
arch/arm/boot/dts/overlays/arducam-64mp.dtsi
Normal file
@@ -0,0 +1,34 @@
|
||||
// Fragment that configures a Arducam64MP
|
||||
|
||||
cam_node: arducam_64mp@1a {
|
||||
compatible = "arducam,64mp";
|
||||
reg = <0x1a>;
|
||||
status = "disabled";
|
||||
|
||||
clocks = <&cam1_clk>;
|
||||
clock-names = "xclk";
|
||||
|
||||
VANA-supply = <&cam1_reg>; /* 2.8v */
|
||||
VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
|
||||
VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
|
||||
|
||||
rotation = <0>;
|
||||
orientation = <2>;
|
||||
|
||||
port {
|
||||
cam_endpoint: endpoint {
|
||||
clock-lanes = <0>;
|
||||
data-lanes = <1 2>;
|
||||
clock-noncontinuous;
|
||||
link-frequencies =
|
||||
/bits/ 64 <456000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
vcm_node: dw9817_arducam64mp@c {
|
||||
compatible = "dongwoon,dw9817-vcm";
|
||||
reg = <0x0c>;
|
||||
status = "disabled";
|
||||
VDD-supply = <&cam1_reg>;
|
||||
};
|
||||
100
arch/arm/boot/dts/overlays/arducam-pivariety-overlay.dts
Normal file
100
arch/arm/boot/dts/overlays/arducam-pivariety-overlay.dts
Normal file
@@ -0,0 +1,100 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
// Definitions for Arducam Pivariety camera module on VC I2C bus
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
i2c_frag: fragment@0 {
|
||||
target = <&i2c_csi_dsi>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
arducam_pivariety: arducam_pivariety@c {
|
||||
compatible = "arducam,arducam-pivariety";
|
||||
reg = <0x0c>;
|
||||
status = "okay";
|
||||
|
||||
clocks = <&cam1_clk>;
|
||||
clock-names = "xclk";
|
||||
|
||||
VANA-supply = <&cam1_reg>; /* 2.8v */
|
||||
VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
|
||||
VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
|
||||
|
||||
rotation = <0>;
|
||||
orientation = <2>;
|
||||
|
||||
port {
|
||||
arducam_pivariety_0: endpoint {
|
||||
remote-endpoint = <&csi1_ep>;
|
||||
clock-lanes = <0>;
|
||||
data-lanes = <1 2>;
|
||||
clock-noncontinuous;
|
||||
link-frequencies =
|
||||
/bits/ 64 <493500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
csi_frag: fragment@1 {
|
||||
target = <&csi1>;
|
||||
csi: __overlay__ {
|
||||
status = "okay";
|
||||
|
||||
port{
|
||||
csi1_ep: endpoint{
|
||||
remote-endpoint = <&arducam_pivariety_0>;
|
||||
clock-lanes = <0>;
|
||||
data-lanes = <1 2>;
|
||||
clock-noncontinuous;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&i2c0if>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
clk_frag: fragment@3 {
|
||||
target = <&cam1_clk>;
|
||||
__overlay__ {
|
||||
clock-frequency = <24000000>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&i2c0mux>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@5 {
|
||||
target = <&csi1>;
|
||||
__dormant__ {
|
||||
compatible = "brcm,bcm2835-unicam-legacy";
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
rotation = <&arducam_pivariety>,"rotation:0";
|
||||
orientation = <&arducam_pivariety>,"orientation:0";
|
||||
media-controller = <0>,"!5";
|
||||
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
|
||||
<&csi_frag>, "target:0=",<&csi0>,
|
||||
<&clk_frag>, "target:0=",<&cam0_clk>,
|
||||
<&arducam_pivariety>, "clocks:0=",<&cam0_clk>,
|
||||
<&arducam_pivariety>, "VANA-supply:0=",<&cam0_reg>;
|
||||
};
|
||||
};
|
||||
57
arch/arm/boot/dts/overlays/at86rf233-overlay.dts
Normal file
57
arch/arm/boot/dts/overlays/at86rf233-overlay.dts
Normal file
@@ -0,0 +1,57 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/* Overlay for Atmel AT86RF233 IEEE 802.15.4 WPAN transceiver on spi0.0 */
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&spi0>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
status = "okay";
|
||||
|
||||
lowpan0: at86rf233@0 {
|
||||
compatible = "atmel,at86rf233";
|
||||
reg = <0>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <23 4>; /* active high */
|
||||
reset-gpio = <&gpio 24 1>;
|
||||
sleep-gpio = <&gpio 25 1>;
|
||||
spi-max-frequency = <3000000>;
|
||||
xtal-trim = /bits/ 8 <0xf>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&spidev0>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
lowpan0_pins: lowpan0_pins {
|
||||
brcm,pins = <23 24 25>;
|
||||
brcm,function = <0 1 1>; /* in out out */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
interrupt = <&lowpan0>, "interrupts:0",
|
||||
<&lowpan0_pins>, "brcm,pins:0";
|
||||
reset = <&lowpan0>, "reset-gpio:4",
|
||||
<&lowpan0_pins>, "brcm,pins:4";
|
||||
sleep = <&lowpan0>, "sleep-gpio:4",
|
||||
<&lowpan0_pins>, "brcm,pins:8";
|
||||
speed = <&lowpan0>, "spi-max-frequency:0";
|
||||
trim = <&lowpan0>, "xtal-trim.0";
|
||||
};
|
||||
};
|
||||
60
arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
Normal file
60
arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
Normal file
@@ -0,0 +1,60 @@
|
||||
// Definitions for audioinjector.net audio add on soundcard
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
cs42448_mclk: codec-mclk {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <49152000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
cs42448: cs42448@48 {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "cirrus,cs42448";
|
||||
reg = <0x48>;
|
||||
clocks = <&cs42448_mclk>;
|
||||
clock-names = "mclk";
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&sound>;
|
||||
snd: __overlay__ {
|
||||
compatible = "ai,audioinjector-octo-soundcard";
|
||||
mult-gpios = <&gpio 27 0>, <&gpio 22 0>, <&gpio 23 0>,
|
||||
<&gpio 24 0>;
|
||||
reset-gpios = <&gpio 5 0>;
|
||||
i2s-controller = <&i2s_clk_producer>;
|
||||
codec = <&cs42448>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
non-stop-clocks = <&snd>, "non-stop-clocks?";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,50 @@
|
||||
// Definitions for audioinjector.net audio soundcard
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
codec_bare: codec_bare {
|
||||
compatible = "linux,spdif-dit";
|
||||
#sound-dai-cells = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "simple-audio-card";
|
||||
i2s-controller = <&i2s_clk_producer>;
|
||||
status = "okay";
|
||||
|
||||
simple-audio-card,name = "audioinjector-bare";
|
||||
simple-audio-card,format = "i2s";
|
||||
|
||||
simple-audio-card,bitclock-master = <&dailink0_master>;
|
||||
simple-audio-card,frame-master = <&dailink0_master>;
|
||||
|
||||
dailink0_master: simple-audio-card,cpu {
|
||||
sound-dai = <&i2s_clk_producer>;
|
||||
dai-tdm-slot-num = <2>;
|
||||
dai-tdm-slot-width = <32>;
|
||||
};
|
||||
|
||||
snd_codec: simple-audio-card,codec {
|
||||
sound-dai = <&codec_bare>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,55 @@
|
||||
// Definitions for audioinjector.net audio isolated soundcard
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_consumer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
cs4272_mclk: codec-mclk {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <24576000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
cs4272: cs4271@10 {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "cirrus,cs4271";
|
||||
reg = <0x10>;
|
||||
reset-gpio = <&gpio 5 0>;
|
||||
clocks = <&cs4272_mclk>;
|
||||
clock-names = "mclk";
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&sound>;
|
||||
snd: __overlay__ {
|
||||
compatible = "ai,audioinjector-isolated-soundcard";
|
||||
mute-gpios = <&gpio 17 0>;
|
||||
i2s-controller = <&i2s_clk_consumer>;
|
||||
codec = <&cs4272>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
71
arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts
Normal file
71
arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts
Normal file
@@ -0,0 +1,71 @@
|
||||
// Definitions for audioinjector.net audio add on soundcard
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_consumer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
cs4265: cs4265@4e {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "cirrus,cs4265";
|
||||
reg = <0x4e>;
|
||||
reset-gpios = <&gpio 5 0>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "simple-audio-card";
|
||||
i2s-controller = <&i2s_clk_consumer>;
|
||||
status = "okay";
|
||||
|
||||
simple-audio-card,name = "audioinjector-ultra";
|
||||
|
||||
simple-audio-card,widgets =
|
||||
"Line", "OUTPUTS",
|
||||
"Line", "INPUTS";
|
||||
|
||||
simple-audio-card,routing =
|
||||
"OUTPUTS","LINEOUTL",
|
||||
"OUTPUTS","LINEOUTR",
|
||||
"OUTPUTS","SPDIFOUT",
|
||||
"LINEINL","INPUTS",
|
||||
"LINEINR","INPUTS",
|
||||
"MICL","INPUTS",
|
||||
"MICR","INPUTS";
|
||||
|
||||
simple-audio-card,format = "i2s";
|
||||
|
||||
simple-audio-card,bitclock-master = <&sound_master>;
|
||||
simple-audio-card,frame-master = <&sound_master>;
|
||||
|
||||
simple-audio-card,cpu {
|
||||
sound-dai = <&i2s_clk_consumer>;
|
||||
dai-tdm-slot-num = <2>;
|
||||
dai-tdm-slot-width = <32>;
|
||||
};
|
||||
|
||||
sound_master: simple-audio-card,codec {
|
||||
sound-dai = <&cs4265>;
|
||||
system-clock-frequency = <12288000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,39 @@
|
||||
// Definitions for audioinjector.net audio add on soundcard
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_consumer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
wm8731@1a {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "wlf,wm8731";
|
||||
reg = <0x1a>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "ai,audioinjector-pi-soundcard";
|
||||
i2s-controller = <&i2s_clk_consumer>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
82
arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts
Normal file
82
arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts
Normal file
@@ -0,0 +1,82 @@
|
||||
// Definitions for audiosense add on soundcard
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
#include <dt-bindings/pinctrl/bcm2835.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_consumer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
codec_reg_1v8: codec-reg-1v8 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "tlv320aic3204_1v8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
/* audio external oscillator */
|
||||
codec_osc: codec_osc {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <12000000>; /* 12 MHz */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
codec_rst: codec-rst {
|
||||
brcm,pins = <26>;
|
||||
brcm,function = <BCM2835_FSEL_GPIO_OUT>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
codec: tlv320aic32x4@18 {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "ti,tlv320aic32x4";
|
||||
reg = <0x18>;
|
||||
|
||||
clocks = <&codec_osc>;
|
||||
clock-names = "mclk";
|
||||
|
||||
iov-supply = <&vdd_3v3_reg>;
|
||||
ldoin-supply = <&vdd_3v3_reg>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reset-gpios = <&gpio 26 GPIO_ACTIVE_HIGH>;
|
||||
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "as,audiosense-pi";
|
||||
i2s-controller = <&i2s_clk_consumer>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
38
arch/arm/boot/dts/overlays/audremap-overlay.dts
Normal file
38
arch/arm/boot/dts/overlays/audremap-overlay.dts
Normal file
@@ -0,0 +1,38 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&audio_pins>;
|
||||
frag0: __overlay__ {
|
||||
brcm,pins = <12 13>;
|
||||
brcm,function = <4>; /* alt0 alt0 */
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&chosen>;
|
||||
__overlay__ {
|
||||
bootargs = "snd_bcm2835.enable_headphones=1";
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
swap_lr = <&frag0>, "swap_lr?";
|
||||
enable_jack = <&frag0>, "enable_jack?";
|
||||
pins_12_13 = <&frag0>,"brcm,pins:0=12",
|
||||
<&frag0>,"brcm,pins:4=13",
|
||||
<&frag0>,"brcm,function:0=4";
|
||||
pins_18_19 = <&frag0>,"brcm,pins:0=18",
|
||||
<&frag0>,"brcm,pins:4=19",
|
||||
<&frag0>,"brcm,function:0=2";
|
||||
pins_40_41 = <&frag0>,"brcm,pins:0=40",
|
||||
<&frag0>,"brcm,pins:4=41",
|
||||
<&frag0>,"brcm,function:0=4";
|
||||
pins_40_45 = <&frag0>,"brcm,pins:0=40",
|
||||
<&frag0>,"brcm,pins:4=45",
|
||||
<&frag0>,"brcm,function:0=4";
|
||||
};
|
||||
};
|
||||
65
arch/arm/boot/dts/overlays/audremap-pi5-overlay.dts
Normal file
65
arch/arm/boot/dts/overlays/audremap-pi5-overlay.dts
Normal file
@@ -0,0 +1,65 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/*
|
||||
* Raspberry Pi 5 has a different Audio Out hardware from earlier Raspberry Pis.
|
||||
* It can output only to GPIOs 12 and 13. We therefore enable it *only* when
|
||||
* that particular GPIO mapping is requested here. To make it work with ASOC
|
||||
* we must also define a "dummy" codec and a generic audio card.
|
||||
*/
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2712";
|
||||
|
||||
fragment@0 {
|
||||
target = <&rp1_audio_out>;
|
||||
frag0: __overlay__ {
|
||||
pinctrl-0 = <&rp1_audio_out_12_13>;
|
||||
pinctrl-names = "default";
|
||||
status = "ok";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
|
||||
rp1_audio_out_codec: rp1_audio_out_codec@0 {
|
||||
compatible = "linux,spdif-dit";
|
||||
#sound-dai-cells = <0>;
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
rp1_audio_out_simple_card@0 {
|
||||
compatible = "simple-audio-card";
|
||||
simple-audio-card,name = "RP1-Audio-Out";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "ok";
|
||||
|
||||
simple-audio-card,dai-link@0 {
|
||||
reg = <0>;
|
||||
format = "left_j";
|
||||
bitclock-master = <&sndcpu0>;
|
||||
frame-master = <&sndcpu0>;
|
||||
|
||||
sndcpu0: cpu {
|
||||
sound-dai = <&rp1_audio_out>;
|
||||
};
|
||||
|
||||
codec {
|
||||
sound-dai = <&rp1_audio_out_codec>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
swap_lr = <&frag0>, "swap_lr?";
|
||||
pins_12_13 = <0>, "+0+1"; /* this is the default */
|
||||
pins_18_19 = <0>, "-0-1"; /* sorry not supported */
|
||||
pins_40_41 = <0>, "-0-1"; /* sorry not supported */
|
||||
pins_40_45 = <0>, "-0-1"; /* sorry not supported */
|
||||
};
|
||||
};
|
||||
125
arch/arm/boot/dts/overlays/balena-fin-overlay.dts
Normal file
125
arch/arm/boot/dts/overlays/balena-fin-overlay.dts
Normal file
@@ -0,0 +1,125 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&mmcnr>;
|
||||
__overlay__ {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdio_pins>;
|
||||
bus-width = <4>;
|
||||
brcm,overclock-50 = <35>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
sdio_pins: sdio_ovl_pins {
|
||||
brcm,pins = <34 35 36 37 38 39>;
|
||||
brcm,function = <7>; /* ALT3 = SD1 */
|
||||
brcm,pull = <0 2 2 2 2 2>;
|
||||
};
|
||||
|
||||
power_ctrl_pins: power_ctrl_pins {
|
||||
brcm,pins = <40>;
|
||||
brcm,function = <1>; // out
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
// We should switch to mmc-pwrseq-sd8787 after making it
|
||||
// compatible with sd8887
|
||||
// Currently that module requires two GPIOs to function since it
|
||||
// targets a slightly different chip
|
||||
power_ctrl: power_ctrl {
|
||||
compatible = "gpio-poweroff";
|
||||
gpios = <&gpio 40 1>;
|
||||
force;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&power_ctrl_pins>;
|
||||
};
|
||||
|
||||
i2c_soft: i2c@0 {
|
||||
compatible = "i2c-gpio";
|
||||
gpios = <&gpio 43 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* sda */
|
||||
&gpio 42 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* scl */>;
|
||||
i2c-gpio,delay-us = <5>;
|
||||
i2c-gpio,scl-open-drain;
|
||||
i2c-gpio,sda-open-drain;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
sd8xxx-wlan {
|
||||
drvdbg = <0x6>;
|
||||
drv_mode = <0x1>;
|
||||
cfg80211_wext = <0xf>;
|
||||
sta_name = "wlan";
|
||||
wfd_name = "p2p";
|
||||
cal_data_cfg = "none";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&i2c_soft>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
gpio_expander: gpio_expander@20 {
|
||||
compatible = "nxp,pca9554";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0x20>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
// rtc clock
|
||||
ds1307: ds1307@68 {
|
||||
compatible = "dallas,ds1307";
|
||||
reg = <0x68>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
// RGB LEDs (>= v1.1.0)
|
||||
pca9633: pca9633@62 {
|
||||
compatible = "nxp,pca9633";
|
||||
reg = <0x62>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
red@0 {
|
||||
label = "red";
|
||||
reg = <0>;
|
||||
linux,default-trigger = "none";
|
||||
};
|
||||
green@1 {
|
||||
label = "green";
|
||||
reg = <1>;
|
||||
linux,default-trigger = "none";
|
||||
};
|
||||
blue@2 {
|
||||
label = "blue";
|
||||
reg = <2>;
|
||||
linux,default-trigger = "none";
|
||||
};
|
||||
unused@3 {
|
||||
label = "unused";
|
||||
reg = <3>;
|
||||
linux,default-trigger = "none";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
68
arch/arm/boot/dts/overlays/bcm2712d0-overlay.dts
Normal file
68
arch/arm/boot/dts/overlays/bcm2712d0-overlay.dts
Normal file
@@ -0,0 +1,68 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2712";
|
||||
|
||||
fragment@0 {
|
||||
target = <&gio>;
|
||||
__overlay__ {
|
||||
brcm,gpio-bank-widths = <32 4>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&gio_aon>;
|
||||
__overlay__ {
|
||||
brcm,gpio-bank-widths = <15 6>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&pinctrl>;
|
||||
__overlay__ {
|
||||
compatible = "brcm,bcm2712d0-pinctrl";
|
||||
reg = <0x7d504100 0x20>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&pinctrl_aon>;
|
||||
__overlay__ {
|
||||
compatible = "brcm,bcm2712d0-aon-pinctrl";
|
||||
reg = <0x7d510700 0x1c>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&uart10>;
|
||||
__overlay__ {
|
||||
interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@5 {
|
||||
target = <&spi10>;
|
||||
__overlay__ {
|
||||
dmas = <&dma40 3>, <&dma40 4>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@6 {
|
||||
target = <&hdmi0>;
|
||||
__overlay__ {
|
||||
dmas = <&dma40 (12|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@7 {
|
||||
target = <&hdmi1>;
|
||||
__overlay__ {
|
||||
dmas = <&dma40 (13|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
|
||||
};
|
||||
};
|
||||
};
|
||||
545
arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts
Normal file
545
arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts
Normal file
@@ -0,0 +1,545 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
// Overlay to configure a 2 port camera multiplexer
|
||||
//
|
||||
// Configuration is based on the Arducam Doubleplexer
|
||||
// which uses a PCA9543 I2C multiplexer to handle the
|
||||
// I2C, and GPIO 4 to control the MIPI mux, and GPIO 17
|
||||
// to enable the CSI-2 mux output (gpio-hog).
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
/* Fragments that complete the individual sensor fragments */
|
||||
/* IMX290 */
|
||||
fragment@0 {
|
||||
target = <&imx290_0_ep>;
|
||||
__overlay__ {
|
||||
data-lanes = <1 2>;
|
||||
link-frequencies =
|
||||
/bits/ 64 <445500000 297000000>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&imx290_1_ep>;
|
||||
__overlay__ {
|
||||
data-lanes = <1 2>;
|
||||
link-frequencies =
|
||||
/bits/ 64 <445500000 297000000>;
|
||||
};
|
||||
};
|
||||
|
||||
/* IMX477 */
|
||||
fragment@10 {
|
||||
target = <&imx477_0>;
|
||||
__overlay__ {
|
||||
compatible = "sony,imx477";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@11 {
|
||||
target = <&imx477_1>;
|
||||
__overlay__ {
|
||||
compatible = "sony,imx477";
|
||||
};
|
||||
};
|
||||
|
||||
/* Additional fragments affecting the mux nodes */
|
||||
fragment@100 {
|
||||
target = <&mux_in0>;
|
||||
__dormant__ {
|
||||
data-lanes = <1>;
|
||||
};
|
||||
};
|
||||
fragment@101 {
|
||||
target = <&mux_in0>;
|
||||
__overlay__ {
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@102 {
|
||||
target = <&mux_in1>;
|
||||
__dormant__ {
|
||||
data-lanes = <1>;
|
||||
};
|
||||
};
|
||||
fragment@103 {
|
||||
target = <&mux_in1>;
|
||||
__overlay__ {
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
||||
/* Mux define */
|
||||
i2c_frag: fragment@200 {
|
||||
target = <&i2c_csi_dsi>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
pca@70 {
|
||||
reg = <0x70>;
|
||||
compatible = "nxp,pca9543";
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c@0 {
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
#define cam_node arducam_64mp_0
|
||||
#define cam_endpoint arducam_64mp_0_ep
|
||||
#define vcm_node arducam_64mp_0_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "arducam-64mp.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx219_0
|
||||
#define cam_endpoint imx219_0_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx219.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx477_0
|
||||
#define cam_endpoint imx477_0_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx477_378.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx519_0
|
||||
#define cam_endpoint imx519_0_ep
|
||||
#define vcm_node imx519_0_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx519.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx708_0
|
||||
#define cam_endpoint imx708_0_ep
|
||||
#define vcm_node imx708_0_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx708.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov5647_0
|
||||
#define cam_endpoint ov5647_0_ep
|
||||
#define cam1_clk clk_25mhz
|
||||
#include "ov5647.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov7251_0
|
||||
#define cam_endpoint ov7251_0_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov7251.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov9281_0
|
||||
#define cam_endpoint ov9281_0_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov9281.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx258_0
|
||||
#define cam_endpoint imx258_0_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx258.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx290_0
|
||||
#define cam_endpoint imx290_0_ep
|
||||
#define cam1_clk clk_imx290
|
||||
#include "imx290_327.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov2311_0
|
||||
#define cam_endpoint ov2311_0_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov2311.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov64a40_0
|
||||
#define cam_endpoint ov64a40_0_ep
|
||||
#define vcm_node ov64a40_0_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov64a40.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
};
|
||||
|
||||
i2c@1 {
|
||||
reg = <1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
#define cam_node arducam_64mp_1
|
||||
#define cam_endpoint arducam_64mp_1_ep
|
||||
#define vcm_node arducam_64mp_1_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "arducam-64mp.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx219_1
|
||||
#define cam_endpoint imx219_1_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx219.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx477_1
|
||||
#define cam_endpoint imx477_1_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx477_378.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx519_1
|
||||
#define cam_endpoint imx519_1_ep
|
||||
#define vcm_node imx519_1_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx519.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx708_1
|
||||
#define cam_endpoint imx708_1_ep
|
||||
#define vcm_node imx708_1_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx708.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov5647_1
|
||||
#define cam_endpoint ov5647_1_ep
|
||||
#define cam1_clk clk_25mhz
|
||||
#include "ov5647.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov7251_1
|
||||
#define cam_endpoint ov7251_1_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov7251.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov9281_1
|
||||
#define cam_endpoint ov9281_1_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov9281.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx258_1
|
||||
#define cam_endpoint imx258_1_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx258.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx290_1
|
||||
#define cam_endpoint imx290_1_ep
|
||||
#define cam1_clk clk_imx290
|
||||
#include "imx290_327.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov2311_1
|
||||
#define cam_endpoint ov2311_1_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov2311.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov64a40_1
|
||||
#define cam_endpoint ov64a40_1_ep
|
||||
#define vcm_node ov64a40_1_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov64a40.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
csi_frag: fragment@201 {
|
||||
target = <&csi1>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
|
||||
port {
|
||||
csi1_ep: endpoint {
|
||||
remote-endpoint = <&mux_out>;
|
||||
clock-lanes = <0>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@202 {
|
||||
target = <&i2c0if>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@203 {
|
||||
target-path="/";
|
||||
__overlay__ {
|
||||
mux: mux-controller {
|
||||
compatible = "gpio-mux";
|
||||
#mux-control-cells = <0>;
|
||||
|
||||
mux-gpios = <&gpio 4 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
video-mux {
|
||||
compatible = "video-mux";
|
||||
mux-controls = <&mux>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
|
||||
mux_in0: endpoint {
|
||||
clock-lanes = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
|
||||
mux_in1: endpoint {
|
||||
clock-lanes = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
port@2 {
|
||||
reg = <2>;
|
||||
|
||||
mux_out: endpoint {
|
||||
remote-endpoint = <&csi1_ep>;
|
||||
clock-lanes = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
clk_24mhz: clk_24mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
|
||||
clock-frequency = <24000000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
clk_25mhz: clk_25mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
|
||||
clock-frequency = <25000000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
clk_imx290: clk_imx290 {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
|
||||
clock-frequency = <37125000>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@204 {
|
||||
target = <&i2c0mux>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@205 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
mipi_sw_oe_hog {
|
||||
gpio-hog;
|
||||
gpios = <17 GPIO_ACTIVE_LOW>;
|
||||
output-high;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
cam0-arducam-64mp = <&mux_in0>, "remote-endpoint:0=",<&arducam_64mp_0_ep>,
|
||||
<&arducam_64mp_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&arducam_64mp_0>, "status=okay",
|
||||
<&arducam_64mp_0_vcm>, "status=okay",
|
||||
<&arducam_64mp_0>,"lens-focus:0=", <&arducam_64mp_0_vcm>;
|
||||
cam0-imx219 = <&mux_in0>, "remote-endpoint:0=",<&imx219_0_ep>,
|
||||
<&imx219_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&imx219_0>, "status=okay";
|
||||
cam0-imx477 = <&mux_in0>, "remote-endpoint:0=",<&imx477_0_ep>,
|
||||
<&imx477_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&imx477_0>, "status=okay";
|
||||
cam0-imx519 = <&mux_in0>, "remote-endpoint:0=",<&imx519_0_ep>,
|
||||
<&imx519_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&imx519_0>, "status=okay",
|
||||
<&imx519_0_vcm>, "status=okay",
|
||||
<&imx519_0>,"lens-focus:0=", <&imx519_0_vcm>;
|
||||
cam0-imx708 = <&mux_in0>, "remote-endpoint:0=",<&imx708_0_ep>,
|
||||
<&imx708_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&imx708_0>, "status=okay",
|
||||
<&imx708_0_vcm>, "status=okay",
|
||||
<&imx708_0>,"lens-focus:0=", <&imx708_0_vcm>;
|
||||
cam0-ov5647 = <&mux_in0>, "remote-endpoint:0=",<&ov5647_0_ep>,
|
||||
<&ov5647_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&ov5647_0>, "status=okay";
|
||||
cam0-ov7251 = <&mux_in0>, "remote-endpoint:0=",<&ov7251_0_ep>,
|
||||
<&ov7251_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&ov7251_0>, "status=okay",
|
||||
<0>,"+100-101";
|
||||
cam0-ov9281 = <&mux_in0>, "remote-endpoint:0=",<&ov9281_0_ep>,
|
||||
<&ov9281_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&ov9281_0>, "status=okay";
|
||||
cam0-imx258 = <&mux_in0>, "remote-endpoint:0=",<&imx258_0_ep>,
|
||||
<&imx258_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&imx258_0>, "status=okay";
|
||||
cam0-imx290 = <&mux_in0>, "remote-endpoint:0=",<&imx290_0_ep>,
|
||||
<&imx290_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&imx290_0>, "status=okay";
|
||||
cam0-ov2311 = <&mux_in0>, "remote-endpoint:0=",<&ov2311_0_ep>,
|
||||
<&ov2311_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&ov2311_0>, "status=okay";
|
||||
cam0-ov64a40 = <&mux_in0>, "remote-endpoint:0=",<&ov64a40_0_ep>,
|
||||
<&ov64a40_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&ov64a40_0>, "status=okay",
|
||||
<&ov64a40_0_vcm>, "status=okay",
|
||||
<&ov64a40_0>,"lens-focus:0=", <&ov64a40_0_vcm>;
|
||||
|
||||
cam1-arducam-64mp = <&mux_in1>, "remote-endpoint:0=",<&arducam_64mp_1_ep>,
|
||||
<&arducam_64mp_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&arducam_64mp_1>, "status=okay",
|
||||
<&arducam_64mp_1_vcm>, "status=okay",
|
||||
<&arducam_64mp_1>,"lens-focus:0=", <&arducam_64mp_1_vcm>;
|
||||
cam1-imx219 = <&mux_in1>, "remote-endpoint:0=",<&imx219_1_ep>,
|
||||
<&imx219_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&imx219_1>, "status=okay";
|
||||
cam1-imx477 = <&mux_in1>, "remote-endpoint:0=",<&imx477_1_ep>,
|
||||
<&imx477_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&imx477_1>, "status=okay";
|
||||
cam1-imx519 = <&mux_in1>, "remote-endpoint:0=",<&imx519_1_ep>,
|
||||
<&imx519_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&imx519_1>, "status=okay",
|
||||
<&imx519_1_vcm>, "status=okay",
|
||||
<&imx519_1>,"lens-focus:0=", <&imx519_1_vcm>;
|
||||
cam1-imx708 = <&mux_in1>, "remote-endpoint:0=",<&imx708_1_ep>,
|
||||
<&imx708_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&imx708_1>, "status=okay",
|
||||
<&imx708_1_vcm>, "status=okay",
|
||||
<&imx708_1>,"lens-focus:0=", <&imx708_1_vcm>;
|
||||
cam1-ov5647 = <&mux_in1>, "remote-endpoint:0=",<&ov5647_1_ep>,
|
||||
<&ov5647_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&ov5647_1>, "status=okay";
|
||||
cam1-ov7251 = <&mux_in1>, "remote-endpoint:0=",<&ov7251_1_ep>,
|
||||
<&ov7251_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&ov7251_1>, "status=okay",
|
||||
<0>,"+102-103";
|
||||
cam1-ov9281 = <&mux_in1>, "remote-endpoint:0=",<&ov9281_1_ep>,
|
||||
<&ov9281_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&ov9281_1>, "status=okay";
|
||||
cam1-imx258 = <&mux_in1>, "remote-endpoint:0=",<&imx258_1_ep>,
|
||||
<&imx258_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&imx258_1>, "status=okay";
|
||||
cam1-imx290 = <&mux_in1>, "remote-endpoint:0=",<&imx290_1_ep>,
|
||||
<&imx290_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&imx290_1>, "status=okay";
|
||||
cam1-ov2311 = <&mux_in1>, "remote-endpoint:0=",<&ov2311_1_ep>,
|
||||
<&ov2311_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&ov2311_1>, "status=okay";
|
||||
cam1-ov64a40 = <&mux_in1>, "remote-endpoint:0=",<&ov64a40_1_ep>,
|
||||
<&ov64a40_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&ov64a40_1>, "status=okay",
|
||||
<&ov64a40_1_vcm>, "status=okay",
|
||||
<&ov64a40_1>,"lens-focus:0=", <&ov64a40_1_vcm>;
|
||||
|
||||
cam0-imx290-clk-freq = <&clk_imx290>,"clock-frequency:0",
|
||||
<&imx290_0>,"clock-frequency:0";
|
||||
cam1-imx290-clk-freq = <&clk_imx290>,"clock-frequency:0",
|
||||
<&imx290_1>,"clock-frequency:0";
|
||||
|
||||
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
|
||||
<&csi_frag>, "target:0=",<&csi0>;
|
||||
|
||||
cam0-sync-source = <&imx477_0>, "trigger-mode:0=1";
|
||||
cam0-sync-sink = <&imx477_0>, "trigger-mode:0=2";
|
||||
cam1-sync-source = <&imx477_1>, "trigger-mode:0=1";
|
||||
cam1-sync-sink = <&imx477_1>, "trigger-mode:0=2";
|
||||
};
|
||||
};
|
||||
954
arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts
Normal file
954
arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts
Normal file
@@ -0,0 +1,954 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
// Overlay to configure a 4 port camera multiplexer
|
||||
//
|
||||
// Configuration is based on the Arducam 4 channel multiplexer
|
||||
// which uses a PCA9543 I2C multiplexer to handle the
|
||||
// I2C, and GPIOs 4, 17, and 18 to control the MIPI muxes.
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
/* Fragments that complete the individual sensor fragments */
|
||||
/* IMX290 */
|
||||
fragment@0 {
|
||||
target = <&imx290_0_ep>;
|
||||
__overlay__ {
|
||||
data-lanes = <1 2>;
|
||||
link-frequencies =
|
||||
/bits/ 64 <445500000 297000000>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&imx290_1_ep>;
|
||||
__overlay__ {
|
||||
data-lanes = <1 2>;
|
||||
link-frequencies =
|
||||
/bits/ 64 <445500000 297000000>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&imx290_2_ep>;
|
||||
__overlay__ {
|
||||
data-lanes = <1 2>;
|
||||
link-frequencies =
|
||||
/bits/ 64 <445500000 297000000>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&imx290_3_ep>;
|
||||
__overlay__ {
|
||||
data-lanes = <1 2>;
|
||||
link-frequencies =
|
||||
/bits/ 64 <445500000 297000000>;
|
||||
};
|
||||
};
|
||||
|
||||
/* IMX477 */
|
||||
fragment@10 {
|
||||
target = <&imx477_0>;
|
||||
__overlay__ {
|
||||
compatible = "sony,imx477";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@11 {
|
||||
target = <&imx477_1>;
|
||||
__overlay__ {
|
||||
compatible = "sony,imx477";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@12 {
|
||||
target = <&imx477_2>;
|
||||
__overlay__ {
|
||||
compatible = "sony,imx477";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@13 {
|
||||
target = <&imx477_3>;
|
||||
__overlay__ {
|
||||
compatible = "sony,imx477";
|
||||
};
|
||||
};
|
||||
|
||||
/* Additional fragments affecting the mux nodes */
|
||||
fragment@100 {
|
||||
target = <&mux_in0>;
|
||||
__dormant__ {
|
||||
data-lanes = <1>;
|
||||
};
|
||||
};
|
||||
fragment@101 {
|
||||
target = <&mux_in0>;
|
||||
__overlay__ {
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@102 {
|
||||
target = <&mux_in1>;
|
||||
__dormant__ {
|
||||
data-lanes = <1>;
|
||||
};
|
||||
};
|
||||
fragment@103 {
|
||||
target = <&mux_in1>;
|
||||
__overlay__ {
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@104 {
|
||||
target = <&mux_in2>;
|
||||
__dormant__ {
|
||||
data-lanes = <1>;
|
||||
};
|
||||
};
|
||||
fragment@105 {
|
||||
target = <&mux_in2>;
|
||||
__overlay__ {
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@106 {
|
||||
target = <&mux_in3>;
|
||||
__dormant__ {
|
||||
data-lanes = <1>;
|
||||
};
|
||||
};
|
||||
fragment@107 {
|
||||
target = <&mux_in3>;
|
||||
__overlay__ {
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
||||
/* Mux define */
|
||||
i2c_frag: fragment@200 {
|
||||
target = <&i2c_csi_dsi>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
pca@70 {
|
||||
reg = <0x70>;
|
||||
compatible = "nxp,pca9544";
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c@0 {
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
#define cam_node arducam_64mp_0
|
||||
#define cam_endpoint arducam_64mp_0_ep
|
||||
#define vcm_node arducam_64mp_0_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "arducam-64mp.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx219_0
|
||||
#define cam_endpoint imx219_0_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx219.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx477_0
|
||||
#define cam_endpoint imx477_0_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx477_378.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx519_0
|
||||
#define cam_endpoint imx519_0_ep
|
||||
#define vcm_node imx519_0_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx519.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx708_0
|
||||
#define cam_endpoint imx708_0_ep
|
||||
#define vcm_node imx708_0_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx708.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov5647_0
|
||||
#define cam_endpoint ov5647_0_ep
|
||||
#define cam1_clk clk_25mhz
|
||||
#include "ov5647.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov7251_0
|
||||
#define cam_endpoint ov7251_0_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov7251.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov9281_0
|
||||
#define cam_endpoint ov9281_0_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov9281.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx258_0
|
||||
#define cam_endpoint imx258_0_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx258.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx290_0
|
||||
#define cam_endpoint imx290_0_ep
|
||||
#define cam1_clk clk_imx290
|
||||
#include "imx290_327.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov2311_0
|
||||
#define cam_endpoint ov2311_0_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov2311.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov64a40_0
|
||||
#define cam_endpoint ov64a40_0_ep
|
||||
#define vcm_node ov64a40_0_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov64a40.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
};
|
||||
|
||||
i2c@1 {
|
||||
reg = <1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
#define cam_node arducam_64mp_1
|
||||
#define cam_endpoint arducam_64mp_1_ep
|
||||
#define vcm_node arducam_64mp_1_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "arducam-64mp.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx219_1
|
||||
#define cam_endpoint imx219_1_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx219.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx477_1
|
||||
#define cam_endpoint imx477_1_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx477_378.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx519_1
|
||||
#define cam_endpoint imx519_1_ep
|
||||
#define vcm_node imx519_1_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx519.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx708_1
|
||||
#define cam_endpoint imx708_1_ep
|
||||
#define vcm_node imx708_1_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx708.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov5647_1
|
||||
#define cam_endpoint ov5647_1_ep
|
||||
#define cam1_clk clk_25mhz
|
||||
#include "ov5647.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov7251_1
|
||||
#define cam_endpoint ov7251_1_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov7251.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov9281_1
|
||||
#define cam_endpoint ov9281_1_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov9281.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx258_1
|
||||
#define cam_endpoint imx258_1_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx258.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx290_1
|
||||
#define cam_endpoint imx290_1_ep
|
||||
#define cam1_clk clk_imx290
|
||||
#include "imx290_327.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov2311_1
|
||||
#define cam_endpoint ov2311_1_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov2311.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov64a40_1
|
||||
#define cam_endpoint ov64a40_1_ep
|
||||
#define vcm_node ov64a40_1_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov64a40.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
};
|
||||
|
||||
i2c@2 {
|
||||
reg = <2>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
#define cam_node arducam_64mp_2
|
||||
#define cam_endpoint arducam_64mp_2_ep
|
||||
#define vcm_node arducam_64mp_2_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "arducam-64mp.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx219_2
|
||||
#define cam_endpoint imx219_2_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx219.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx477_2
|
||||
#define cam_endpoint imx477_2_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx477_378.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx519_2
|
||||
#define cam_endpoint imx519_2_ep
|
||||
#define vcm_node imx519_2_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx519.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx708_2
|
||||
#define cam_endpoint imx708_2_ep
|
||||
#define vcm_node imx708_2_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx708.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov5647_2
|
||||
#define cam_endpoint ov5647_2_ep
|
||||
#define cam1_clk clk_25mhz
|
||||
#include "ov5647.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov7251_2
|
||||
#define cam_endpoint ov7251_2_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov7251.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov9281_2
|
||||
#define cam_endpoint ov9281_2_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov9281.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx258_2
|
||||
#define cam_endpoint imx258_2_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx258.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx290_2
|
||||
#define cam_endpoint imx290_2_ep
|
||||
#define cam1_clk clk_imx290
|
||||
#include "imx290_327.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov2311_2
|
||||
#define cam_endpoint ov2311_2_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov2311.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov64a40_2
|
||||
#define cam_endpoint ov64a40_2_ep
|
||||
#define vcm_node ov64a40_2_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov64a40.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
};
|
||||
|
||||
i2c@3 {
|
||||
reg = <3>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
#define cam_node arducam_64mp_3
|
||||
#define cam_endpoint arducam_64mp_3_ep
|
||||
#define vcm_node arducam_64mp_3_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "arducam-64mp.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx219_3
|
||||
#define cam_endpoint imx219_3_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx219.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx477_3
|
||||
#define cam_endpoint imx477_3_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx477_378.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx519_3
|
||||
#define cam_endpoint imx519_3_ep
|
||||
#define vcm_node imx519_3_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx519.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx708_3
|
||||
#define cam_endpoint imx708_3_ep
|
||||
#define vcm_node imx708_3_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx708.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov5647_3
|
||||
#define cam_endpoint ov5647_3_ep
|
||||
#define cam1_clk clk_25mhz
|
||||
#include "ov5647.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov7251_3
|
||||
#define cam_endpoint ov7251_3_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov7251.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov9281_3
|
||||
#define cam_endpoint ov9281_3_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov9281.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx258_3
|
||||
#define cam_endpoint imx258_3_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "imx258.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node imx290_3
|
||||
#define cam_endpoint imx290_3_ep
|
||||
#define cam1_clk clk_imx290
|
||||
#include "imx290_327.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov2311_3
|
||||
#define cam_endpoint ov2311_3_ep
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov2311.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef cam1_clk
|
||||
|
||||
#define cam_node ov64a40_3
|
||||
#define cam_endpoint ov64a40_3_ep
|
||||
#define vcm_node ov64a40_3_vcm
|
||||
#define cam1_clk clk_24mhz
|
||||
#include "ov64a40.dtsi"
|
||||
#undef cam_node
|
||||
#undef cam_endpoint
|
||||
#undef vcm_node
|
||||
#undef cam1_clk
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
csi_frag: fragment@201 {
|
||||
target = <&csi1>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
|
||||
port {
|
||||
csi1_ep: endpoint {
|
||||
remote-endpoint = <&mux_out>;
|
||||
clock-lanes = <0>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@202 {
|
||||
target = <&i2c0if>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@203 {
|
||||
target-path="/";
|
||||
__overlay__ {
|
||||
mux: mux-controller {
|
||||
compatible = "gpio-mux";
|
||||
#mux-control-cells = <0>;
|
||||
|
||||
/* SEL, En2, En1 */
|
||||
mux-gpios = <&gpio 4 GPIO_ACTIVE_HIGH>,
|
||||
<&gpio 18 GPIO_ACTIVE_HIGH>,
|
||||
<&gpio 17 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
video-mux {
|
||||
compatible = "video-mux";
|
||||
mux-controls = <&mux>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
/* GPIO mappings settings for selecting the different
|
||||
* camera connectors are not direct, hence port@ values
|
||||
* are not straight forward.
|
||||
*/
|
||||
port@2 {
|
||||
/* Port A - GPIO 17 = 0, GPIO 18 = 1,GPIO 4 = 0 */
|
||||
reg = <2>;
|
||||
|
||||
mux_in0: endpoint {
|
||||
clock-lanes = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
port@3 {
|
||||
/* Port B - GPIO 17 = 0, GPIO 18 = 1,GPIO 4 = 1 */
|
||||
reg = <3>;
|
||||
|
||||
mux_in1: endpoint {
|
||||
clock-lanes = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
port@4 {
|
||||
/* Port C - GPIO 17 = 1, GPIO 18 = 0, GPIO 4 = 0 */
|
||||
reg = <4>;
|
||||
|
||||
mux_in2: endpoint {
|
||||
clock-lanes = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
port@5 {
|
||||
/* Port D - GPIO 17 = 1, GPIO 18 = 0, GPIO 4 = 1 */
|
||||
reg = <5>;
|
||||
|
||||
mux_in3: endpoint {
|
||||
clock-lanes = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
port@6 {
|
||||
/* Output port needs to be the highest port number */
|
||||
reg = <6>;
|
||||
|
||||
mux_out: endpoint {
|
||||
remote-endpoint = <&csi1_ep>;
|
||||
clock-lanes = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
clk_24mhz: clk_24mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
|
||||
clock-frequency = <24000000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
clk_25mhz: clk_25mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
|
||||
clock-frequency = <25000000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
clk_imx290: clk_imx290 {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
|
||||
clock-frequency = <37125000>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@204 {
|
||||
target = <&i2c0mux>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
cam0-arducam-64mp = <&mux_in0>, "remote-endpoint:0=",<&arducam_64mp_0_ep>,
|
||||
<&arducam_64mp_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&arducam_64mp_0>, "status=okay",
|
||||
<&arducam_64mp_0_vcm>, "status=okay",
|
||||
<&arducam_64mp_0>,"lens-focus:0=", <&arducam_64mp_0_vcm>;
|
||||
cam0-imx219 = <&mux_in0>, "remote-endpoint:0=",<&imx219_0_ep>,
|
||||
<&imx219_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&imx219_0>, "status=okay";
|
||||
cam0-imx477 = <&mux_in0>, "remote-endpoint:0=",<&imx477_0_ep>,
|
||||
<&imx477_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&imx477_0>, "status=okay";
|
||||
cam0-imx519 = <&mux_in0>, "remote-endpoint:0=",<&imx519_0_ep>,
|
||||
<&imx519_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&imx519_0>, "status=okay",
|
||||
<&imx519_0_vcm>, "status=okay",
|
||||
<&imx519_0>,"lens-focus:0=", <&imx519_0_vcm>;
|
||||
cam0-imx708 = <&mux_in0>, "remote-endpoint:0=",<&imx708_0_ep>,
|
||||
<&imx708_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&imx708_0>, "status=okay",
|
||||
<&imx708_0_vcm>, "status=okay",
|
||||
<&imx708_0>,"lens-focus:0=", <&imx708_0_vcm>;
|
||||
cam0-ov5647 = <&mux_in0>, "remote-endpoint:0=",<&ov5647_0_ep>,
|
||||
<&ov5647_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&ov5647_0>, "status=okay";
|
||||
cam0-ov7251 = <&mux_in0>, "remote-endpoint:0=",<&ov7251_0_ep>,
|
||||
<&ov7251_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&ov7251_0>, "status=okay",
|
||||
<0>,"+100-101";
|
||||
cam0-ov9281 = <&mux_in0>, "remote-endpoint:0=",<&ov9281_0_ep>,
|
||||
<&ov9281_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&ov9281_0>, "status=okay";
|
||||
cam0-imx258 = <&mux_in0>, "remote-endpoint:0=",<&imx258_0_ep>,
|
||||
<&imx258_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&imx258_0>, "status=okay";
|
||||
cam0-imx290 = <&mux_in0>, "remote-endpoint:0=",<&imx290_0_ep>,
|
||||
<&imx290_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&imx290_0>, "status=okay";
|
||||
cam0-ov2311 = <&mux_in0>, "remote-endpoint:0=",<&ov2311_0_ep>,
|
||||
<&ov2311_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&ov2311_0>, "status=okay";
|
||||
cam0-ov64a40 = <&mux_in0>, "remote-endpoint:0=",<&ov64a40_0_ep>,
|
||||
<&ov64a40_0_ep>, "remote-endpoint:0=",<&mux_in0>,
|
||||
<&mux_in0>, "clock-noncontinuous?",
|
||||
<&ov64a40_0>, "status=okay",
|
||||
<&ov64a40_0_vcm>, "status=okay",
|
||||
<&ov64a40_0>,"lens-focus:0=", <&ov64a40_0_vcm>;
|
||||
|
||||
cam1-arducam-64mp = <&mux_in1>, "remote-endpoint:0=",<&arducam_64mp_1_ep>,
|
||||
<&arducam_64mp_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&arducam_64mp_1>, "status=okay",
|
||||
<&arducam_64mp_1_vcm>, "status=okay",
|
||||
<&arducam_64mp_1>,"lens-focus:0=", <&arducam_64mp_1_vcm>;
|
||||
cam1-imx219 = <&mux_in1>, "remote-endpoint:0=",<&imx219_1_ep>,
|
||||
<&imx219_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&imx219_1>, "status=okay";
|
||||
cam1-imx477 = <&mux_in1>, "remote-endpoint:0=",<&imx477_1_ep>,
|
||||
<&imx477_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&imx477_1>, "status=okay";
|
||||
cam1-imx519 = <&mux_in1>, "remote-endpoint:0=",<&imx519_1_ep>,
|
||||
<&imx519_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&imx519_1>, "status=okay",
|
||||
<&imx519_1_vcm>, "status=okay",
|
||||
<&imx519_1>,"lens-focus:0=", <&imx519_1_vcm>;
|
||||
cam1-imx708 = <&mux_in1>, "remote-endpoint:0=",<&imx708_1_ep>,
|
||||
<&imx708_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&imx708_1>, "status=okay",
|
||||
<&imx708_1_vcm>, "status=okay",
|
||||
<&imx708_1>,"lens-focus:0=", <&imx708_1_vcm>;
|
||||
cam1-ov5647 = <&mux_in1>, "remote-endpoint:0=",<&ov5647_1_ep>,
|
||||
<&ov5647_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&ov5647_1>, "status=okay";
|
||||
cam1-ov7251 = <&mux_in1>, "remote-endpoint:0=",<&ov7251_1_ep>,
|
||||
<&ov7251_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&ov7251_1>, "status=okay",
|
||||
<0>,"+102-103";
|
||||
cam1-ov9281 = <&mux_in1>, "remote-endpoint:0=",<&ov9281_1_ep>,
|
||||
<&ov9281_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&ov9281_1>, "status=okay";
|
||||
cam1-imx258 = <&mux_in1>, "remote-endpoint:0=",<&imx258_1_ep>,
|
||||
<&imx258_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&imx258_1>, "status=okay";
|
||||
cam1-imx290 = <&mux_in1>, "remote-endpoint:0=",<&imx290_1_ep>,
|
||||
<&imx290_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&imx290_1>, "status=okay";
|
||||
cam1-ov2311 = <&mux_in1>, "remote-endpoint:0=",<&ov2311_1_ep>,
|
||||
<&ov2311_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&ov2311_1>, "status=okay";
|
||||
cam1-ov64a40 = <&mux_in1>, "remote-endpoint:0=",<&ov64a40_1_ep>,
|
||||
<&ov64a40_1_ep>, "remote-endpoint:0=",<&mux_in1>,
|
||||
<&mux_in1>, "clock-noncontinuous?",
|
||||
<&ov64a40_1>, "status=okay",
|
||||
<&ov64a40_1_vcm>, "status=okay",
|
||||
<&ov64a40_1>,"lens-focus:0=", <&ov64a40_1_vcm>;
|
||||
|
||||
cam2-arducam-64mp = <&mux_in2>, "remote-endpoint:0=",<&arducam_64mp_2_ep>,
|
||||
<&arducam_64mp_2_ep>, "remote-endpoint:0=",<&mux_in2>,
|
||||
<&mux_in2>, "clock-noncontinuous?",
|
||||
<&arducam_64mp_2>, "status=okay",
|
||||
<&arducam_64mp_2_vcm>, "status=okay",
|
||||
<&arducam_64mp_2>,"lens-focus:0=", <&arducam_64mp_2_vcm>;
|
||||
cam2-imx219 = <&mux_in2>, "remote-endpoint:0=",<&imx219_2_ep>,
|
||||
<&imx219_2_ep>, "remote-endpoint:0=",<&mux_in2>,
|
||||
<&mux_in2>, "clock-noncontinuous?",
|
||||
<&imx219_2>, "status=okay";
|
||||
cam2-imx477 = <&mux_in2>, "remote-endpoint:0=",<&imx477_2_ep>,
|
||||
<&imx477_2_ep>, "remote-endpoint:0=",<&mux_in2>,
|
||||
<&mux_in2>, "clock-noncontinuous?",
|
||||
<&imx477_2>, "status=okay";
|
||||
cam2-imx519 = <&mux_in2>, "remote-endpoint:0=",<&imx519_2_ep>,
|
||||
<&imx519_2_ep>, "remote-endpoint:0=",<&mux_in2>,
|
||||
<&mux_in2>, "clock-noncontinuous?",
|
||||
<&imx519_2>, "status=okay",
|
||||
<&imx519_2_vcm>, "status=okay",
|
||||
<&imx519_2>,"lens-focus:0=", <&imx519_2_vcm>;
|
||||
cam2-imx708 = <&mux_in2>, "remote-endpoint:0=",<&imx708_2_ep>,
|
||||
<&imx708_2_ep>, "remote-endpoint:0=",<&mux_in2>,
|
||||
<&mux_in2>, "clock-noncontinuous?",
|
||||
<&imx708_2>, "status=okay",
|
||||
<&imx708_2_vcm>, "status=okay",
|
||||
<&imx708_2>,"lens-focus:0=", <&imx708_2_vcm>;
|
||||
cam2-ov5647 = <&mux_in2>, "remote-endpoint:0=",<&ov5647_2_ep>,
|
||||
<&ov5647_2_ep>, "remote-endpoint:0=",<&mux_in2>,
|
||||
<&mux_in2>, "clock-noncontinuous?",
|
||||
<&ov5647_2>, "status=okay";
|
||||
cam2-ov7251 = <&mux_in2>, "remote-endpoint:0=",<&ov7251_2_ep>,
|
||||
<&ov7251_2_ep>, "remote-endpoint:0=",<&mux_in2>,
|
||||
<&ov7251_2>, "status=okay",
|
||||
<0>,"+104-105";
|
||||
cam2-ov9281 = <&mux_in2>, "remote-endpoint:0=",<&ov9281_2_ep>,
|
||||
<&ov9281_2_ep>, "remote-endpoint:0=",<&mux_in2>,
|
||||
<&ov9281_2>, "status=okay";
|
||||
cam2-imx258 = <&mux_in2>, "remote-endpoint:0=",<&imx258_2_ep>,
|
||||
<&imx258_2>, "status=okay",
|
||||
<&imx258_2>, "remote-endpoint:0=",<&mux_in2>;
|
||||
cam2-imx290 = <&mux_in2>, "remote-endpoint:0=",<&imx290_2_ep>,
|
||||
<&imx290_2_ep>, "remote-endpoint:0=",<&mux_in2>,
|
||||
<&imx290_2>, "status=okay";
|
||||
cam2-ov2311 = <&mux_in2>, "remote-endpoint:0=",<&ov2311_2_ep>,
|
||||
<&ov2311_2_ep>, "remote-endpoint:0=",<&mux_in2>,
|
||||
<&ov2311_2>, "status=okay";
|
||||
cam2-ov64a40 = <&mux_in2>, "remote-endpoint:0=",<&ov64a40_2_ep>,
|
||||
<&ov64a40_2_ep>, "remote-endpoint:0=",<&mux_in2>,
|
||||
<&mux_in2>, "clock-noncontinuous?",
|
||||
<&ov64a40_2>, "status=okay",
|
||||
<&ov64a40_2_vcm>, "status=okay",
|
||||
<&ov64a40_2>,"lens-focus:0=", <&ov64a40_2_vcm>;
|
||||
|
||||
cam3-arducam-64mp = <&mux_in3>, "remote-endpoint:0=",<&arducam_64mp_3_ep>,
|
||||
<&arducam_64mp_3_ep>, "remote-endpoint:0=",<&mux_in3>,
|
||||
<&mux_in3>, "clock-noncontinuous?",
|
||||
<&arducam_64mp_3>, "status=okay",
|
||||
<&arducam_64mp_3_vcm>, "status=okay",
|
||||
<&arducam_64mp_3>,"lens-focus:0=", <&arducam_64mp_3_vcm>;
|
||||
cam3-imx219 = <&mux_in3>, "remote-endpoint:0=",<&imx219_3_ep>,
|
||||
<&imx219_3_ep>, "remote-endpoint:0=",<&mux_in3>,
|
||||
<&mux_in3>, "clock-noncontinuous?",
|
||||
<&imx219_3>, "status=okay";
|
||||
cam3-imx477 = <&mux_in3>, "remote-endpoint:0=",<&imx477_3_ep>,
|
||||
<&imx477_3_ep>, "remote-endpoint:0=",<&mux_in3>,
|
||||
<&mux_in3>, "clock-noncontinuous?",
|
||||
<&imx477_3>, "status=okay";
|
||||
cam3-imx519 = <&mux_in3>, "remote-endpoint:0=",<&imx519_3_ep>,
|
||||
<&imx519_3_ep>, "remote-endpoint:0=",<&mux_in3>,
|
||||
<&mux_in3>, "clock-noncontinuous?",
|
||||
<&imx519_3>, "status=okay",
|
||||
<&imx519_3_vcm>, "status=okay",
|
||||
<&imx519_3>,"lens-focus:0=", <&imx519_3_vcm>;
|
||||
cam3-imx708 = <&mux_in3>, "remote-endpoint:0=",<&imx708_3_ep>,
|
||||
<&imx708_3_ep>, "remote-endpoint:0=",<&mux_in3>,
|
||||
<&mux_in3>, "clock-noncontinuous?",
|
||||
<&imx708_3>, "status=okay",
|
||||
<&imx708_3_vcm>, "status=okay",
|
||||
<&imx708_3>,"lens-focus:0=", <&imx708_3_vcm>;
|
||||
cam3-ov5647 = <&mux_in3>, "remote-endpoint:0=",<&ov5647_3_ep>,
|
||||
<&ov5647_3_ep>, "remote-endpoint:0=",<&mux_in3>,
|
||||
<&mux_in3>, "clock-noncontinuous?",
|
||||
<&ov5647_3>, "status=okay";
|
||||
cam3-ov7251 = <&mux_in3>, "remote-endpoint:0=",<&ov7251_3_ep>,
|
||||
<&ov7251_3_ep>, "remote-endpoint:0=",<&mux_in3>,
|
||||
<&ov7251_3>, "status=okay",
|
||||
<0>,"+106-107";
|
||||
cam3-ov9281 = <&mux_in3>, "remote-endpoint:0=",<&ov9281_3_ep>,
|
||||
<&ov9281_3_ep>, "remote-endpoint:0=",<&mux_in3>,
|
||||
<&ov9281_3>, "status=okay";
|
||||
cam3-imx258 = <&mux_in3>, "remote-endpoint:0=",<&imx258_3_ep>,
|
||||
<&imx258_3_ep>, "remote-endpoint:0=",<&mux_in3>,
|
||||
<&imx258_3>, "status=okay";
|
||||
cam3-imx290 = <&mux_in3>, "remote-endpoint:0=",<&imx290_3_ep>,
|
||||
<&imx290_3_ep>, "remote-endpoint:0=",<&mux_in3>,
|
||||
<&imx290_3>, "status=okay";
|
||||
cam3-ov2311 = <&mux_in3>, "remote-endpoint:0=",<&ov2311_3_ep>,
|
||||
<&ov2311_3_ep>, "remote-endpoint:0=",<&mux_in3>,
|
||||
<&ov2311_3>, "status=okay";
|
||||
cam3-ov64a40 = <&mux_in3>, "remote-endpoint:0=",<&ov64a40_3_ep>,
|
||||
<&ov64a40_3_ep>, "remote-endpoint:0=",<&mux_in3>,
|
||||
<&mux_in3>, "clock-noncontinuous?",
|
||||
<&ov64a40_3>, "status=okay",
|
||||
<&ov64a40_3_vcm>, "status=okay",
|
||||
<&ov64a40_3>,"lens-focus:0=", <&ov64a40_3_vcm>;
|
||||
|
||||
cam0-imx290-clk-freq = <&clk_imx290>,"clock-frequency:0",
|
||||
<&imx290_0>,"clock-frequency:0";
|
||||
cam1-imx290-clk-freq = <&clk_imx290>,"clock-frequency:0",
|
||||
<&imx290_1>,"clock-frequency:0";
|
||||
cam2-imx290-clk-freq = <&clk_imx290>,"clock-frequency:0",
|
||||
<&imx290_2>,"clock-frequency:0";
|
||||
cam3-imx290-clk-freq = <&clk_imx290>,"clock-frequency:0",
|
||||
<&imx290_3>,"clock-frequency:0";
|
||||
|
||||
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
|
||||
<&csi_frag>, "target:0=",<&csi0>;
|
||||
|
||||
cam0-sync-source = <&imx477_0>, "trigger-mode:0=1";
|
||||
cam0-sync-sink = <&imx477_0>, "trigger-mode:0=2";
|
||||
cam1-sync-source = <&imx477_1>, "trigger-mode:0=1";
|
||||
cam1-sync-sink = <&imx477_1>, "trigger-mode:0=2";
|
||||
cam2-sync-source = <&imx477_2>, "trigger-mode:0=1";
|
||||
cam2-sync-sink = <&imx477_2>, "trigger-mode:0=2";
|
||||
cam3-sync-source = <&imx477_3>, "trigger-mode:0=1";
|
||||
cam3-sync-sink = <&imx477_3>, "trigger-mode:0=2";
|
||||
};
|
||||
};
|
||||
52
arch/arm/boot/dts/overlays/cap1106-overlay.dts
Normal file
52
arch/arm/boot/dts/overlays/cap1106-overlay.dts
Normal file
@@ -0,0 +1,52 @@
|
||||
// Overlay for cap1106 from Microchip Semiconductor
|
||||
// add CONFIG_KEYBOARD_CAP11XX=y
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
fragment@0 {
|
||||
target = <&i2c1>;
|
||||
__overlay__{
|
||||
status = "okay";
|
||||
cap1106: cap1106@28 {
|
||||
compatible = "microchip,cap1106";
|
||||
pinctrl-0 = <&cap1106_pins>;
|
||||
pinctrl-names = "default";
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <4 2>;
|
||||
reg = <0x28>;
|
||||
autorepeat;
|
||||
microchip,sensor-gain = <2>;
|
||||
|
||||
linux,keycodes = <2>, /* KEY_1 */
|
||||
<3>, /* KEY_2 */
|
||||
<4>, /* KEY_3 */
|
||||
<5>, /* KEY_4 */
|
||||
<6>, /* KEY_5 */
|
||||
<7>; /* KEY_6 */
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
fragment@1 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
cap1106_pins: cap1106_pins {
|
||||
brcm,pins = <4>;
|
||||
brcm,function = <0>; /* in */
|
||||
brcm,pull = <0>; /* none */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
int_pin = <&cap1106>, "interrupts:0",
|
||||
<&cap1106_pins>, "brcm,pins:0";
|
||||
};
|
||||
};
|
||||
66
arch/arm/boot/dts/overlays/chipcap2-overlay.dts
Normal file
66
arch/arm/boot/dts/overlays/chipcap2-overlay.dts
Normal file
@@ -0,0 +1,66 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/* Overlay for ChipCap 2 on i2c */
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
chipcap2: chipcap2@28 {
|
||||
compatible = "amphenol,cc2d23s";
|
||||
reg = <0x28>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <4 IRQ_TYPE_EDGE_RISING>,
|
||||
<5 IRQ_TYPE_EDGE_RISING>,
|
||||
<6 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "ready", "low", "high";
|
||||
vdd-supply = <&chipcap2_reg>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
chipcap2_pins: chipcap2_pins {
|
||||
brcm,pins = <4 5 6 26>;
|
||||
brcm,function = <0 0 0 1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
chipcap2_reg: chipcap2_reg {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "chipcap2_reg";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio 26 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
ready_pin = <&chipcap2>, "interrupts:0",
|
||||
<&chipcap2_pins>, "brcm,pins:0";
|
||||
low_pin = <&chipcap2>, "interrupts:8",
|
||||
<&chipcap2_pins>, "brcm,pins:4";
|
||||
high_pin = <&chipcap2>, "interrupts:16",
|
||||
<&chipcap2_pins>, "brcm,pins:8";
|
||||
reg_pin = <&chipcap2_reg>, "gpio:4",
|
||||
<&chipcap2_pins>, "brcm,pins:12";
|
||||
};
|
||||
};
|
||||
46
arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts
Normal file
46
arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Device Tree overlay for ChipDip DAC
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_consumer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
spdif-transmitter {
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "linux,spdif-dit";
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "chipdip,chipdip-dac";
|
||||
i2s-controller = <&i2s_clk_consumer>;
|
||||
sr0-gpios = <&gpio 5 0>;
|
||||
sr1-gpios = <&gpio 6 0>;
|
||||
sr2-gpios = <&gpio 12 0>;
|
||||
res0-gpios = <&gpio 24 0>;
|
||||
res1-gpios = <&gpio 27 0>;
|
||||
mute-gpios = <&gpio 4 0>;
|
||||
sdwn-gpios = <&gpio 13 0>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
172
arch/arm/boot/dts/overlays/cirrus-wm5102-overlay.dts
Normal file
172
arch/arm/boot/dts/overlays/cirrus-wm5102-overlay.dts
Normal file
@@ -0,0 +1,172 @@
|
||||
// Definitions for the Cirrus Logic Audio Card
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
#include <dt-bindings/pinctrl/bcm2835.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/mfd/arizona.h>
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_consumer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
wlf_5102_pins: wlf_5102_pins {
|
||||
brcm,pins = <17 22 27>;
|
||||
brcm,function = <
|
||||
BCM2835_FSEL_GPIO_OUT
|
||||
BCM2835_FSEL_GPIO_OUT
|
||||
BCM2835_FSEL_GPIO_IN
|
||||
>;
|
||||
};
|
||||
wlf_8804_pins: wlf_8804_pins {
|
||||
brcm,pins = <8>;
|
||||
brcm,function = <BCM2835_FSEL_GPIO_OUT>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&spi0_cs_pins>;
|
||||
__overlay__ {
|
||||
brcm,pins = <7>;
|
||||
brcm,function = <BCM2835_FSEL_GPIO_OUT>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
fragment@3 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
rpi_cirrus_reg_1v8: rpi_cirrus_reg_1v8 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "RPi-Cirrus 1v8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&spidev0>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@5 {
|
||||
target = <&spidev1>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@6 {
|
||||
target = <&spi0>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
cs-gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
|
||||
|
||||
wm5102@0{
|
||||
compatible = "wlf,wm5102";
|
||||
reg = <0>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&wlf_5102_pins>;
|
||||
|
||||
spi-max-frequency = <500000>;
|
||||
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <27 8>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
LDOVDD-supply = <&rpi_cirrus_reg_1v8>;
|
||||
AVDD-supply = <&rpi_cirrus_reg_1v8>;
|
||||
DBVDD1-supply = <&rpi_cirrus_reg_1v8>;
|
||||
DBVDD2-supply = <&vdd_3v3_reg>;
|
||||
DBVDD3-supply = <&vdd_3v3_reg>;
|
||||
CPVDD-supply = <&rpi_cirrus_reg_1v8>;
|
||||
SPKVDDL-supply = <&vdd_5v0_reg>;
|
||||
SPKVDDR-supply = <&vdd_5v0_reg>;
|
||||
DCVDD-supply = <&arizona_ldo1>;
|
||||
|
||||
reset-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
|
||||
wlf,ldoena = <&gpio 22 GPIO_ACTIVE_HIGH>;
|
||||
wlf,gpio-defaults = <
|
||||
ARIZONA_GP_DEFAULT
|
||||
ARIZONA_GP_DEFAULT
|
||||
ARIZONA_GP_DEFAULT
|
||||
ARIZONA_GP_DEFAULT
|
||||
ARIZONA_GP_DEFAULT
|
||||
>;
|
||||
wlf,micd-configs = <0 1 0>;
|
||||
wlf,dmic-ref = <
|
||||
ARIZONA_DMIC_MICVDD
|
||||
ARIZONA_DMIC_MICBIAS2
|
||||
ARIZONA_DMIC_MICVDD
|
||||
ARIZONA_DMIC_MICVDD
|
||||
>;
|
||||
wlf,inmode = <
|
||||
ARIZONA_INMODE_DIFF
|
||||
ARIZONA_INMODE_DMIC
|
||||
ARIZONA_INMODE_SE
|
||||
ARIZONA_INMODE_DIFF
|
||||
>;
|
||||
status = "okay";
|
||||
|
||||
arizona_ldo1: ldo1 {
|
||||
regulator-name = "LDO1";
|
||||
// default constraints as in
|
||||
// arizona-ldo1.c
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@7 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
wm8804@3b {
|
||||
compatible = "wlf,wm8804";
|
||||
reg = <0x3b>;
|
||||
status = "okay";
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&wlf_8804_pins>;
|
||||
|
||||
PVDD-supply = <&vdd_3v3_reg>;
|
||||
DVDD-supply = <&vdd_3v3_reg>;
|
||||
wlf,reset-gpio = <&gpio 8 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@8 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "wlf,rpi-cirrus";
|
||||
i2s-controller = <&i2s_clk_consumer>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
27
arch/arm/boot/dts/overlays/cm-swap-i2c0-overlay.dts
Normal file
27
arch/arm/boot/dts/overlays/cm-swap-i2c0-overlay.dts
Normal file
@@ -0,0 +1,27 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
// Definitions for IMX708 camera module on VC I2C bus
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2c0mux>;
|
||||
i2c0mux_frag: __overlay__ {
|
||||
pinctrl-0 = <&i2c0_gpio28>;
|
||||
pinctrl-1 = <&i2c0_gpio0>;
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
i2c0-gpio0 = <&i2c0mux_frag>, "pinctrl-0:0=",<&i2c0_gpio0>;
|
||||
i2c0-gpio28 = <&i2c0mux_frag>, "pinctrl-0:0=",<&i2c0_gpio28>;
|
||||
i2c0-gpio44 = <&i2c0mux_frag>, "pinctrl-0:0=",<&i2c0_gpio44>;
|
||||
i2c10-gpio0 = <&i2c0mux_frag>, "pinctrl-1:0=",<&i2c0_gpio0>;
|
||||
i2c10-gpio28 = <&i2c0mux_frag>, "pinctrl-1:0=",<&i2c0_gpio28>;
|
||||
i2c10-gpio44 = <&i2c0mux_frag>, "pinctrl-1:0=",<&i2c0_gpio44>;
|
||||
};
|
||||
};
|
||||
36
arch/arm/boot/dts/overlays/cma-overlay.dts
Normal file
36
arch/arm/boot/dts/overlays/cma-overlay.dts
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* cma.dts
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&cma>;
|
||||
frag0: __overlay__ {
|
||||
/*
|
||||
* The default size when using this overlay is 256 MB
|
||||
* and should be kept as is for backwards
|
||||
* compatibility.
|
||||
*/
|
||||
size = <0x10000000>;
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
cma-512 = <&frag0>,"size:0=",<0x20000000>;
|
||||
cma-448 = <&frag0>,"size:0=",<0x1c000000>;
|
||||
cma-384 = <&frag0>,"size:0=",<0x18000000>;
|
||||
cma-320 = <&frag0>,"size:0=",<0x14000000>;
|
||||
cma-256 = <&frag0>,"size:0=",<0x10000000>;
|
||||
cma-192 = <&frag0>,"size:0=",<0xC000000>;
|
||||
cma-128 = <&frag0>,"size:0=",<0x8000000>;
|
||||
cma-96 = <&frag0>,"size:0=",<0x6000000>;
|
||||
cma-64 = <&frag0>,"size:0=",<0x4000000>;
|
||||
cma-size = <&frag0>,"size:0"; /* in bytes, 4MB aligned */
|
||||
cma-default = <0>,"-0";
|
||||
};
|
||||
};
|
||||
131
arch/arm/boot/dts/overlays/crystalfontz-cfa050_pi_m-overlay.dts
Normal file
131
arch/arm/boot/dts/overlays/crystalfontz-cfa050_pi_m-overlay.dts
Normal file
@@ -0,0 +1,131 @@
|
||||
/*
|
||||
* crystalfontz-cfa050_pi_m-overlay.dts
|
||||
* Configures the Crystalfontz CFA050-PI-M series of modules
|
||||
* using CFAF7201280A0-050TC/TN panels with RaspberryPi CM4 DSI1
|
||||
*/
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
/{
|
||||
// RaspberryPi CM4
|
||||
compatible = "brcm,bcm2835";
|
||||
// PCF8574 I2C GPIO EXPANDER
|
||||
frag0: fragment@0 {
|
||||
target = <&i2c_csi_dsi>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
pcf8574a: pcf8574a@38 {
|
||||
reg = <0x38>;
|
||||
compatible = "nxp,pcf8574";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
ngpios = <8>;
|
||||
gpio-line-names = "TFT_RESET", "TOUCH_RESET", "EXT_P2", "EXT_P3",
|
||||
"EXT_P4", "EXT_P5", "EXT_P6", "EXT_P7";
|
||||
};
|
||||
};
|
||||
};
|
||||
// LM3630a BACKLIGHT LED CONTROLLER
|
||||
frag1: fragment@1 {
|
||||
target = <&i2c_csi_dsi>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
lm3630a: backlight@36 {
|
||||
reg = <0x36>;
|
||||
compatible = "ti,lm3630a";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
led@0 {
|
||||
reg = <0>;
|
||||
led-sources = <0 1>;
|
||||
label = "lcd-backlight";
|
||||
default-brightness = <255>;
|
||||
max-brightness = <255>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
// PCF85063A RTC on I2C
|
||||
frag2: fragment@2 {
|
||||
target = <&i2c_csi_dsi>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
pcf85063a@51 {
|
||||
compatible = "nxp,pcf85063a";
|
||||
reg = <0x51>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
// CFAF7201280A0_050Tx TFT DSI PANEL
|
||||
fragment@3 {
|
||||
target = <&dsi1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
port {
|
||||
dsi_out: endpoint {
|
||||
remote-endpoint = <&panel_in>;
|
||||
};
|
||||
};
|
||||
dsi_panel: dsi_panel@0 {
|
||||
compatible = "crystalfontz,cfaf7201280a0_050tx";
|
||||
reg = <0>;
|
||||
reset-gpios = <&pcf8574a 0 1>;
|
||||
backlight = <&lm3630a>;
|
||||
fps = <60>;
|
||||
port {
|
||||
panel_in: endpoint {
|
||||
remote-endpoint = <&dsi_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
// rPI GPIO INPUT FOR TOUCH IC IRQ
|
||||
fragment@4 {
|
||||
target = <&gpio>;
|
||||
__dormant__ {
|
||||
gt928intpins: gt928intpins {
|
||||
brcm,pins = <26>; //gpio pin
|
||||
brcm,function = <0>; //input
|
||||
brcm,pull = <2>; //2=pull-up
|
||||
};
|
||||
};
|
||||
};
|
||||
// GT928 TOUCH CONTROLLER IC
|
||||
frag5: fragment@5 {
|
||||
target = <&i2c_csi_dsi>;
|
||||
__dormant__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
gt928: gt928@5d {
|
||||
compatible = "goodix,gt928";
|
||||
reg = <0x5d>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <26 2>; //gpio 26, 2=high-to-low trigger
|
||||
irq-gpios = <&gpio 26 0>; //gpio 26, 0=active-high
|
||||
reset-gpios = <&pcf8574a 1 1>;
|
||||
touchscreen-inverted-x;
|
||||
touchscreen-inverted-y;
|
||||
};
|
||||
};
|
||||
};
|
||||
//OVERLAY OPTIONS
|
||||
__overrides__ {
|
||||
//enables captouch
|
||||
captouch = <0>,"+4+5";
|
||||
//changes options to support CM5 (default is CM4)
|
||||
cm5 = <&frag0>, "target:0=",<&i2c_csi_dsi0>,
|
||||
<&frag1>, "target:0=",<&i2c_csi_dsi0>,
|
||||
<&frag2>, "target:0=",<&i2c_csi_dsi0>,
|
||||
<&frag5>, "target:0=",<&i2c_csi_dsi0>;
|
||||
};
|
||||
};
|
||||
117
arch/arm/boot/dts/overlays/cutiepi-panel-overlay.dts
Normal file
117
arch/arm/boot/dts/overlays/cutiepi-panel-overlay.dts
Normal file
@@ -0,0 +1,117 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2711";
|
||||
|
||||
fragment@0 {
|
||||
target=<&dsi1>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port {
|
||||
dsi1_out_port: endpoint {
|
||||
remote-endpoint = <&panel_dsi_in1>;
|
||||
};
|
||||
};
|
||||
|
||||
display1: panel@0 {
|
||||
compatible = "nwe,nwe080";
|
||||
reg=<0>;
|
||||
backlight = <&rpi_backlight>;
|
||||
reset-gpios = <&gpio 20 0>;
|
||||
port {
|
||||
panel_dsi_in1: endpoint {
|
||||
remote-endpoint = <&dsi1_out_port>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
pwm_pins: pwm_pins {
|
||||
brcm,pins = <12>;
|
||||
brcm,function = <4>; // ALT0
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&pwm>;
|
||||
frag1: __overlay__ {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm_pins>;
|
||||
assigned-clock-rates = <1000000>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
rpi_backlight: rpi_backlight {
|
||||
compatible = "pwm-backlight";
|
||||
brightness-levels = <0 6 8 12 16 24 32 40 48 64 96 128 160 192 224 255>;
|
||||
default-brightness-level = <6>;
|
||||
pwms = <&pwm 0 200000 0>;
|
||||
power-supply = <&vdd_3v3_reg>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&i2c6>;
|
||||
frag0: __overlay__ {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c6_pins>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@5 {
|
||||
target = <&i2c6_pins>;
|
||||
__overlay__ {
|
||||
brcm,pins = <22 23>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@6 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
goodix_pins: goodix_pins {
|
||||
brcm,pins = <21 26>; // interrupt and reset
|
||||
brcm,function = <0 0>; // in
|
||||
brcm,pull = <2 2>; // pull-up
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@7 {
|
||||
target = <&i2c6>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
gt9xx: gt9xx@5d {
|
||||
compatible = "goodix,gt9271";
|
||||
reg = <0x5D>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&goodix_pins>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <21 2>; // high-to-low edge triggered
|
||||
irq-gpios = <&gpio 21 0>;
|
||||
reset-gpios = <&gpio 26 0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
71
arch/arm/boot/dts/overlays/dacberry400-overlay.dts
Normal file
71
arch/arm/boot/dts/overlays/dacberry400-overlay.dts
Normal file
@@ -0,0 +1,71 @@
|
||||
// Definitions for DACberry400
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
codec_1v8_reg: codec-1v8-reg {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "tlv320aic3104_1v8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
codec_rst: codec-rst {
|
||||
brcm,pins = <26>;
|
||||
brcm,function = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
tlv320aic3104@18 {
|
||||
#sound-dai-cells = <0>;
|
||||
reg = <0x18>;
|
||||
|
||||
compatible = "ti,tlv320aic3x";
|
||||
AVDD-supply = <&vdd_3v3_reg>;
|
||||
DRVDD-supply = <&vdd_3v3_reg>;
|
||||
DVDD-supply = <&codec_1v8_reg>;
|
||||
IOVDD-supply = <&codec_1v8_reg>;
|
||||
|
||||
gpio-controller;
|
||||
reset-gpios = <&gpio 26 1>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "osaelectronics,dacberry400";
|
||||
i2s-controller = <&i2s_clk_producer>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
48
arch/arm/boot/dts/overlays/dht11-overlay.dts
Normal file
48
arch/arm/boot/dts/overlays/dht11-overlay.dts
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Overlay for the DHT11/21/22 humidity/temperature sensor modules.
|
||||
*/
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
dht11: dht11@4 {
|
||||
compatible = "dht11";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dht11_pins>;
|
||||
gpios = <&gpio 4 0>;
|
||||
status = "okay";
|
||||
#io-channel-cells = <1>;
|
||||
};
|
||||
|
||||
iio: iio-hwmon@4 {
|
||||
compatible = "iio-hwmon";
|
||||
status = "okay";
|
||||
io-channels = <&dht11 0>, <&dht11 1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
dht11_pins: dht11_pins@4 {
|
||||
brcm,pins = <4>;
|
||||
brcm,function = <0>; // in
|
||||
brcm,pull = <0>; // off
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
gpiopin = <&dht11_pins>,"brcm,pins:0",
|
||||
<&dht11_pins>, "reg:0",
|
||||
<&dht11>,"gpios:4",
|
||||
<&dht11>,"reg:0",
|
||||
<&iio>,"reg:0";
|
||||
};
|
||||
};
|
||||
39
arch/arm/boot/dts/overlays/dionaudio-kiwi-overlay.dts
Normal file
39
arch/arm/boot/dts/overlays/dionaudio-kiwi-overlay.dts
Normal file
@@ -0,0 +1,39 @@
|
||||
// Definitions for Dion Audio KIWI streamer
|
||||
|
||||
/*
|
||||
* PCM1794 DAC (in hardware mode).
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
pcm1794a-codec {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "ti,pcm1794a";
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "dionaudio,dionaudio-kiwi";
|
||||
i2s-controller = <&i2s_clk_producer>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
39
arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
Normal file
39
arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
Normal file
@@ -0,0 +1,39 @@
|
||||
// Definitions for Dion Audio LOCO DAC-AMP
|
||||
|
||||
/*
|
||||
* PCM5242 DAC (in hardware mode) and TPA3118 AMP.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
pcm5102a-codec {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "ti,pcm5102a";
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "dionaudio,loco-pcm5242-tpa3118";
|
||||
i2s-controller = <&i2s_clk_producer>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
49
arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts
Normal file
49
arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Definitions for Dion Audio LOCO-V2 DAC-AMP
|
||||
* eg. dtoverlay=dionaudio-loco-v2
|
||||
*
|
||||
* PCM5242 DAC (in software mode) and TPA3255 AMP.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&sound>;
|
||||
frag0: __overlay__ {
|
||||
compatible = "dionaudio,dionaudio-loco-v2";
|
||||
i2s-controller = <&i2s_clk_producer>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&i2c1>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
pcm5122@4c {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "ti,pcm5122";
|
||||
reg = <0x4d>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
24db_digital_gain = <&frag0>,"dionaudio,24db_digital_gain?";
|
||||
};
|
||||
};
|
||||
59
arch/arm/boot/dts/overlays/disable-bt-overlay.dts
Normal file
59
arch/arm/boot/dts/overlays/disable-bt-overlay.dts
Normal file
@@ -0,0 +1,59 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/* Disable Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15. */
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&uart1>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&uart0>;
|
||||
__overlay__ {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&bt>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&uart0_pins>;
|
||||
__overlay__ {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
brcm,pull;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&bt_pins>;
|
||||
__overlay__ {
|
||||
brcm,pins;
|
||||
brcm,function;
|
||||
brcm,pull;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@5 {
|
||||
target-path = "/aliases";
|
||||
__overlay__ {
|
||||
serial0 = "/soc/serial@7e201000";
|
||||
serial1 = "/soc/serial@7e215040";
|
||||
};
|
||||
};
|
||||
};
|
||||
17
arch/arm/boot/dts/overlays/disable-bt-pi5-overlay.dts
Normal file
17
arch/arm/boot/dts/overlays/disable-bt-pi5-overlay.dts
Normal file
@@ -0,0 +1,17 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/* Disable Bluetooth */
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2712";
|
||||
|
||||
fragment@0 {
|
||||
target = <&bluetooth>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
13
arch/arm/boot/dts/overlays/disable-emmc2-overlay.dts
Normal file
13
arch/arm/boot/dts/overlays/disable-emmc2-overlay.dts
Normal file
@@ -0,0 +1,13 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2711";
|
||||
|
||||
fragment@0 {
|
||||
target = <&emmc2>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
20
arch/arm/boot/dts/overlays/disable-wifi-overlay.dts
Normal file
20
arch/arm/boot/dts/overlays/disable-wifi-overlay.dts
Normal file
@@ -0,0 +1,20 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&mmc>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&mmcnr>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
13
arch/arm/boot/dts/overlays/disable-wifi-pi5-overlay.dts
Normal file
13
arch/arm/boot/dts/overlays/disable-wifi-pi5-overlay.dts
Normal file
@@ -0,0 +1,13 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2712";
|
||||
|
||||
fragment@0 {
|
||||
target = <&sdio2>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
39
arch/arm/boot/dts/overlays/dpi18-overlay.dts
Normal file
39
arch/arm/boot/dts/overlays/dpi18-overlay.dts
Normal file
@@ -0,0 +1,39 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
// There is no DPI driver module, but we need a platform device
|
||||
// node (that doesn't already use pinctrl) to hang the pinctrl
|
||||
// reference on - leds will do
|
||||
|
||||
fragment@0 {
|
||||
target = <&fb>;
|
||||
__overlay__ {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dpi18_pins>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&vc4>;
|
||||
__overlay__ {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dpi18_pins>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
dpi18_pins: dpi18_pins {
|
||||
brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
|
||||
12 13 14 15 16 17 18 19 20
|
||||
21>;
|
||||
brcm,function = <6>; /* alt2 */
|
||||
brcm,pull = <0>; /* no pull */
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
26
arch/arm/boot/dts/overlays/dpi18cpadhi-overlay.dts
Normal file
26
arch/arm/boot/dts/overlays/dpi18cpadhi-overlay.dts
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* dpi18cpadhi-overlay.dts
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&fb>;
|
||||
__overlay__ {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dpi_18bit_cpadhi_gpio0>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&vc4>;
|
||||
__overlay__ {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dpi_18bit_cpadhi_gpio0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
39
arch/arm/boot/dts/overlays/dpi24-overlay.dts
Normal file
39
arch/arm/boot/dts/overlays/dpi24-overlay.dts
Normal file
@@ -0,0 +1,39 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/{
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
// There is no DPI driver module, but we need a platform device
|
||||
// node (that doesn't already use pinctrl) to hang the pinctrl
|
||||
// reference on - leds will do
|
||||
|
||||
fragment@0 {
|
||||
target = <&fb>;
|
||||
__overlay__ {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dpi24_pins>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&vc4>;
|
||||
__overlay__ {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dpi24_pins>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
dpi24_pins: dpi24_pins {
|
||||
brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
|
||||
12 13 14 15 16 17 18 19 20
|
||||
21 22 23 24 25 26 27>;
|
||||
brcm,function = <6>; /* alt2 */
|
||||
brcm,pull = <0>; /* no pull */
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
208
arch/arm/boot/dts/overlays/draws-overlay.dts
Normal file
208
arch/arm/boot/dts/overlays/draws-overlay.dts
Normal file
@@ -0,0 +1,208 @@
|
||||
#include <dt-bindings/clock/bcm2835.h>
|
||||
/*
|
||||
* Device tree overlay for the DRAWS Hardware
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
fragment@0 {
|
||||
target = <&i2s_clk_producer>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
regulators {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
udrc0_ldoin: udrc0_ldoin {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "ldoin";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
sc16is752_clk: sc16is752_draws_clk {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <1843200>;
|
||||
};
|
||||
};
|
||||
|
||||
pps: pps {
|
||||
compatible = "pps-gpio";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pps_pins>;
|
||||
gpios = <&gpio 7 0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
iio-hwmon {
|
||||
compatible = "iio-hwmon";
|
||||
status = "okay";
|
||||
io-channels = <&tla2024 4>, <&tla2024 5>, <&tla2024 6>,
|
||||
<&tla2024 7>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&i2c_arm>;
|
||||
__overlay__ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
tlv320aic32x4: tlv320aic32x4@18 {
|
||||
compatible = "ti,tlv320aic32x4";
|
||||
reg = <0x18>;
|
||||
#sound-dai-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
clocks = <&clocks BCM2835_CLOCK_GP0>;
|
||||
clock-names = "mclk";
|
||||
assigned-clocks = <&clocks BCM2835_CLOCK_GP0>;
|
||||
assigned-clock-rates = <25000000>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gpclk0_pin &aic3204_reset>;
|
||||
|
||||
reset-gpios = <&gpio 13 0>;
|
||||
|
||||
iov-supply = <&udrc0_ldoin>;
|
||||
ldoin-supply = <&udrc0_ldoin>;
|
||||
};
|
||||
|
||||
sc16is752: sc16is752@50 {
|
||||
compatible = "nxp,sc16is752";
|
||||
reg = <0x50>;
|
||||
clocks = <&sc16is752_clk>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <17 2>; /* IRQ_TYPE_EDGE_FALLING */
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sc16is752_irq>;
|
||||
};
|
||||
|
||||
tla2024: tla2024@48 {
|
||||
compatible = "ti,ads1015";
|
||||
reg = <0x48>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#io-channel-cells = <1>;
|
||||
|
||||
adc_ch4: channel@4 {
|
||||
reg = <4>;
|
||||
ti,gain = <1>;
|
||||
ti,datarate = <4>;
|
||||
};
|
||||
|
||||
adc_ch5: channel@5 {
|
||||
reg = <5>;
|
||||
ti,gain = <1>;
|
||||
ti,datarate = <4>;
|
||||
};
|
||||
|
||||
adc_ch6: channel@6 {
|
||||
reg = <6>;
|
||||
ti,gain = <2>;
|
||||
ti,datarate = <4>;
|
||||
};
|
||||
|
||||
adc_ch7: channel@7 {
|
||||
reg = <7>;
|
||||
ti,gain = <2>;
|
||||
ti,datarate = <4>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&sound>;
|
||||
snd: __overlay__ {
|
||||
compatible = "simple-audio-card";
|
||||
i2s-controller = <&i2s_clk_producer>;
|
||||
status = "okay";
|
||||
|
||||
simple-audio-card,name = "draws";
|
||||
simple-audio-card,format = "i2s";
|
||||
|
||||
simple-audio-card,bitclock-master = <&dailink0_master>;
|
||||
simple-audio-card,frame-master = <&dailink0_master>;
|
||||
|
||||
simple-audio-card,widgets =
|
||||
"Line", "Line In",
|
||||
"Line", "Line Out";
|
||||
|
||||
simple-audio-card,routing =
|
||||
"IN1_R", "Line In",
|
||||
"IN1_L", "Line In",
|
||||
"CM_L", "Line In",
|
||||
"CM_R", "Line In",
|
||||
"Line Out", "LOR",
|
||||
"Line Out", "LOL";
|
||||
|
||||
dailink0_master: simple-audio-card,cpu {
|
||||
sound-dai = <&i2s_clk_producer>;
|
||||
};
|
||||
|
||||
simple-audio-card,codec {
|
||||
sound-dai = <&tlv320aic32x4>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
gpclk0_pin: gpclk0_pin {
|
||||
brcm,pins = <4>;
|
||||
brcm,function = <4>;
|
||||
};
|
||||
|
||||
aic3204_reset: aic3204_reset {
|
||||
brcm,pins = <13>;
|
||||
brcm,function = <1>;
|
||||
brcm,pull = <1>;
|
||||
};
|
||||
|
||||
aic3204_gpio: aic3204_gpio {
|
||||
brcm,pins = <26>;
|
||||
};
|
||||
|
||||
sc16is752_irq: sc16is752_irq {
|
||||
brcm,pins = <17>;
|
||||
brcm,function = <0>;
|
||||
brcm,pull = <2>;
|
||||
};
|
||||
|
||||
pps_pins: pps_pins {
|
||||
brcm,pins = <7>;
|
||||
brcm,function = <0>;
|
||||
brcm,pull = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
__overrides__ {
|
||||
draws_adc_ch4_gain = <&adc_ch4>,"ti,gain:0";
|
||||
draws_adc_ch4_datarate = <&adc_ch4>,"ti,datarate:0";
|
||||
draws_adc_ch5_gain = <&adc_ch5>,"ti,gain:0";
|
||||
draws_adc_ch5_datarate = <&adc_ch5>,"ti,datarate:0";
|
||||
draws_adc_ch6_gain = <&adc_ch6>,"ti,gain:0";
|
||||
draws_adc_ch6_datarate = <&adc_ch6>,"ti,datarate:0";
|
||||
draws_adc_ch7_gain = <&adc_ch7>,"ti,gain:0";
|
||||
draws_adc_ch7_datarate = <&adc_ch7>,"ti,datarate:0";
|
||||
alsaname = <&snd>, "simple-audio-card,name";
|
||||
};
|
||||
};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user