Loading...
1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Google Veyron Mickey Rev 0 board device tree source
4 *
5 * Copyright 2015 Google, Inc
6 */
7
8/dts-v1/;
9#include "rk3288-veyron.dtsi"
10
11/ {
12 model = "Google Mickey";
13 compatible = "google,veyron-mickey-rev8", "google,veyron-mickey-rev7",
14 "google,veyron-mickey-rev6", "google,veyron-mickey-rev5",
15 "google,veyron-mickey-rev4", "google,veyron-mickey-rev3",
16 "google,veyron-mickey-rev2", "google,veyron-mickey-rev1",
17 "google,veyron-mickey-rev0", "google,veyron-mickey",
18 "google,veyron", "rockchip,rk3288";
19
20 vcc_5v: vcc-5v {
21 vin-supply = <&vcc33_sys>;
22 };
23
24 vcc33_io: vcc33_io {
25 compatible = "regulator-fixed";
26 regulator-name = "vcc33_io";
27 regulator-always-on;
28 regulator-boot-on;
29 vin-supply = <&vcc33_sys>;
30 };
31};
32
33&cpu_thermal {
34 /delete-node/ trips;
35 /delete-node/ cooling-maps;
36
37 trips {
38 cpu_alert_almost_warm: cpu_alert_almost_warm {
39 temperature = <63000>; /* millicelsius */
40 hysteresis = <2000>; /* millicelsius */
41 type = "passive";
42 };
43 cpu_alert_warm: cpu_alert_warm {
44 temperature = <65000>; /* millicelsius */
45 hysteresis = <2000>; /* millicelsius */
46 type = "passive";
47 };
48 cpu_alert_almost_hot: cpu_alert_almost_hot {
49 temperature = <80000>; /* millicelsius */
50 hysteresis = <2000>; /* millicelsius */
51 type = "passive";
52 };
53 cpu_alert_hot: cpu_alert_hot {
54 temperature = <82000>; /* millicelsius */
55 hysteresis = <2000>; /* millicelsius */
56 type = "passive";
57 };
58 cpu_alert_hotter: cpu_alert_hotter {
59 temperature = <84000>; /* millicelsius */
60 hysteresis = <2000>; /* millicelsius */
61 type = "passive";
62 };
63 cpu_alert_very_hot: cpu_alert_very_hot {
64 temperature = <85000>; /* millicelsius */
65 hysteresis = <2000>; /* millicelsius */
66 type = "passive";
67 };
68 cpu_crit: cpu_crit {
69 temperature = <90000>; /* millicelsius */
70 hysteresis = <2000>; /* millicelsius */
71 type = "critical";
72 };
73 };
74
75 cooling-maps {
76 /*
77 * After 1st level, throttle the CPU down to as low as 1.4 GHz
78 * and don't let the GPU go faster than 400 MHz.
79 */
80 cpu_warm_limit_cpu {
81 trip = <&cpu_alert_warm>;
82 cooling-device = <&cpu0 THERMAL_NO_LIMIT 4>,
83 <&cpu1 THERMAL_NO_LIMIT 4>,
84 <&cpu2 THERMAL_NO_LIMIT 4>,
85 <&cpu3 THERMAL_NO_LIMIT 4>;
86 };
87 cpu_warm_limit_gpu {
88 trip = <&cpu_alert_warm>;
89 cooling-device = <&gpu 1 1>;
90 };
91
92 /*
93 * Add some discrete steps to help throttling system deal
94 * with the fact that there are two passive cooling devices:
95 * the CPU and the GPU.
96 *
97 * - 1.2 GHz - 1.0 GHz (almost hot)
98 * - 800 MHz (hot)
99 * - 800 MHz - 696 MHz (hotter)
100 * - 696 MHz - min (very hot)
101 *
102 * Note:
103 * - 800 MHz appears to be a "sweet spot" for me. I can run
104 * some pretty serious workload here and be happy.
105 * - After 696 MHz we stop lowering voltage, so throttling
106 * past there is less effective.
107 */
108 cpu_almost_hot_limit_cpu {
109 trip = <&cpu_alert_almost_hot>;
110 cooling-device = <&cpu0 5 6>, <&cpu1 5 6>, <&cpu2 5 6>,
111 <&cpu3 5 6>;
112 };
113 cpu_hot_limit_cpu {
114 trip = <&cpu_alert_hot>;
115 cooling-device = <&cpu0 7 7>, <&cpu1 7 7>, <&cpu2 7 7>,
116 <&cpu3 7 7>;
117 };
118 cpu_hotter_limit_cpu {
119 trip = <&cpu_alert_hotter>;
120 cooling-device = <&cpu0 7 8>, <&cpu1 7 8>, <&cpu2 7 8>,
121 <&cpu3 7 8>;
122 };
123 cpu_very_hot_limit_cpu {
124 trip = <&cpu_alert_very_hot>;
125 cooling-device = <&cpu0 8 THERMAL_NO_LIMIT>,
126 <&cpu1 8 THERMAL_NO_LIMIT>,
127 <&cpu2 8 THERMAL_NO_LIMIT>,
128 <&cpu3 8 THERMAL_NO_LIMIT>;
129 };
130
131 /* At very hot, don't let GPU go over 300 MHz */
132 cpu_very_hot_limit_gpu {
133 trip = <&cpu_alert_very_hot>;
134 cooling-device = <&gpu 2 2>;
135 };
136 };
137};
138
139&gpu_thermal {
140 /delete-node/ trips;
141 /delete-node/ cooling-maps;
142
143 trips {
144 gpu_alert_warmish: gpu_alert_warmish {
145 temperature = <60000>; /* millicelsius */
146 hysteresis = <2000>; /* millicelsius */
147 type = "passive";
148 };
149 gpu_alert_warm: gpu_alert_warm {
150 temperature = <65000>; /* millicelsius */
151 hysteresis = <2000>; /* millicelsius */
152 type = "passive";
153 };
154 gpu_alert_hotter: gpu_alert_hotter {
155 temperature = <84000>; /* millicelsius */
156 hysteresis = <2000>; /* millicelsius */
157 type = "passive";
158 };
159 gpu_alert_very_very_hot: gpu_alert_very_very_hot {
160 temperature = <86000>; /* millicelsius */
161 hysteresis = <2000>; /* millicelsius */
162 type = "passive";
163 };
164 gpu_crit: gpu_crit {
165 temperature = <90000>; /* millicelsius */
166 hysteresis = <2000>; /* millicelsius */
167 type = "critical";
168 };
169 };
170
171 cooling-maps {
172 /* After 1st level throttle the GPU down to as low as 400 MHz */
173 gpu_warmish_limit_gpu {
174 trip = <&gpu_alert_warmish>;
175 cooling-device = <&gpu THERMAL_NO_LIMIT 1>;
176 };
177
178 /*
179 * Slightly after we throttle the GPU, we'll also make sure that
180 * the CPU can't go faster than 1.4 GHz. Note that we won't
181 * throttle the CPU lower than 1.4 GHz due to GPU heat--we'll
182 * let the CPU do the rest itself.
183 */
184 gpu_warm_limit_cpu {
185 trip = <&gpu_alert_warm>;
186 cooling-device = <&cpu0 4 4>,
187 <&cpu1 4 4>,
188 <&cpu2 4 4>,
189 <&cpu3 4 4>;
190 };
191
192 /* When hot, GPU goes down to 300 MHz */
193 gpu_hotter_limit_gpu {
194 trip = <&gpu_alert_hotter>;
195 cooling-device = <&gpu 2 2>;
196 };
197
198 /* When really hot, don't let GPU go _above_ 300 MHz */
199 gpu_very_very_hot_limit_gpu {
200 trip = <&gpu_alert_very_very_hot>;
201 cooling-device = <&gpu 2 THERMAL_NO_LIMIT>;
202 };
203 };
204};
205
206&i2c2 {
207 status = "disabled";
208};
209
210&i2c4 {
211 status = "disabled";
212};
213
214&i2s {
215 status = "okay";
216};
217
218&rk808 {
219 pinctrl-names = "default";
220 pinctrl-0 = <&pmic_int_l &dvs_1 &dvs_2>;
221 dvs-gpios = <&gpio7 RK_PB4 GPIO_ACTIVE_HIGH>,
222 <&gpio7 RK_PB7 GPIO_ACTIVE_HIGH>;
223
224 /delete-property/ vcc6-supply;
225 /delete-property/ vcc12-supply;
226
227 vcc11-supply = <&vcc33_sys>;
228
229 regulators {
230 /* vcc33_io is sourced directly from vcc33_sys */
231 /delete-node/ LDO_REG1;
232 /delete-node/ LDO_REG7;
233
234 /* This is not a pwren anymore, but the real power supply */
235 vdd10_lcd: LDO_REG7 {
236 regulator-always-on;
237 regulator-boot-on;
238 regulator-min-microvolt = <1000000>;
239 regulator-max-microvolt = <1000000>;
240 regulator-name = "vdd10_lcd";
241 regulator-suspend-mem-disabled;
242 };
243
244 vcc18_lcd: LDO_REG8 {
245 regulator-always-on;
246 regulator-boot-on;
247 regulator-min-microvolt = <1800000>;
248 regulator-max-microvolt = <1800000>;
249 regulator-name = "vcc18_lcd";
250 regulator-suspend-mem-disabled;
251 };
252 };
253};
254
255&gpio0 {
256 gpio-line-names = "PMIC_SLEEP_AP",
257 "",
258 "",
259 "",
260 "PMIC_INT_L",
261 "POWER_BUTTON_L",
262 "",
263 "",
264
265 "",
266 /*
267 * RECOVERY_SW_L is Chrome OS ABI. Schematics call
268 * it REC_MODE_L.
269 */
270 "RECOVERY_SW_L",
271 "OT_RESET",
272 "",
273 "",
274 "AP_WARM_RESET_H",
275 "",
276 "I2C0_SDA_PMIC",
277
278 "I2C0_SCL_PMIC",
279 "",
280 "nFALUT";
281};
282
283&gpio2 {
284 gpio-line-names = "CONFIG0",
285 "CONFIG1",
286 "CONFIG2",
287 "",
288 "",
289 "",
290 "",
291 "CONFIG3",
292
293 "",
294 "EMMC_RST_L";
295};
296
297&gpio3 {
298 gpio-line-names = "FLASH0_D0",
299 "FLASH0_D1",
300 "FLASH0_D2",
301 "FLASH0_D3",
302 "FLASH0_D4",
303 "FLASH0_D5",
304 "FLASH0_D6",
305 "FLASH0_D7",
306
307 "",
308 "",
309 "",
310 "",
311 "",
312 "",
313 "",
314 "",
315
316 "FLASH0_CS2/EMMC_CMD",
317 "",
318 "FLASH0_DQS/EMMC_CLKO";
319};
320
321&gpio4 {
322 gpio-line-names = "",
323 "",
324 "",
325 "",
326 "",
327 "",
328 "",
329 "",
330
331 "",
332 "",
333 "",
334 "",
335 "",
336 "",
337 "",
338 "",
339
340 "UART0_RXD",
341 "UART0_TXD",
342 "UART0_CTS_L",
343 "UART0_RTS_L",
344 "SDIO0_D0",
345 "SDIO0_D1",
346 "SDIO0_D2",
347 "SDIO0_D3",
348
349 "SDIO0_CMD",
350 "SDIO0_CLK",
351 "BT_DEV_WAKE",
352 "",
353 "WIFI_ENABLE_H",
354 "BT_ENABLE_L",
355 "WIFI_HOST_WAKE",
356 "BT_HOST_WAKE";
357};
358
359&gpio7 {
360 gpio-line-names = "",
361 "PWM_LOG",
362 "",
363 "",
364 "TPM_INT_H",
365 "SDMMC_DET_L",
366 /*
367 * AP_FLASH_WP_L is Chrome OS ABI. Schematics call
368 * it FW_WP_AP.
369 */
370 "AP_FLASH_WP_L",
371 "",
372
373 "CPU_NMI",
374 "DVSOK",
375 "HDMI_WAKE",
376 "POWER_HDMI_ON",
377 "DVS1",
378 "",
379 "",
380 "DVS2",
381
382 "HDMI_CEC",
383 "",
384 "",
385 "I2C5_SDA_HDMI",
386 "I2C5_SCL_HDMI",
387 "",
388 "UART2_RXD",
389 "UART2_TXD";
390};
391
392&gpio8 {
393 gpio-line-names = "RAM_ID0",
394 "RAM_ID1",
395 "RAM_ID2",
396 "RAM_ID3",
397 "I2C1_SDA_TPM",
398 "I2C1_SCL_TPM",
399 "SPI2_CLK",
400 "SPI2_CS0",
401
402 "SPI2_RXD",
403 "SPI2_TXD";
404};
405
406&pinctrl {
407 hdmi {
408 power_hdmi_on: power-hdmi-on {
409 rockchip,pins = <7 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
410 };
411 };
412
413 pmic {
414 dvs_1: dvs-1 {
415 rockchip,pins = <7 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
416 };
417
418 dvs_2: dvs-2 {
419 rockchip,pins = <7 RK_PB7 RK_FUNC_GPIO &pcfg_pull_down>;
420 };
421 };
422};
423
424&usb_host0_ehci {
425 status = "disabled";
426};
427
428&usb_host1 {
429 status = "disabled";
430};
431
432&vcc50_hdmi {
433 enable-active-high;
434 gpio = <&gpio7 RK_PB3 GPIO_ACTIVE_HIGH>;
435 pinctrl-names = "default";
436 pinctrl-0 = <&power_hdmi_on>;
437};
1/*
2 * Google Veyron Mickey Rev 0 board device tree source
3 *
4 * Copyright 2015 Google, Inc
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This file is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This file is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * Or, alternatively,
22 *
23 * b) Permission is hereby granted, free of charge, to any person
24 * obtaining a copy of this software and associated documentation
25 * files (the "Software"), to deal in the Software without
26 * restriction, including without limitation the rights to use,
27 * copy, modify, merge, publish, distribute, sublicense, and/or
28 * sell copies of the Software, and to permit persons to whom the
29 * Software is furnished to do so, subject to the following
30 * conditions:
31 *
32 * The above copyright notice and this permission notice shall be
33 * included in all copies or substantial portions of the Software.
34 *
35 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
37 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
39 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
40 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
41 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
42 * OTHER DEALINGS IN THE SOFTWARE.
43 */
44
45/dts-v1/;
46#include "rk3288-veyron.dtsi"
47
48/ {
49 model = "Google Mickey";
50 compatible = "google,veyron-mickey-rev8", "google,veyron-mickey-rev7",
51 "google,veyron-mickey-rev6", "google,veyron-mickey-rev5",
52 "google,veyron-mickey-rev4", "google,veyron-mickey-rev3",
53 "google,veyron-mickey-rev2", "google,veyron-mickey-rev1",
54 "google,veyron-mickey-rev0", "google,veyron-mickey",
55 "google,veyron", "rockchip,rk3288";
56
57 vcc_5v: vcc-5v {
58 vin-supply = <&vcc33_sys>;
59 };
60
61 vcc33_io: vcc33_io {
62 compatible = "regulator-fixed";
63 regulator-name = "vcc33_io";
64 regulator-always-on;
65 regulator-boot-on;
66 vin-supply = <&vcc33_sys>;
67 };
68};
69
70&cpu_thermal {
71 /delete-node/ trips;
72 /delete-node/ cooling-maps;
73
74 trips {
75 cpu_alert_almost_warm: cpu_alert_almost_warm {
76 temperature = <63000>; /* millicelsius */
77 hysteresis = <2000>; /* millicelsius */
78 type = "passive";
79 };
80 cpu_alert_warm: cpu_alert_warm {
81 temperature = <65000>; /* millicelsius */
82 hysteresis = <2000>; /* millicelsius */
83 type = "passive";
84 };
85 cpu_alert_almost_hot: cpu_alert_almost_hot {
86 temperature = <80000>; /* millicelsius */
87 hysteresis = <2000>; /* millicelsius */
88 type = "passive";
89 };
90 cpu_alert_hot: cpu_alert_hot {
91 temperature = <82000>; /* millicelsius */
92 hysteresis = <2000>; /* millicelsius */
93 type = "passive";
94 };
95 cpu_alert_hotter: cpu_alert_hotter {
96 temperature = <84000>; /* millicelsius */
97 hysteresis = <2000>; /* millicelsius */
98 type = "passive";
99 };
100 cpu_alert_very_hot: cpu_alert_very_hot {
101 temperature = <85000>; /* millicelsius */
102 hysteresis = <2000>; /* millicelsius */
103 type = "passive";
104 };
105 cpu_crit: cpu_crit {
106 temperature = <90000>; /* millicelsius */
107 hysteresis = <2000>; /* millicelsius */
108 type = "critical";
109 };
110 };
111
112 cooling-maps {
113 /*
114 * After 1st level, throttle the CPU down to as low as 1.4 GHz
115 * and don't let the GPU go faster than 400 MHz. Note that we
116 * won't throttle the GPU lower than 400 MHz due to CPU
117 * heat--we'll let the GPU do the rest itself.
118 */
119 cpu_warm_limit_cpu {
120 trip = <&cpu_alert_warm>;
121 cooling-device =
122 <&cpu0 THERMAL_NO_LIMIT 4>;
123 };
124
125 /*
126 * Add some discrete steps to help throttling system deal
127 * with the fact that there are two passive cooling devices:
128 * the CPU and the GPU.
129 *
130 * - 1.2 GHz - 1.0 GHz (almost hot)
131 * - 800 MHz (hot)
132 * - 800 MHz - 696 MHz (hotter)
133 * - 696 MHz - min (very hot)
134 *
135 * Note:
136 * - 800 MHz appears to be a "sweet spot" for me. I can run
137 * some pretty serious workload here and be happy.
138 * - After 696 MHz we stop lowering voltage, so throttling
139 * past there is less effective.
140 */
141 cpu_almost_hot_limit_cpu {
142 trip = <&cpu_alert_almost_hot>;
143 cooling-device =
144 <&cpu0 5 6>;
145 };
146 cpu_hot_limit_cpu {
147 trip = <&cpu_alert_hot>;
148 cooling-device =
149 <&cpu0 7 7>;
150 };
151 cpu_hotter_limit_cpu {
152 trip = <&cpu_alert_hotter>;
153 cooling-device =
154 <&cpu0 7 8>;
155 };
156 cpu_very_hot_limit_cpu {
157 trip = <&cpu_alert_very_hot>;
158 cooling-device =
159 <&cpu0 8 THERMAL_NO_LIMIT>;
160 };
161 };
162};
163
164&emmc {
165 /delete-property/mmc-hs200-1_8v;
166};
167
168&i2c2 {
169 status = "disabled";
170};
171
172&i2c4 {
173 status = "disabled";
174};
175
176&i2s {
177 status = "okay";
178 clock-names = "i2s_hclk", "i2s_clk", "i2s_clk_out";
179 clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>, <&cru SCLK_I2S0_OUT>;
180};
181
182&rk808 {
183 pinctrl-names = "default";
184 pinctrl-0 = <&pmic_int_l &dvs_1 &dvs_2>;
185 dvs-gpios = <&gpio7 12 GPIO_ACTIVE_HIGH>,
186 <&gpio7 15 GPIO_ACTIVE_HIGH>;
187
188 /delete-property/ vcc6-supply;
189 /delete-property/ vcc12-supply;
190
191 vcc11-supply = <&vcc33_sys>;
192
193 regulators {
194 /* vcc33_io is sourced directly from vcc33_sys */
195 /delete-node/ LDO_REG1;
196 /delete-node/ LDO_REG7;
197
198 /* This is not a pwren anymore, but the real power supply */
199 vdd10_lcd: LDO_REG7 {
200 regulator-always-on;
201 regulator-boot-on;
202 regulator-min-microvolt = <1000000>;
203 regulator-max-microvolt = <1000000>;
204 regulator-name = "vdd10_lcd";
205 regulator-suspend-mem-disabled;
206 };
207
208 vcc18_lcd: LDO_REG8 {
209 regulator-always-on;
210 regulator-boot-on;
211 regulator-min-microvolt = <1800000>;
212 regulator-max-microvolt = <1800000>;
213 regulator-name = "vcc18_lcd";
214 regulator-suspend-mem-disabled;
215 };
216 };
217};
218
219&pinctrl {
220 hdmi {
221 power_hdmi_on: power-hdmi-on {
222 rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>;
223 };
224 };
225
226 pmic {
227 dvs_1: dvs-1 {
228 rockchip,pins = <7 12 RK_FUNC_GPIO &pcfg_pull_down>;
229 };
230
231 dvs_2: dvs-2 {
232 rockchip,pins = <7 15 RK_FUNC_GPIO &pcfg_pull_down>;
233 };
234 };
235};
236
237&usb_host0_ehci {
238 status = "disabled";
239};
240
241&usb_host1 {
242 status = "disabled";
243};
244
245&vcc50_hdmi {
246 enable-active-high;
247 gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
248 pinctrl-names = "default";
249 pinctrl-0 = <&power_hdmi_on>;
250};