mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-21 01:18:52 +09:00
![Heiko Stuebner](/assets/img/avatar_default.png)
It is good practice to make the setting of gpio-pinctrls explicitly in the devicetree, and in this case even necessary. Rockchip boards start with iomux settings set to gpio for most pins and while the linux pinctrl driver also implicitly sets the gpio function if a pin is requested as gpio that is not necessarily true for other drivers. The issue in question stems from uboot, where the sdmmc_pwr pin is set to function 1 (sdmmc-power) by the bootrom when reading the 1st-stage loader. The regulator controlled by the pin is active-low though, so when the dwmmc hw-block sets its enabled bit, it actually disables the regulator. By changing the pin back to gpio we fix that behaviour. [picked from the identical linux patch https://patchwork.kernel.org/patch/10609253/] Signed-off-by: Heiko Stuebner <heiko@sntech.de> Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
386 lines
7.3 KiB
Plaintext
386 lines
7.3 KiB
Plaintext
// SPDX-License-Identifier: GPL-2.0+ OR X11
|
|
/*
|
|
* Copyright (c) 2013 Heiko Stuebner <heiko@sntech.de>
|
|
*/
|
|
|
|
/dts-v1/;
|
|
#include <dt-bindings/input/input.h>
|
|
#include "rk3188.dtsi"
|
|
#include "rk3188-radxarock-u-boot.dtsi"
|
|
|
|
/ {
|
|
model = "Radxa Rock";
|
|
compatible = "radxa,rock", "rockchip,rk3188";
|
|
|
|
chosen {
|
|
/* stdout-path = &uart2; */
|
|
stdout-path = "serial2:115200n8";
|
|
};
|
|
|
|
config {
|
|
u-boot,dm-pre-reloc;
|
|
u-boot,boot-led = "rock:red:power";
|
|
};
|
|
|
|
memory {
|
|
device_type = "memory";
|
|
reg = <0x60000000 0x80000000>;
|
|
};
|
|
|
|
gpio-keys {
|
|
compatible = "gpio-keys";
|
|
autorepeat;
|
|
|
|
power {
|
|
gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
|
|
linux,code = <KEY_POWER>;
|
|
label = "GPIO Key Power";
|
|
linux,input-type = <1>;
|
|
wakeup-source;
|
|
debounce-interval = <100>;
|
|
};
|
|
};
|
|
|
|
gpio-leds {
|
|
compatible = "gpio-leds";
|
|
|
|
green {
|
|
label = "rock:green:user1";
|
|
gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
|
default-state = "off";
|
|
};
|
|
|
|
blue {
|
|
label = "rock:blue:user2";
|
|
gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
|
|
default-state = "off";
|
|
};
|
|
|
|
sleep {
|
|
label = "rock:red:power";
|
|
gpios = <&gpio0 15 0>;
|
|
default-state = "off";
|
|
};
|
|
};
|
|
|
|
sound {
|
|
compatible = "simple-audio-card";
|
|
simple-audio-card,name = "SPDIF";
|
|
|
|
simple-audio-card,dai-link@1 { /* S/PDIF - S/PDIF */
|
|
cpu { sound-dai = <&spdif>; };
|
|
codec { sound-dai = <&spdif_out>; };
|
|
};
|
|
};
|
|
|
|
spdif_out: spdif-out {
|
|
compatible = "linux,spdif-dit";
|
|
#sound-dai-cells = <0>;
|
|
};
|
|
|
|
ir_recv: gpio-ir-receiver {
|
|
compatible = "gpio-ir-receiver";
|
|
gpios = <&gpio0 10 1>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&ir_recv_pin>;
|
|
};
|
|
|
|
vcc_otg: usb-otg-regulator {
|
|
compatible = "regulator-fixed";
|
|
enable-active-high;
|
|
gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&otg_vbus_drv>;
|
|
regulator-name = "otg-vbus";
|
|
regulator-min-microvolt = <5000000>;
|
|
regulator-max-microvolt = <5000000>;
|
|
regulator-always-on;
|
|
regulator-boot-on;
|
|
};
|
|
|
|
vcc_sd0: sdmmc-regulator {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "sdmmc-supply";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
gpio = <&gpio3 1 GPIO_ACTIVE_LOW>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc_pwr>;
|
|
startup-delay-us = <100000>;
|
|
vin-supply = <&vcc_io>;
|
|
};
|
|
|
|
vcc_host: usb-host-regulator {
|
|
compatible = "regulator-fixed";
|
|
enable-active-high;
|
|
gpio = <&gpio0 3 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&host_vbus_drv>;
|
|
regulator-name = "host-pwr";
|
|
regulator-min-microvolt = <5000000>;
|
|
regulator-max-microvolt = <5000000>;
|
|
regulator-always-on;
|
|
regulator-boot-on;
|
|
};
|
|
|
|
vsys: vsys-regulator {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vsys";
|
|
regulator-min-microvolt = <5000000>;
|
|
regulator-max-microvolt = <5000000>;
|
|
regulator-boot-on;
|
|
};
|
|
};
|
|
|
|
&dmc {
|
|
rockchip,pctl-timing = <0x12c 0xc8 0x1f4 0x1e 0x4e 0x4 0x69 0x6
|
|
0x3 0x0 0x6 0x5 0xc 0x10 0x6 0x4
|
|
0x4 0x5 0x4 0x200 0x3 0xa 0x40 0x0
|
|
0x1 0x5 0x5 0x3 0xc 0x1e 0x100 0x0
|
|
0x4 0x0>;
|
|
rockchip,phy-timing = <0x208c6690 0x690878 0x10022a00
|
|
0x220 0x40 0x0 0x0>;
|
|
rockchip,sdram-params = <0x24716310 0 2 300000000 3 9 0>;
|
|
};
|
|
|
|
&emac {
|
|
status = "okay";
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&emac_xfer>, <&emac_mdio>, <&phy_int>;
|
|
|
|
phy = <&phy0>;
|
|
phy-supply = <&vcc_rmii>;
|
|
|
|
phy0: ethernet-phy@0 {
|
|
reg = <0>;
|
|
interrupt-parent = <&gpio3>;
|
|
interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
|
|
};
|
|
};
|
|
|
|
&cpu0 {
|
|
cpu0-supply = <&vdd_arm>;
|
|
};
|
|
|
|
&i2c1 {
|
|
status = "okay";
|
|
clock-frequency = <400000>;
|
|
|
|
rtc@51 {
|
|
compatible = "haoyu,hym8563";
|
|
reg = <0x51>;
|
|
interrupt-parent = <&gpio0>;
|
|
interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&rtc_int>;
|
|
#clock-cells = <0>;
|
|
clock-output-names = "xin32k";
|
|
};
|
|
|
|
act8846: act8846@5a {
|
|
compatible = "active-semi,act8846";
|
|
reg = <0x5a>;
|
|
status = "okay";
|
|
system-power-controller;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&act8846_dvs0_ctl>;
|
|
|
|
vp1-supply = <&vsys>;
|
|
vp2-supply = <&vsys>;
|
|
vp3-supply = <&vsys>;
|
|
vp4-supply = <&vsys>;
|
|
inl1-supply = <&vcc_io>;
|
|
inl2-supply = <&vsys>;
|
|
inl3-supply = <&vsys>;
|
|
|
|
regulators {
|
|
vcc_ddr: REG1 {
|
|
regulator-name = "VCC_DDR";
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1200000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vdd_log: REG2 {
|
|
regulator-name = "VDD_LOG";
|
|
regulator-min-microvolt = <1000000>;
|
|
regulator-max-microvolt = <1000000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vdd_arm: REG3 {
|
|
regulator-name = "VDD_ARM";
|
|
regulator-min-microvolt = <875000>;
|
|
regulator-max-microvolt = <1350000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vcc_io: REG4 {
|
|
regulator-name = "VCC_IO";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vdd_10: REG5 {
|
|
regulator-name = "VDD_10";
|
|
regulator-min-microvolt = <1000000>;
|
|
regulator-max-microvolt = <1000000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vdd_hdmi: REG6 {
|
|
regulator-name = "VDD_HDMI";
|
|
regulator-min-microvolt = <2500000>;
|
|
regulator-max-microvolt = <2500000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vcc18: REG7 {
|
|
regulator-name = "VCC_18";
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vcca_33: REG8 {
|
|
regulator-name = "VCCA_33";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vcc_rmii: REG9 {
|
|
regulator-name = "VCC_RMII";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
};
|
|
|
|
vccio_wl: REG10 {
|
|
regulator-name = "VCCIO_WL";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vcc_18: REG11 {
|
|
regulator-name = "VCC18_IO";
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vcc28: REG12 {
|
|
regulator-name = "VCC_28";
|
|
regulator-min-microvolt = <2800000>;
|
|
regulator-max-microvolt = <2800000>;
|
|
regulator-always-on;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
&mmc0 {
|
|
num-slots = <1>;
|
|
status = "okay";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
|
|
vmmc-supply = <&vcc_sd0>;
|
|
|
|
bus-width = <4>;
|
|
cap-mmc-highspeed;
|
|
cap-sd-highspeed;
|
|
disable-wp;
|
|
};
|
|
|
|
&pwm1 {
|
|
status = "okay";
|
|
};
|
|
|
|
&pwm2 {
|
|
status = "okay";
|
|
};
|
|
|
|
&pwm3 {
|
|
status = "okay";
|
|
};
|
|
|
|
&pinctrl {
|
|
pcfg_output_low: pcfg-output-low {
|
|
output-low;
|
|
};
|
|
|
|
act8846 {
|
|
act8846_dvs0_ctl: act8846-dvs0-ctl {
|
|
rockchip,pins = <RK_GPIO3 27 RK_FUNC_GPIO &pcfg_output_low>;
|
|
};
|
|
};
|
|
|
|
hym8563 {
|
|
rtc_int: rtc-int {
|
|
rockchip,pins = <RK_GPIO0 0 RK_FUNC_GPIO &pcfg_pull_up>;
|
|
};
|
|
};
|
|
|
|
lan8720a {
|
|
phy_int: phy-int {
|
|
rockchip,pins = <RK_GPIO3 26 RK_FUNC_GPIO &pcfg_pull_up>;
|
|
};
|
|
};
|
|
|
|
ir-receiver {
|
|
ir_recv_pin: ir-recv-pin {
|
|
rockchip,pins = <RK_GPIO0 10 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
};
|
|
};
|
|
|
|
sd0 {
|
|
sdmmc_pwr: sdmmc-pwr {
|
|
rockchip,pins = <RK_GPIO3 1 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
};
|
|
};
|
|
|
|
usb {
|
|
host_vbus_drv: host-vbus-drv {
|
|
rockchip,pins = <0 3 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
};
|
|
otg_vbus_drv: otg-vbus-drv {
|
|
rockchip,pins = <2 31 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&spdif {
|
|
status = "okay";
|
|
};
|
|
|
|
&uart0 {
|
|
status = "okay";
|
|
};
|
|
|
|
&uart1 {
|
|
status = "okay";
|
|
};
|
|
|
|
&uart3 {
|
|
status = "okay";
|
|
};
|
|
|
|
&usbphy {
|
|
status = "okay";
|
|
};
|
|
|
|
&usb_host {
|
|
status = "okay";
|
|
};
|
|
|
|
&usb_otg {
|
|
status = "okay";
|
|
};
|
|
|
|
&wdt {
|
|
status = "okay";
|
|
};
|