497 lines
8.8 KiB
Plaintext
497 lines
8.8 KiB
Plaintext
|
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||
|
/*
|
||
|
* Device Tree Source for the R-Car V4M Gray Hawk Single board
|
||
|
*
|
||
|
* Copyright (C) 2023 Renesas Electronics Corp.
|
||
|
* Copyright (C) 2024 Glider bv
|
||
|
*/
|
||
|
/*
|
||
|
* [How to use Sound]
|
||
|
*
|
||
|
* Because R-Car V4M has only 1 SSI, it cannot handle both Playback/Capture
|
||
|
* at the same time. You need to switch the direction which is controlled
|
||
|
* by the GP0_01 pin via amixer.
|
||
|
*
|
||
|
* Playback (CN9500)
|
||
|
* > amixer set "MUX" "Playback" // for GP0_01
|
||
|
* > amixer set "DAC 1" 85%
|
||
|
* > aplay xxx.wav
|
||
|
*
|
||
|
* Capture (CN9501)
|
||
|
* > amixer set "MUX" "Capture" // for GP0_01
|
||
|
* > amixer set "Mic 1" 80%
|
||
|
* > amixer set "ADC 1" on
|
||
|
* > amixer set 'ADC 1' 80%
|
||
|
* > arecord xxx hoge.wav
|
||
|
*/
|
||
|
|
||
|
/dts-v1/;
|
||
|
|
||
|
#include <dt-bindings/gpio/gpio.h>
|
||
|
#include <dt-bindings/input/input.h>
|
||
|
#include <dt-bindings/leds/common.h>
|
||
|
|
||
|
#include "r8a779h0.dtsi"
|
||
|
|
||
|
/ {
|
||
|
model = "Renesas Gray Hawk Single board based on r8a779h0";
|
||
|
compatible = "renesas,gray-hawk-single", "renesas,r8a779h0";
|
||
|
|
||
|
aliases {
|
||
|
i2c0 = &i2c0;
|
||
|
i2c1 = &i2c1;
|
||
|
i2c2 = &i2c2;
|
||
|
i2c3 = &i2c3;
|
||
|
serial0 = &hscif0;
|
||
|
serial1 = &hscif2;
|
||
|
ethernet0 = &avb0;
|
||
|
};
|
||
|
|
||
|
can_transceiver0: can-phy0 {
|
||
|
compatible = "nxp,tjr1443";
|
||
|
#phy-cells = <0>;
|
||
|
enable-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
|
||
|
max-bitrate = <5000000>;
|
||
|
};
|
||
|
|
||
|
chosen {
|
||
|
bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
|
||
|
stdout-path = "serial0:921600n8";
|
||
|
};
|
||
|
|
||
|
keys {
|
||
|
compatible = "gpio-keys";
|
||
|
|
||
|
pinctrl-0 = <&keys_pins>;
|
||
|
pinctrl-names = "default";
|
||
|
|
||
|
key-1 {
|
||
|
gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
|
||
|
linux,code = <KEY_1>;
|
||
|
label = "SW47";
|
||
|
wakeup-source;
|
||
|
debounce-interval = <20>;
|
||
|
};
|
||
|
|
||
|
key-2 {
|
||
|
gpios = <&gpio5 1 GPIO_ACTIVE_LOW>;
|
||
|
linux,code = <KEY_2>;
|
||
|
label = "SW48";
|
||
|
wakeup-source;
|
||
|
debounce-interval = <20>;
|
||
|
};
|
||
|
|
||
|
key-3 {
|
||
|
gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;
|
||
|
linux,code = <KEY_3>;
|
||
|
label = "SW49";
|
||
|
wakeup-source;
|
||
|
debounce-interval = <20>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
leds {
|
||
|
compatible = "gpio-leds";
|
||
|
|
||
|
led-1 {
|
||
|
gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
|
||
|
color = <LED_COLOR_ID_GREEN>;
|
||
|
function = LED_FUNCTION_INDICATOR;
|
||
|
function-enumerator = <1>;
|
||
|
};
|
||
|
|
||
|
led-2 {
|
||
|
gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
|
||
|
color = <LED_COLOR_ID_GREEN>;
|
||
|
function = LED_FUNCTION_INDICATOR;
|
||
|
function-enumerator = <2>;
|
||
|
};
|
||
|
|
||
|
led-3 {
|
||
|
gpios = <&gpio7 2 GPIO_ACTIVE_HIGH>;
|
||
|
color = <LED_COLOR_ID_GREEN>;
|
||
|
function = LED_FUNCTION_INDICATOR;
|
||
|
function-enumerator = <3>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
memory@48000000 {
|
||
|
device_type = "memory";
|
||
|
/* first 128MB is reserved for secure area. */
|
||
|
reg = <0x0 0x48000000 0x0 0x78000000>;
|
||
|
};
|
||
|
|
||
|
memory@480000000 {
|
||
|
device_type = "memory";
|
||
|
reg = <0x4 0x80000000 0x1 0x80000000>;
|
||
|
};
|
||
|
|
||
|
pcie_clk: clk-9fgv0841-pci {
|
||
|
compatible = "fixed-clock";
|
||
|
clock-frequency = <100000000>;
|
||
|
#clock-cells = <0>;
|
||
|
};
|
||
|
|
||
|
reg_1p8v: regulator-1p8v {
|
||
|
compatible = "regulator-fixed";
|
||
|
regulator-name = "fixed-1.8V";
|
||
|
regulator-min-microvolt = <1800000>;
|
||
|
regulator-max-microvolt = <1800000>;
|
||
|
regulator-boot-on;
|
||
|
regulator-always-on;
|
||
|
};
|
||
|
|
||
|
reg_3p3v: regulator-3p3v {
|
||
|
compatible = "regulator-fixed";
|
||
|
regulator-name = "fixed-3.3V";
|
||
|
regulator-min-microvolt = <3300000>;
|
||
|
regulator-max-microvolt = <3300000>;
|
||
|
regulator-boot-on;
|
||
|
regulator-always-on;
|
||
|
};
|
||
|
|
||
|
sound_mux: sound-mux {
|
||
|
compatible = "simple-audio-mux";
|
||
|
mux-gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
|
||
|
state-labels = "Playback", "Capture";
|
||
|
};
|
||
|
|
||
|
sound_card: sound {
|
||
|
compatible = "audio-graph-card2";
|
||
|
label = "rcar-sound";
|
||
|
aux-devs = <&sound_mux>; // for GP0_01
|
||
|
|
||
|
links = <&rsnd_port>; // AK4619 Audio Codec
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&audio_clkin {
|
||
|
clock-frequency = <24576000>;
|
||
|
};
|
||
|
|
||
|
&avb0 {
|
||
|
pinctrl-0 = <&avb0_pins>;
|
||
|
pinctrl-names = "default";
|
||
|
phy-handle = <&phy0>;
|
||
|
tx-internal-delay-ps = <2000>;
|
||
|
status = "okay";
|
||
|
|
||
|
phy0: ethernet-phy@0 {
|
||
|
compatible = "ethernet-phy-id0022.1622",
|
||
|
"ethernet-phy-ieee802.3-c22";
|
||
|
rxc-skew-ps = <1500>;
|
||
|
reg = <0>;
|
||
|
interrupts-extended = <&gpio7 5 IRQ_TYPE_LEVEL_LOW>;
|
||
|
reset-gpios = <&gpio7 10 GPIO_ACTIVE_LOW>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&can_clk {
|
||
|
clock-frequency = <40000000>;
|
||
|
};
|
||
|
|
||
|
&canfd {
|
||
|
pinctrl-0 = <&canfd0_pins>, <&canfd1_pins>, <&can_clk_pins>;
|
||
|
pinctrl-names = "default";
|
||
|
status = "okay";
|
||
|
|
||
|
channel0 {
|
||
|
status = "okay";
|
||
|
phys = <&can_transceiver0>;
|
||
|
};
|
||
|
|
||
|
channel1 {
|
||
|
status = "okay";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&extal_clk {
|
||
|
clock-frequency = <16666666>;
|
||
|
};
|
||
|
|
||
|
&extalr_clk {
|
||
|
clock-frequency = <32768>;
|
||
|
};
|
||
|
|
||
|
&gpio1 {
|
||
|
audio-power-hog {
|
||
|
gpio-hog;
|
||
|
gpios = <8 GPIO_ACTIVE_HIGH>;
|
||
|
output-high;
|
||
|
line-name = "Audio-Power";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&hscif0 {
|
||
|
pinctrl-0 = <&hscif0_pins>;
|
||
|
pinctrl-names = "default";
|
||
|
|
||
|
uart-has-rtscts;
|
||
|
status = "okay";
|
||
|
};
|
||
|
|
||
|
&hscif2 {
|
||
|
pinctrl-0 = <&hscif2_pins>;
|
||
|
pinctrl-names = "default";
|
||
|
|
||
|
uart-has-rtscts;
|
||
|
status = "okay";
|
||
|
};
|
||
|
|
||
|
&i2c0 {
|
||
|
pinctrl-0 = <&i2c0_pins>;
|
||
|
pinctrl-names = "default";
|
||
|
|
||
|
status = "okay";
|
||
|
clock-frequency = <400000>;
|
||
|
|
||
|
io_expander_a: gpio@20 {
|
||
|
compatible = "onnn,pca9654";
|
||
|
reg = <0x20>;
|
||
|
interrupts-extended = <&gpio0 0 IRQ_TYPE_LEVEL_LOW>;
|
||
|
gpio-controller;
|
||
|
#gpio-cells = <2>;
|
||
|
interrupt-controller;
|
||
|
#interrupt-cells = <2>;
|
||
|
};
|
||
|
|
||
|
eeprom@50 {
|
||
|
compatible = "rohm,br24g01", "atmel,24c01";
|
||
|
label = "cpu-board";
|
||
|
reg = <0x50>;
|
||
|
pagesize = <8>;
|
||
|
};
|
||
|
|
||
|
eeprom@51 {
|
||
|
compatible = "rohm,br24g01", "atmel,24c01";
|
||
|
label = "breakout-board";
|
||
|
reg = <0x51>;
|
||
|
pagesize = <8>;
|
||
|
};
|
||
|
|
||
|
eeprom@52 {
|
||
|
compatible = "rohm,br24g01", "atmel,24c01";
|
||
|
label = "csi-dsi-sub-board-id";
|
||
|
reg = <0x52>;
|
||
|
pagesize = <8>;
|
||
|
};
|
||
|
|
||
|
eeprom@53 {
|
||
|
compatible = "rohm,br24g01", "atmel,24c01";
|
||
|
label = "ethernet-sub-board-id";
|
||
|
reg = <0x53>;
|
||
|
pagesize = <8>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&i2c3 {
|
||
|
pinctrl-0 = <&i2c3_pins>;
|
||
|
pinctrl-names = "default";
|
||
|
|
||
|
status = "okay";
|
||
|
clock-frequency = <400000>;
|
||
|
|
||
|
codec@10 {
|
||
|
compatible = "asahi-kasei,ak4619";
|
||
|
reg = <0x10>;
|
||
|
|
||
|
clocks = <&rcar_sound>;
|
||
|
clock-names = "mclk";
|
||
|
|
||
|
#sound-dai-cells = <0>;
|
||
|
port {
|
||
|
ak4619_endpoint: endpoint {
|
||
|
remote-endpoint = <&rsnd_endpoint>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&mmc0 {
|
||
|
pinctrl-0 = <&mmc_pins>;
|
||
|
pinctrl-1 = <&mmc_pins>;
|
||
|
pinctrl-names = "default", "state_uhs";
|
||
|
|
||
|
vmmc-supply = <®_3p3v>;
|
||
|
vqmmc-supply = <®_1p8v>;
|
||
|
mmc-hs200-1_8v;
|
||
|
mmc-hs400-1_8v;
|
||
|
bus-width = <8>;
|
||
|
no-sd;
|
||
|
no-sdio;
|
||
|
non-removable;
|
||
|
full-pwr-cycle-in-suspend;
|
||
|
status = "okay";
|
||
|
};
|
||
|
|
||
|
&pcie0_clkref {
|
||
|
compatible = "gpio-gate-clock";
|
||
|
clocks = <&pcie_clk>;
|
||
|
enable-gpios = <&gpio4 21 GPIO_ACTIVE_LOW>;
|
||
|
/delete-property/ clock-frequency;
|
||
|
};
|
||
|
|
||
|
&pciec0 {
|
||
|
reset-gpios = <&io_expander_a 0 GPIO_ACTIVE_LOW>;
|
||
|
status = "okay";
|
||
|
};
|
||
|
|
||
|
&pfc {
|
||
|
pinctrl-0 = <&scif_clk_pins>, <&scif_clk2_pins>;
|
||
|
pinctrl-names = "default";
|
||
|
|
||
|
avb0_pins: avb0 {
|
||
|
mux {
|
||
|
groups = "avb0_link", "avb0_mdio", "avb0_rgmii",
|
||
|
"avb0_txcrefclk";
|
||
|
function = "avb0";
|
||
|
};
|
||
|
|
||
|
pins_mdio {
|
||
|
groups = "avb0_mdio";
|
||
|
drive-strength = <21>;
|
||
|
};
|
||
|
|
||
|
pins_mii {
|
||
|
groups = "avb0_rgmii";
|
||
|
drive-strength = <21>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
can_clk_pins: can-clk {
|
||
|
groups = "can_clk";
|
||
|
function = "can_clk";
|
||
|
};
|
||
|
|
||
|
canfd0_pins: canfd0 {
|
||
|
groups = "canfd0_data";
|
||
|
function = "canfd0";
|
||
|
};
|
||
|
|
||
|
canfd1_pins: canfd1 {
|
||
|
groups = "canfd1_data";
|
||
|
function = "canfd1";
|
||
|
};
|
||
|
|
||
|
hscif0_pins: hscif0 {
|
||
|
groups = "hscif0_data", "hscif0_ctrl";
|
||
|
function = "hscif0";
|
||
|
};
|
||
|
|
||
|
hscif2_pins: hscif2 {
|
||
|
groups = "hscif2_data", "hscif2_ctrl";
|
||
|
function = "hscif2";
|
||
|
};
|
||
|
|
||
|
i2c0_pins: i2c0 {
|
||
|
groups = "i2c0";
|
||
|
function = "i2c0";
|
||
|
};
|
||
|
|
||
|
i2c3_pins: i2c3 {
|
||
|
groups = "i2c3";
|
||
|
function = "i2c3";
|
||
|
};
|
||
|
|
||
|
keys_pins: keys {
|
||
|
pins = "GP_5_0", "GP_5_1", "GP_5_2";
|
||
|
bias-pull-up;
|
||
|
};
|
||
|
|
||
|
mmc_pins: mmc {
|
||
|
groups = "mmc_data8", "mmc_ctrl", "mmc_ds";
|
||
|
function = "mmc";
|
||
|
power-source = <1800>;
|
||
|
};
|
||
|
|
||
|
qspi0_pins: qspi0 {
|
||
|
groups = "qspi0_ctrl", "qspi0_data4";
|
||
|
function = "qspi0";
|
||
|
};
|
||
|
|
||
|
scif_clk_pins: scif-clk {
|
||
|
groups = "scif_clk";
|
||
|
function = "scif_clk";
|
||
|
};
|
||
|
|
||
|
scif_clk2_pins: scif-clk2 {
|
||
|
groups = "scif_clk2";
|
||
|
function = "scif_clk2";
|
||
|
};
|
||
|
|
||
|
sound_clk_pins: sound_clk {
|
||
|
groups = "audio_clkin", "audio_clkout";
|
||
|
function = "audio_clk";
|
||
|
};
|
||
|
|
||
|
sound_pins: sound {
|
||
|
groups = "ssi_ctrl", "ssi_data";
|
||
|
function = "ssi";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&rcar_sound {
|
||
|
pinctrl-0 = <&sound_clk_pins>, <&sound_pins>;
|
||
|
pinctrl-names = "default";
|
||
|
|
||
|
status = "okay";
|
||
|
|
||
|
/* audio_clkout */
|
||
|
clock-frequency = <12288000>;
|
||
|
|
||
|
ports {
|
||
|
rsnd_port: port {
|
||
|
rsnd_endpoint: endpoint {
|
||
|
remote-endpoint = <&ak4619_endpoint>;
|
||
|
bitclock-master;
|
||
|
frame-master;
|
||
|
|
||
|
/* see above [How to use Sound] */
|
||
|
playback = <&ssi0>;
|
||
|
capture = <&ssi0>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&rpc {
|
||
|
pinctrl-0 = <&qspi0_pins>;
|
||
|
pinctrl-names = "default";
|
||
|
|
||
|
status = "okay";
|
||
|
|
||
|
flash@0 {
|
||
|
compatible = "spansion,s25fs512s", "jedec,spi-nor";
|
||
|
reg = <0>;
|
||
|
spi-max-frequency = <40000000>;
|
||
|
spi-rx-bus-width = <4>;
|
||
|
|
||
|
partitions {
|
||
|
compatible = "fixed-partitions";
|
||
|
#address-cells = <1>;
|
||
|
#size-cells = <1>;
|
||
|
|
||
|
boot@0 {
|
||
|
reg = <0x0 0x1200000>;
|
||
|
read-only;
|
||
|
};
|
||
|
user@1200000 {
|
||
|
reg = <0x1200000 0x2e00000>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&rwdt {
|
||
|
timeout-sec = <60>;
|
||
|
status = "okay";
|
||
|
};
|
||
|
|
||
|
&scif_clk {
|
||
|
clock-frequency = <24000000>;
|
||
|
};
|
||
|
|
||
|
&scif_clk2 {
|
||
|
clock-frequency = <24000000>;
|
||
|
};
|