smaeul-u-boot/arch/riscv/dts/sun20i-d1-clockworkpi-v3.14.dts
Samuel Holland 329e94f16f sunxi: riscv: Copy in WIP version of devicetrees
While the bindings still are not stable, this should help things work
out of the box.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-10-31 22:59:00 -05:00

369 lines
7.7 KiB
Plaintext

// SPDX-License-Identifier: (GPL-2.0+ or MIT)
// Copyright (C) 2022 Samuel Holland <samuel@sholland.org>
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include "sun20i-d1.dtsi"
#include "sun20i-d1-common-regulators.dtsi"
/ {
model = "ClockworkPi v3.14 (R-01)";
compatible = "clockwork,r-01-clockworkpi-v3.14", "allwinner,sun20i-d1";
aliases {
ethernet0 = &ap6256;
mmc0 = &mmc0;
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
audio_amplifier: audio-amplifier {
compatible = "simple-audio-amplifier";
enable-gpios = <&pio 4 1 GPIO_ACTIVE_HIGH>; /* PE1/GPIO11 */
sound-name-prefix = "Amplifier";
VCC-supply = <&reg_vcc>;
};
/*
* FIXME: This is not really an amplifier, but the amplifier binding
* has the needed properties and behavior.
*/
audio_switch: audio-switch {
compatible = "simple-audio-amplifier";
enable-gpios = <&pio 1 2 GPIO_ACTIVE_HIGH>; /* PB2/AUD_SWITCH */
sound-name-prefix = "Switch";
VCC-supply = <&reg_aldo1>;
};
backlight: backlight {
compatible = "pwm-backlight";
power-supply = <&reg_vcc>;
pwms = <&pwm 4 50000 0>; /* PD20/GPIO9 */
};
bt_sco_codec: bt-sco-codec {
#sound-dai-cells = <0>;
compatible = "linux,bt-sco";
};
bt-sound {
compatible = "simple-audio-card";
simple-audio-card,name = "Bluetooth";
#address-cells = <1>;
#size-cells = <0>;
simple-audio-card,dai-link@0 {
format = "dsp_a";
frame-master = <&bt_sound_cpu>;
bitclock-master = <&bt_sound_cpu>;
bt_sound_cpu: cpu {
sound-dai = <&i2s1>;
};
codec {
sound-dai = <&bt_sco_codec>;
};
};
};
hdmi_connector: connector {
compatible = "hdmi-connector";
type = "d";
port {
hdmi_connector_in: endpoint {
remote-endpoint = <&hdmi_out_connector>;
};
};
};
/*
* This regulator is PWM-controlled, but the PWM controller is not
* yet supported, so fix the regulator to its default voltage.
*/
reg_vdd_cpu: vdd-cpu {
compatible = "pwm-regulator";
pwms = <&pwm 0 50000 0>;
pwm-supply = <&reg_vcc>;
regulator-name = "vdd-cpu";
regulator-min-microvolt = <810000>;
regulator-max-microvolt = <1160000>;
};
wifi_pwrseq: wifi-pwrseq {
compatible = "mmc-pwrseq-simple";
reset-gpios = <&pio 6 11 GPIO_ACTIVE_LOW>; /* PG11/GPIO3 */
};
};
&codec {
aux-devs = <&audio_amplifier>, <&audio_switch>;
hp-det-gpio = <&pio 1 12 GPIO_ACTIVE_HIGH>; /* PB12/GPIO10 */
pin-switches = "Internal Speakers";
routing = "Internal Speakers", "Amplifier OUTL",
"Internal Speakers", "Amplifier OUTR",
"Amplifier INL", "Switch OUTL",
"Amplifier INR", "Switch OUTR",
"Headphone Jack", "Switch OUTL",
"Headphone Jack", "Switch OUTR",
"Switch INL", "HPOUTL",
"Switch INR", "HPOUTR",
"MICIN3", "Headset Microphone",
"Headset Microphone", "HBIAS";
widgets = "Microphone", "Headset Microphone",
"Headphone", "Headphone Jack",
"Speaker", "Internal Speakers";
};
&cpu0 {
cpu-supply = <&reg_vdd_cpu>;
};
&de {
status = "okay";
};
&ehci1 {
status = "okay";
};
&hdmi {
status = "okay";
};
&hdmi_out {
hdmi_out_connector: endpoint {
remote-endpoint = <&hdmi_connector_in>;
};
};
&hdmi_phy {
status = "okay";
};
&i2c0 {
pinctrl-0 = <&i2c0_pb10_pins>;
pinctrl-names = "default";
status = "okay";
axp221: pmic@34 {
compatible = "x-powers,axp228", "x-powers,axp221";
reg = <0x34>;
interrupt-parent = <&pio>;
interrupts = <4 9 IRQ_TYPE_LEVEL_LOW>; /* PE9/GPIO2 */
interrupt-controller;
#interrupt-cells = <1>;
ac_power_supply: ac-power {
compatible = "x-powers,axp221-ac-power-supply";
};
axp_adc: adc {
compatible = "x-powers,axp221-adc";
#io-channel-cells = <1>;
};
battery_power_supply: battery-power {
compatible = "x-powers,axp221-battery-power-supply";
};
regulators {
x-powers,dcdc-freq = <3000>;
reg_dcdc1: dcdc1 {
regulator-name = "sys-3v3";
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_dcdc3: dcdc3 {
regulator-name = "sys-1v8";
regulator-always-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
reg_aldo1: aldo1 {
regulator-name = "aud-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_aldo2: aldo2 {
regulator-name = "disp-3v3";
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_aldo3: aldo3 {
regulator-name = "vdd-wifi";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
/* DLDO1 and ELDO1-3 are connected in parallel. */
reg_dldo1: dldo1 {
regulator-name = "vbat-wifi-a";
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
/* DLDO2-DLDO4 are connected in parallel. */
reg_dldo2: dldo2 {
regulator-name = "vcc-3v3-ext-a";
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_dldo3: dldo3 {
regulator-name = "vcc-3v3-ext-b";
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_dldo4: dldo4 {
regulator-name = "vcc-3v3-ext-c";
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_eldo1: eldo1 {
regulator-name = "vbat-wifi-b";
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_eldo2: eldo2 {
regulator-name = "vbat-wifi-c";
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_eldo3: eldo3 {
regulator-name = "vbat-wifi-d";
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
};
usb_power_supply: usb-power {
compatible = "x-powers,axp221-usb-power-supply";
status = "disabled";
};
};
};
&i2s1 {
pinctrl-0 = <&i2s1_clk_pins>, <&i2s1_din_pin>, <&i2s1_dout_pin>;
pinctrl-names = "default";
status = "okay";
};
&mmc0 {
broken-cd;
bus-width = <4>;
disable-wp;
vmmc-supply = <&reg_dcdc1>;
vqmmc-supply = <&reg_vcc_3v3>;
pinctrl-0 = <&mmc0_pins>;
pinctrl-names = "default";
status = "okay";
};
&mmc1 {
bus-width = <4>;
mmc-pwrseq = <&wifi_pwrseq>;
non-removable;
vmmc-supply = <&reg_dldo1>;
vqmmc-supply = <&reg_aldo3>;
pinctrl-0 = <&mmc1_pins>;
pinctrl-names = "default";
status = "okay";
ap6256: wifi@1 {
compatible = "brcm,bcm43456-fmac", "brcm,bcm4329-fmac";
reg = <1>;
interrupt-parent = <&pio>;
interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10/GPIO4 */
interrupt-names = "host-wake";
};
};
&ohci1 {
status = "okay";
};
&pio {
vcc-pg-supply = <&reg_ldoa>;
i2s1_clk_pins: i2s1-clk-pins {
pins = "PG12", "PG13";
function = "i2s1";
};
i2s1_din_pin: i2s1-din-pin {
pins = "PG14";
function = "i2s1_din";
};
i2s1_dout_pin: i2s1-dout-pin {
pins = "PG15";
function = "i2s1_dout";
};
};
&pwm {
pinctrl-0 = <&pwm0_pd16_pin>, <&pwm4_pd20_pin>;
pinctrl-names = "default";
status = "okay";
};
&uart0 {
pinctrl-0 = <&uart0_pb8_pins>;
pinctrl-names = "default";
status = "okay";
};
&uart1 {
uart-has-rtscts;
pinctrl-0 = <&uart1_pg6_pins>, <&uart1_pg8_rts_cts_pins>;
pinctrl-names = "default";
status = "okay";
bluetooth {
compatible = "brcm,bcm4345c5";
interrupt-parent = <&pio>;
interrupts = <6 17 IRQ_TYPE_LEVEL_HIGH>; /* PG17/GPIO6 */
device-wakeup-gpios = <&pio 6 16 GPIO_ACTIVE_HIGH>; /* PG16/GPIO7 */
shutdown-gpios = <&pio 6 18 GPIO_ACTIVE_HIGH>; /* PG18/GPIO5 */
max-speed = <1500000>;
vbat-supply = <&reg_dldo1>;
vddio-supply = <&reg_aldo3>;
};
};
&usb_otg {
dr_mode = "peripheral";
status = "okay";
};
&usbphy {
usb0_vbus_power-supply = <&ac_power_supply>;
status = "okay";
};