2017-12-15 18:44:27 +07:00
|
|
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
2015-07-08 00:42:53 +07:00
|
|
|
/*
|
|
|
|
* Google Veyron (and derivatives) board device tree source
|
|
|
|
*
|
|
|
|
* Copyright 2015 Google, Inc
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <dt-bindings/clock/rockchip,rk808.h>
|
|
|
|
#include <dt-bindings/input/input.h>
|
|
|
|
#include "rk3288.dtsi"
|
|
|
|
|
|
|
|
/ {
|
2019-02-15 18:51:50 +07:00
|
|
|
chosen {
|
|
|
|
stdout-path = "serial2:115200n8";
|
|
|
|
};
|
|
|
|
|
2018-11-19 02:03:02 +07:00
|
|
|
/*
|
|
|
|
* The default coreboot on veyron devices ignores memory@0 nodes
|
|
|
|
* and would instead create another memory node.
|
|
|
|
*/
|
|
|
|
memory {
|
2015-07-08 00:42:53 +07:00
|
|
|
device_type = "memory";
|
2017-08-03 10:21:36 +07:00
|
|
|
reg = <0x0 0x0 0x0 0x80000000>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
2019-06-11 06:51:44 +07:00
|
|
|
bt_activity: bt-activity {
|
2015-07-08 00:42:53 +07:00
|
|
|
compatible = "gpio-keys";
|
2019-06-11 06:51:44 +07:00
|
|
|
pinctrl-names = "default";
|
|
|
|
pinctrl-0 = <&bt_host_wake>;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* HACK: until we have an LPM driver, we'll use an
|
|
|
|
* ugly GPIO key to allow Bluetooth to wake from S3.
|
|
|
|
* This is expected to only be used by BT modules that
|
|
|
|
* use UART for comms. For BT modules that talk over
|
|
|
|
* SDIO we should use a wakeup mechanism related to SDIO.
|
|
|
|
*
|
|
|
|
* Use KEY_RESERVED here since that will work as a wakeup but
|
|
|
|
* doesn't get reported to higher levels (so doesn't confuse
|
|
|
|
* Chrome).
|
|
|
|
*/
|
|
|
|
bt-wake {
|
|
|
|
label = "BT Wakeup";
|
|
|
|
gpios = <&gpio4 RK_PD7 GPIO_ACTIVE_HIGH>;
|
|
|
|
linux,code = <KEY_RESERVED>;
|
|
|
|
wakeup-source;
|
|
|
|
};
|
|
|
|
|
|
|
|
};
|
2015-07-08 00:42:53 +07:00
|
|
|
|
2019-06-06 03:43:19 +07:00
|
|
|
power_button: power-button {
|
2015-07-08 00:42:53 +07:00
|
|
|
compatible = "gpio-keys";
|
|
|
|
pinctrl-names = "default";
|
|
|
|
pinctrl-0 = <&pwr_key_l>;
|
2019-06-06 03:43:19 +07:00
|
|
|
|
2015-07-08 00:42:53 +07:00
|
|
|
power {
|
|
|
|
label = "Power";
|
2016-10-22 19:54:55 +07:00
|
|
|
gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
|
2015-07-08 00:42:53 +07:00
|
|
|
linux,code = <KEY_POWER>;
|
|
|
|
debounce-interval = <100>;
|
2016-02-09 04:55:12 +07:00
|
|
|
wakeup-source;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
gpio-restart {
|
|
|
|
compatible = "gpio-restart";
|
2016-10-22 19:54:55 +07:00
|
|
|
gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
|
2015-07-08 00:42:53 +07:00
|
|
|
pinctrl-names = "default";
|
|
|
|
pinctrl-0 = <&ap_warm_reset_h>;
|
|
|
|
priority = <200>;
|
|
|
|
};
|
|
|
|
|
|
|
|
emmc_pwrseq: emmc-pwrseq {
|
|
|
|
compatible = "mmc-pwrseq-emmc";
|
|
|
|
pinctrl-0 = <&emmc_reset>;
|
|
|
|
pinctrl-names = "default";
|
2016-10-22 19:54:55 +07:00
|
|
|
reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_HIGH>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
sdio_pwrseq: sdio-pwrseq {
|
|
|
|
compatible = "mmc-pwrseq-simple";
|
|
|
|
clocks = <&rk808 RK808_CLKOUT1>;
|
|
|
|
clock-names = "ext_clock";
|
|
|
|
pinctrl-names = "default";
|
|
|
|
pinctrl-0 = <&bt_enable_l>, <&wifi_enable_h>;
|
|
|
|
|
|
|
|
/*
|
2019-04-10 06:14:05 +07:00
|
|
|
* Depending on the actual card populated GPIO4 D4 and D5
|
|
|
|
* correspond to one of these signals on the module:
|
|
|
|
*
|
|
|
|
* D4:
|
2015-07-08 00:42:53 +07:00
|
|
|
* - SDIO_RESET_L_WL_REG_ON
|
|
|
|
* - PDN (power down when low)
|
2019-04-10 06:14:05 +07:00
|
|
|
*
|
|
|
|
* D5:
|
|
|
|
* - BT_I2S_WS_BT_RFDISABLE_L
|
|
|
|
* - No connect
|
2015-07-08 00:42:53 +07:00
|
|
|
*/
|
2019-04-10 06:14:05 +07:00
|
|
|
reset-gpios = <&gpio4 RK_PD4 GPIO_ACTIVE_LOW>,
|
|
|
|
<&gpio4 RK_PD5 GPIO_ACTIVE_LOW>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
vcc_5v: vcc-5v {
|
|
|
|
compatible = "regulator-fixed";
|
|
|
|
regulator-name = "vcc_5v";
|
|
|
|
regulator-always-on;
|
|
|
|
regulator-boot-on;
|
|
|
|
regulator-min-microvolt = <5000000>;
|
|
|
|
regulator-max-microvolt = <5000000>;
|
|
|
|
};
|
|
|
|
|
|
|
|
vcc33_sys: vcc33-sys {
|
|
|
|
compatible = "regulator-fixed";
|
|
|
|
regulator-name = "vcc33_sys";
|
|
|
|
regulator-always-on;
|
|
|
|
regulator-boot-on;
|
|
|
|
regulator-min-microvolt = <3300000>;
|
|
|
|
regulator-max-microvolt = <3300000>;
|
|
|
|
};
|
|
|
|
|
|
|
|
vcc50_hdmi: vcc50-hdmi {
|
|
|
|
compatible = "regulator-fixed";
|
|
|
|
regulator-name = "vcc50_hdmi";
|
|
|
|
regulator-always-on;
|
|
|
|
regulator-boot-on;
|
|
|
|
vin-supply = <&vcc_5v>;
|
|
|
|
};
|
ARM: dts: rockchip: Add vdd_logic to rk3288-veyron
The vdd_logic rail controls the voltage supplied to misc logic on
rk3288, including the voltage supplied to the memory controller. The
vcc logic is implemented by a PWM regulator.
Right now there are no consumers of vdd_logic on veyron but if anyone
ever wants to try to add DDR Freq they'd need it.
Note that in the downstream Chrome OS kernel the PWM regulator has
a voltage table with these points:
1350000 0%
1300000 10%
1250000 20%
1200000 31%
1150000 41%
1125000 46%
1100000 52%
1050000 62%
1000000 72%
950000 83%
The DDR Freq driver in the downstream kernel only uses some of those
points, namely:
DDR3: 1200000, 1150000, 1100000, 1050000
LPDDR: 1150000, 1100000, 1050000
When adapting the downstream kernel to upstream I have opted to switch
to using the "continuous" mode of the PWM regulator driver. This was
the only way I could get the upstream driver to achieve _exactly_ the
same voltages as the downstream driver could. Specifically note that
the old driver in downstream Chrome OS 3.14 _didn't_ have the
DIV_ROUND_CLOSEST_ULL() in the Rockchip PLL driver. That means if I
use the same (downstream) table I might end up with a duty cycle
that's 1 larger than was used downstream, leading to a slightly
different voltage. Due to the way the rounding worked I couldn't even
just adjust the "percent" by 1 for a given voltage level--certain duty
cycles just aren't achievable with the upstream math for voltage
tables.
Using continuous mode you can achieve the exact same duty cycle by
simply adjusting the voltage you use by a tad bit. The voltages that
are equivalent to the ones used in the downstream kernel's table are:
1350000, 1304472, 1255691, 1200407, 1154878,
1128862, 1099593, 1050813, 1005285, 950000
Note that the top/bottom voltage is exactly the same just due to the
way that continuous mode is calculated and the fact that I used those
as anchors. I didn't make any attempt to do the resistor math (as was
done on rk3399-gru).
If anyone ever gets DDRFreq working on veyron upstream they should
thus adjust the voltage specified in the DDRFreq operating points
slightly (as per the above) to obtain the existing/tested values. AKA
you'd use:
DDR3: 1200407, 1154878, 1099593, 1050813
LPDDR: 1154878, 1099593, 1050813
A few other notes:
- The "period" here (1994) is different than the "period" downstream
(2000) for similar reasons: there's a DIV_ROUND_CLOSEST_ULL() that
wasn't downstream. With 1994 upstream comes up with the same value
(0x94) to program into the hardware that downstream put there. As
far as I can tell 0x94 actually means 1993.27.
- The duty cycle unit of 0x94 was picked by just matching the period
which nicely allows us to insert 0x7b as that value to program into
the hardware for 950mV. The 0x7b was found by observing what the
downstream kernel calculated (not that the system can actually run
with vdd_log at 950 mV).
- The downstream kernel can also be seen to program a different value
into the CTRL field. Upstream achieves 0x0b and downstream 0x1b.
This is because the upstream commit bc834d7b07b4 ("pwm: rockchip:
Move the configuration of polarity") fixed a bug by adding "ctrl &=
~PWM_POLARITY_MASK". Downstream accidentally left bit 4 set.
Luckily this bit doesn't matter--it's only used when the PWM goes
inactive (AKA if it's in oneshot mode or is disabled) and we don't
do that for the PWM regulator.
I measured the voltage of vdd_log while adjusting it and found that
with the upstream kernel voltage difference between requested and
actual was 9.2 mV at 950 mV and 13.4 mV at 1350 mV with in-between
voltages consistently showing ~1% error. This error is likely
expected as voltage can be seen to sag a bit when more load is put on
the rail.
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
2019-03-22 03:19:44 +07:00
|
|
|
|
|
|
|
vdd_logic: vdd-logic {
|
|
|
|
compatible = "pwm-regulator";
|
|
|
|
regulator-name = "vdd_logic";
|
|
|
|
|
|
|
|
pwms = <&pwm1 0 1994 0>;
|
|
|
|
pwm-supply = <&vcc33_sys>;
|
|
|
|
|
|
|
|
pwm-dutycycle-range = <0x7b 0>;
|
|
|
|
pwm-dutycycle-unit = <0x94>;
|
|
|
|
|
|
|
|
regulator-always-on;
|
|
|
|
regulator-boot-on;
|
|
|
|
regulator-min-microvolt = <950000>;
|
|
|
|
regulator-max-microvolt = <1350000>;
|
|
|
|
regulator-ramp-delay = <4000>;
|
|
|
|
};
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
&cpu0 {
|
|
|
|
cpu0-supply = <&vdd_cpu>;
|
2018-06-16 21:55:17 +07:00
|
|
|
};
|
|
|
|
|
2019-05-16 23:29:40 +07:00
|
|
|
&cpu_crit {
|
|
|
|
temperature = <100000>;
|
|
|
|
};
|
|
|
|
|
2018-06-16 21:55:17 +07:00
|
|
|
/* rk3288-c used in Veyron Chrome-devices has slightly changed OPPs */
|
|
|
|
&cpu_opp_table {
|
|
|
|
/delete-node/ opp-312000000;
|
|
|
|
|
|
|
|
opp-1512000000 {
|
|
|
|
opp-microvolt = <1250000>;
|
|
|
|
};
|
|
|
|
opp-1608000000 {
|
|
|
|
opp-microvolt = <1300000>;
|
|
|
|
};
|
|
|
|
opp-1704000000 {
|
|
|
|
opp-hz = /bits/ 64 <1704000000>;
|
|
|
|
opp-microvolt = <1350000>;
|
|
|
|
};
|
|
|
|
opp-1800000000 {
|
|
|
|
opp-hz = /bits/ 64 <1800000000>;
|
|
|
|
opp-microvolt = <1400000>;
|
|
|
|
};
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
&emmc {
|
|
|
|
status = "okay";
|
|
|
|
|
|
|
|
bus-width = <8>;
|
|
|
|
cap-mmc-highspeed;
|
2015-10-12 19:48:30 +07:00
|
|
|
rockchip,default-sample-phase = <158>;
|
2015-07-08 00:42:53 +07:00
|
|
|
disable-wp;
|
2015-10-12 19:48:30 +07:00
|
|
|
mmc-hs200-1_8v;
|
2015-07-08 00:42:53 +07:00
|
|
|
mmc-pwrseq = <&emmc_pwrseq>;
|
|
|
|
non-removable;
|
|
|
|
pinctrl-names = "default";
|
|
|
|
pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
|
|
|
|
};
|
|
|
|
|
2017-05-03 16:56:29 +07:00
|
|
|
&gpu {
|
|
|
|
mali-supply = <&vdd_gpu>;
|
|
|
|
status = "okay";
|
|
|
|
};
|
|
|
|
|
2019-05-16 23:29:41 +07:00
|
|
|
&gpu_alert0 {
|
|
|
|
temperature = <72500>;
|
|
|
|
};
|
|
|
|
|
|
|
|
&gpu_crit {
|
|
|
|
temperature = <100000>;
|
|
|
|
};
|
|
|
|
|
2015-07-08 00:42:53 +07:00
|
|
|
&hdmi {
|
2019-05-03 05:53:36 +07:00
|
|
|
pinctrl-names = "default", "unwedge";
|
2019-05-03 05:53:34 +07:00
|
|
|
pinctrl-0 = <&hdmi_ddc>;
|
2019-05-03 05:53:36 +07:00
|
|
|
pinctrl-1 = <&hdmi_ddc_unwedge>;
|
2015-07-08 00:42:53 +07:00
|
|
|
status = "okay";
|
|
|
|
};
|
|
|
|
|
|
|
|
&i2c0 {
|
|
|
|
status = "okay";
|
|
|
|
|
|
|
|
clock-frequency = <400000>;
|
|
|
|
i2c-scl-falling-time-ns = <50>; /* 2.5ns measured */
|
|
|
|
i2c-scl-rising-time-ns = <100>; /* 45ns measured */
|
|
|
|
|
|
|
|
rk808: pmic@1b {
|
|
|
|
compatible = "rockchip,rk808";
|
|
|
|
reg = <0x1b>;
|
|
|
|
clock-output-names = "xin32k", "wifibt_32kin";
|
|
|
|
interrupt-parent = <&gpio0>;
|
2016-10-22 19:54:55 +07:00
|
|
|
interrupts = <RK_PA4 IRQ_TYPE_LEVEL_LOW>;
|
2015-07-08 00:42:53 +07:00
|
|
|
pinctrl-names = "default";
|
|
|
|
pinctrl-0 = <&pmic_int_l>;
|
|
|
|
rockchip,system-power-controller;
|
|
|
|
wakeup-source;
|
|
|
|
#clock-cells = <1>;
|
|
|
|
|
|
|
|
vcc1-supply = <&vcc33_sys>;
|
|
|
|
vcc2-supply = <&vcc33_sys>;
|
|
|
|
vcc3-supply = <&vcc33_sys>;
|
|
|
|
vcc4-supply = <&vcc33_sys>;
|
|
|
|
vcc6-supply = <&vcc_5v>;
|
|
|
|
vcc7-supply = <&vcc33_sys>;
|
|
|
|
vcc8-supply = <&vcc33_sys>;
|
|
|
|
vcc12-supply = <&vcc_18>;
|
|
|
|
vddio-supply = <&vcc33_io>;
|
|
|
|
|
|
|
|
regulators {
|
|
|
|
vdd_cpu: DCDC_REG1 {
|
|
|
|
regulator-name = "vdd_arm";
|
|
|
|
regulator-always-on;
|
|
|
|
regulator-boot-on;
|
|
|
|
regulator-min-microvolt = <750000>;
|
|
|
|
regulator-max-microvolt = <1450000>;
|
|
|
|
regulator-ramp-delay = <6001>;
|
|
|
|
regulator-state-mem {
|
|
|
|
regulator-off-in-suspend;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
vdd_gpu: DCDC_REG2 {
|
|
|
|
regulator-name = "vdd_gpu";
|
|
|
|
regulator-always-on;
|
|
|
|
regulator-boot-on;
|
|
|
|
regulator-min-microvolt = <800000>;
|
|
|
|
regulator-max-microvolt = <1250000>;
|
|
|
|
regulator-ramp-delay = <6001>;
|
|
|
|
regulator-state-mem {
|
2019-04-12 06:21:57 +07:00
|
|
|
regulator-off-in-suspend;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
vcc135_ddr: DCDC_REG3 {
|
|
|
|
regulator-name = "vcc135_ddr";
|
|
|
|
regulator-always-on;
|
|
|
|
regulator-boot-on;
|
|
|
|
regulator-state-mem {
|
|
|
|
regulator-on-in-suspend;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* vcc_18 has several aliases. (vcc18_flashio and
|
|
|
|
* vcc18_wl). We'll add those aliases here just to
|
|
|
|
* make it easier to follow the schematic. The signals
|
|
|
|
* are actually hooked together and only separated for
|
|
|
|
* power measurement purposes).
|
|
|
|
*/
|
|
|
|
vcc18_wl: vcc18_flashio: vcc_18: DCDC_REG4 {
|
|
|
|
regulator-name = "vcc_18";
|
|
|
|
regulator-always-on;
|
|
|
|
regulator-boot-on;
|
|
|
|
regulator-min-microvolt = <1800000>;
|
|
|
|
regulator-max-microvolt = <1800000>;
|
|
|
|
regulator-state-mem {
|
|
|
|
regulator-on-in-suspend;
|
|
|
|
regulator-suspend-microvolt = <1800000>;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Note that both vcc33_io and vcc33_pmuio are always
|
|
|
|
* powered together. To simplify the logic in the dts
|
|
|
|
* we just refer to vcc33_io every time something is
|
|
|
|
* powered from vcc33_pmuio. In fact, on later boards
|
|
|
|
* (such as danger) they're the same net.
|
|
|
|
*/
|
|
|
|
vcc33_io: LDO_REG1 {
|
|
|
|
regulator-name = "vcc33_io";
|
|
|
|
regulator-always-on;
|
|
|
|
regulator-boot-on;
|
|
|
|
regulator-min-microvolt = <3300000>;
|
|
|
|
regulator-max-microvolt = <3300000>;
|
|
|
|
regulator-state-mem {
|
|
|
|
regulator-on-in-suspend;
|
|
|
|
regulator-suspend-microvolt = <3300000>;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
vdd_10: LDO_REG3 {
|
|
|
|
regulator-name = "vdd_10";
|
|
|
|
regulator-always-on;
|
|
|
|
regulator-boot-on;
|
|
|
|
regulator-min-microvolt = <1000000>;
|
|
|
|
regulator-max-microvolt = <1000000>;
|
|
|
|
regulator-state-mem {
|
|
|
|
regulator-on-in-suspend;
|
|
|
|
regulator-suspend-microvolt = <1000000>;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
vdd10_lcd_pwren_h: LDO_REG7 {
|
|
|
|
regulator-name = "vdd10_lcd_pwren_h";
|
|
|
|
regulator-always-on;
|
|
|
|
regulator-boot-on;
|
|
|
|
regulator-min-microvolt = <2500000>;
|
|
|
|
regulator-max-microvolt = <2500000>;
|
|
|
|
regulator-state-mem {
|
|
|
|
regulator-off-in-suspend;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
vcc33_lcd: SWITCH_REG1 {
|
|
|
|
regulator-name = "vcc33_lcd";
|
|
|
|
regulator-always-on;
|
|
|
|
regulator-boot-on;
|
|
|
|
regulator-state-mem {
|
|
|
|
regulator-off-in-suspend;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
&i2c1 {
|
|
|
|
status = "okay";
|
|
|
|
|
|
|
|
clock-frequency = <400000>;
|
|
|
|
i2c-scl-falling-time-ns = <50>; /* 2.5ns measured */
|
|
|
|
i2c-scl-rising-time-ns = <100>; /* 40ns measured */
|
|
|
|
|
|
|
|
tpm: tpm@20 {
|
|
|
|
compatible = "infineon,slb9645tt";
|
|
|
|
reg = <0x20>;
|
|
|
|
powered-while-suspended;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
&i2c2 {
|
|
|
|
status = "okay";
|
|
|
|
|
|
|
|
/* 100kHz since 4.7k resistors don't rise fast enough */
|
|
|
|
clock-frequency = <100000>;
|
|
|
|
i2c-scl-falling-time-ns = <50>; /* 10ns measured */
|
|
|
|
i2c-scl-rising-time-ns = <800>; /* 600ns measured */
|
|
|
|
};
|
|
|
|
|
|
|
|
&i2c4 {
|
|
|
|
status = "okay";
|
|
|
|
|
|
|
|
clock-frequency = <400000>;
|
|
|
|
i2c-scl-falling-time-ns = <50>; /* 11ns measured */
|
|
|
|
i2c-scl-rising-time-ns = <300>; /* 225ns measured */
|
|
|
|
};
|
|
|
|
|
2016-05-21 06:36:17 +07:00
|
|
|
&io_domains {
|
|
|
|
status = "okay";
|
|
|
|
|
|
|
|
bb-supply = <&vcc33_io>;
|
|
|
|
dvp-supply = <&vcc_18>;
|
|
|
|
flash0-supply = <&vcc18_flashio>;
|
|
|
|
gpio1830-supply = <&vcc33_io>;
|
|
|
|
gpio30-supply = <&vcc33_io>;
|
|
|
|
lcdc-supply = <&vcc33_lcd>;
|
|
|
|
wifi-supply = <&vcc18_wl>;
|
|
|
|
};
|
|
|
|
|
2015-07-08 00:42:53 +07:00
|
|
|
&pwm1 {
|
|
|
|
status = "okay";
|
|
|
|
};
|
|
|
|
|
|
|
|
&sdio0 {
|
|
|
|
status = "okay";
|
|
|
|
|
|
|
|
bus-width = <4>;
|
|
|
|
cap-sd-highspeed;
|
|
|
|
cap-sdio-irq;
|
|
|
|
keep-power-in-suspend;
|
|
|
|
mmc-pwrseq = <&sdio_pwrseq>;
|
|
|
|
non-removable;
|
|
|
|
pinctrl-names = "default";
|
|
|
|
pinctrl-0 = <&sdio0_clk &sdio0_cmd &sdio0_bus4>;
|
2015-10-12 19:48:30 +07:00
|
|
|
sd-uhs-sdr12;
|
|
|
|
sd-uhs-sdr25;
|
|
|
|
sd-uhs-sdr50;
|
|
|
|
sd-uhs-sdr104;
|
2015-07-08 00:42:53 +07:00
|
|
|
vmmc-supply = <&vcc33_sys>;
|
|
|
|
vqmmc-supply = <&vcc18_wl>;
|
|
|
|
};
|
|
|
|
|
|
|
|
&spi2 {
|
|
|
|
status = "okay";
|
|
|
|
|
|
|
|
rx-sample-delay-ns = <12>;
|
2016-05-06 08:02:44 +07:00
|
|
|
|
|
|
|
flash@0 {
|
|
|
|
compatible = "jedec,spi-nor";
|
|
|
|
spi-max-frequency = <50000000>;
|
|
|
|
reg = <0>;
|
|
|
|
};
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
&tsadc {
|
|
|
|
status = "okay";
|
|
|
|
|
2015-07-22 12:44:06 +07:00
|
|
|
rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
|
|
|
|
rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
|
2019-05-16 23:29:40 +07:00
|
|
|
rockchip,hw-tshut-temp = <125000>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
&uart0 {
|
|
|
|
status = "okay";
|
|
|
|
|
|
|
|
/* Pins don't include flow control by default; add that in */
|
|
|
|
pinctrl-names = "default";
|
|
|
|
pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
|
|
|
|
};
|
|
|
|
|
|
|
|
&uart1 {
|
|
|
|
status = "okay";
|
|
|
|
};
|
|
|
|
|
|
|
|
&uart2 {
|
|
|
|
status = "okay";
|
|
|
|
};
|
|
|
|
|
|
|
|
&usbphy {
|
|
|
|
status = "okay";
|
|
|
|
};
|
|
|
|
|
|
|
|
&usb_host0_ehci {
|
|
|
|
status = "okay";
|
|
|
|
|
|
|
|
needs-reset-on-resume;
|
|
|
|
};
|
|
|
|
|
|
|
|
&usb_host1 {
|
|
|
|
status = "okay";
|
2019-05-21 00:56:05 +07:00
|
|
|
snps,need-phy-for-wake;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
&usb_otg {
|
|
|
|
status = "okay";
|
|
|
|
|
|
|
|
assigned-clocks = <&cru SCLK_USBPHY480M_SRC>;
|
2015-11-20 04:22:28 +07:00
|
|
|
assigned-clock-parents = <&usbphy0>;
|
2015-07-08 00:42:53 +07:00
|
|
|
dr_mode = "host";
|
2019-05-21 00:56:05 +07:00
|
|
|
snps,need-phy-for-wake;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
&vopb {
|
|
|
|
status = "okay";
|
|
|
|
};
|
|
|
|
|
|
|
|
&vopb_mmu {
|
|
|
|
status = "okay";
|
|
|
|
};
|
|
|
|
|
|
|
|
&wdt {
|
|
|
|
status = "okay";
|
|
|
|
};
|
|
|
|
|
|
|
|
&pinctrl {
|
|
|
|
pinctrl-names = "default", "sleep";
|
|
|
|
pinctrl-0 = <
|
|
|
|
/* Common for sleep and wake, but no owners */
|
2019-04-12 06:21:55 +07:00
|
|
|
&ddr0_retention
|
|
|
|
&ddrio_pwroff
|
2015-07-08 00:42:53 +07:00
|
|
|
&global_pwroff
|
2019-06-20 01:34:25 +07:00
|
|
|
|
|
|
|
/* Wake only */
|
|
|
|
&bt_dev_wake_awake
|
2015-07-08 00:42:53 +07:00
|
|
|
>;
|
|
|
|
pinctrl-1 = <
|
|
|
|
/* Common for sleep and wake, but no owners */
|
2019-04-12 06:21:55 +07:00
|
|
|
&ddr0_retention
|
|
|
|
&ddrio_pwroff
|
2015-07-08 00:42:53 +07:00
|
|
|
&global_pwroff
|
2019-06-20 01:34:25 +07:00
|
|
|
|
|
|
|
/* Sleep only */
|
|
|
|
&bt_dev_wake_sleep
|
2015-07-08 00:42:53 +07:00
|
|
|
>;
|
|
|
|
|
|
|
|
pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
|
|
|
|
bias-disable;
|
|
|
|
drive-strength = <8>;
|
|
|
|
};
|
|
|
|
|
|
|
|
pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
|
|
|
|
bias-pull-up;
|
|
|
|
drive-strength = <8>;
|
|
|
|
};
|
|
|
|
|
|
|
|
pcfg_output_high: pcfg-output-high {
|
|
|
|
output-high;
|
|
|
|
};
|
|
|
|
|
|
|
|
pcfg_output_low: pcfg-output-low {
|
|
|
|
output-low;
|
|
|
|
};
|
|
|
|
|
|
|
|
buttons {
|
|
|
|
pwr_key_l: pwr-key-l {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
emmc {
|
|
|
|
emmc_reset: emmc-reset {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* We run eMMC at max speed; bump up drive strength.
|
|
|
|
* We also have external pulls, so disable the internal ones.
|
|
|
|
*/
|
|
|
|
emmc_clk: emmc-clk {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <3 RK_PC2 2 &pcfg_pull_none_drv_8ma>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
emmc_cmd: emmc-cmd {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <3 RK_PC0 2 &pcfg_pull_none_drv_8ma>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
emmc_bus8: emmc-bus8 {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <3 RK_PA0 2 &pcfg_pull_none_drv_8ma>,
|
|
|
|
<3 RK_PA1 2 &pcfg_pull_none_drv_8ma>,
|
|
|
|
<3 RK_PA2 2 &pcfg_pull_none_drv_8ma>,
|
|
|
|
<3 RK_PA3 2 &pcfg_pull_none_drv_8ma>,
|
|
|
|
<3 RK_PA4 2 &pcfg_pull_none_drv_8ma>,
|
|
|
|
<3 RK_PA5 2 &pcfg_pull_none_drv_8ma>,
|
|
|
|
<3 RK_PA6 2 &pcfg_pull_none_drv_8ma>,
|
|
|
|
<3 RK_PA7 2 &pcfg_pull_none_drv_8ma>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
pmic {
|
|
|
|
pmic_int_l: pmic-int-l {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
reboot {
|
|
|
|
ap_warm_reset_h: ap-warm-reset-h {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
recovery-switch {
|
|
|
|
rec_mode_l: rec-mode-l {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
sdio0 {
|
|
|
|
wifi_enable_h: wifienable-h {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
/* NOTE: mislabelled on schematic; should be bt_enable_h */
|
|
|
|
bt_enable_l: bt-enable-l {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <4 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
2019-06-11 06:51:44 +07:00
|
|
|
bt_host_wake: bt-host-wake {
|
|
|
|
rockchip,pins = <4 RK_PD7 RK_FUNC_GPIO &pcfg_pull_down>;
|
|
|
|
};
|
|
|
|
|
2019-07-31 22:15:27 +07:00
|
|
|
bt_host_wake_l: bt-host-wake-l {
|
|
|
|
rockchip,pins = <4 RK_PD7 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
|
|
};
|
|
|
|
|
2015-07-08 00:42:53 +07:00
|
|
|
/*
|
|
|
|
* We run sdio0 at max speed; bump up drive strength.
|
|
|
|
* We also have external pulls, so disable the internal ones.
|
|
|
|
*/
|
|
|
|
sdio0_bus4: sdio0-bus4 {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <4 RK_PC4 1 &pcfg_pull_none_drv_8ma>,
|
|
|
|
<4 RK_PC5 1 &pcfg_pull_none_drv_8ma>,
|
|
|
|
<4 RK_PC6 1 &pcfg_pull_none_drv_8ma>,
|
|
|
|
<4 RK_PC7 1 &pcfg_pull_none_drv_8ma>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
sdio0_cmd: sdio0-cmd {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <4 RK_PD0 1 &pcfg_pull_none_drv_8ma>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
sdio0_clk: sdio0-clk {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <4 RK_PD1 1 &pcfg_pull_none_drv_8ma>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
2019-06-20 01:34:25 +07:00
|
|
|
|
|
|
|
/*
|
|
|
|
* These pins are only present on very new veyron boards; on
|
|
|
|
* older boards bt_dev_wake is simply always high. Note that
|
|
|
|
* gpio4_D2 is a NC on old veyron boards, so it doesn't hurt
|
|
|
|
* to map this pin everywhere
|
|
|
|
*/
|
|
|
|
bt_dev_wake_sleep: bt-dev-wake-sleep {
|
|
|
|
rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_output_low>;
|
|
|
|
};
|
|
|
|
|
|
|
|
bt_dev_wake_awake: bt-dev-wake-awake {
|
|
|
|
rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_output_high>;
|
|
|
|
};
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
|
|
|
|
tpm {
|
|
|
|
tpm_int_h: tpm-int-h {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <7 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
write-protect {
|
|
|
|
fw_wp_ap: fw-wp-ap {
|
2019-04-02 19:08:57 +07:00
|
|
|
rockchip,pins = <7 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
2015-07-08 00:42:53 +07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|