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-chromebook.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&dmc {
165	rockchip,pctl-timing = <0x215 0xc8 0x0 0x35 0x26 0x2 0x70 0x2000d
166		0x6 0x0 0x8 0x4 0x17 0x24 0xd 0x6
167		0x4 0x8 0x4 0x76 0x4 0x0 0x30 0x0
168		0x1 0x2 0x2 0x4 0x0 0x0 0xc0 0x4
169		0x8 0x1f4>;
170	rockchip,phy-timing = <0x48d7dd93 0x187008d8 0x121076
171		0x0 0xc3 0x6 0x2>;
172	rockchip,sdram-params = <0x20d266a4 0x5b6 2 533000000 6 9 1>;
173};
174
175&emmc {
176	/delete-property/mmc-hs200-1_8v;
177};
178
179&i2c2 {
180	status = "disabled";
181};
182
183&i2c4 {
184	status = "disabled";
185};
186
187&i2s {
188	status = "okay";
189	clock-names = "i2s_hclk", "i2s_clk", "i2s_clk_out";
190	clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>, <&cru SCLK_I2S0_OUT>;
191};
192
193&rk808 {
194	pinctrl-names = "default";
195	pinctrl-0 = <&pmic_int_l &dvs_1 &dvs_2>;
196	dvs-gpios = <&gpio7 12 GPIO_ACTIVE_HIGH>,
197		    <&gpio7 15 GPIO_ACTIVE_HIGH>;
198
199	/delete-property/ vcc6-supply;
200	/delete-property/ vcc12-supply;
201
202	vcc11-supply = <&vcc33_sys>;
203
204	regulators {
205		/* vcc33_io is sourced directly from vcc33_sys */
206		/delete-node/ LDO_REG1;
207		/delete-node/ LDO_REG7;
208
209		/* This is not a pwren anymore, but the real power supply */
210		vdd10_lcd: LDO_REG7 {
211			regulator-always-on;
212			regulator-boot-on;
213			regulator-min-microvolt = <1000000>;
214			regulator-max-microvolt = <1000000>;
215			regulator-name = "vdd10_lcd";
216			regulator-suspend-mem-disabled;
217		};
218
219		vcc18_lcd: LDO_REG8 {
220			regulator-always-on;
221			regulator-boot-on;
222			regulator-min-microvolt = <1800000>;
223			regulator-max-microvolt = <1800000>;
224			regulator-name = "vcc18_lcd";
225			regulator-suspend-mem-disabled;
226		};
227	};
228};
229
230&pinctrl {
231	hdmi {
232		power_hdmi_on: power-hdmi-on {
233			rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>;
234		};
235	};
236
237	pmic {
238		dvs_1: dvs-1 {
239			rockchip,pins = <7 12 RK_FUNC_GPIO &pcfg_pull_down>;
240		};
241
242		dvs_2: dvs-2 {
243			rockchip,pins = <7 15 RK_FUNC_GPIO &pcfg_pull_down>;
244		};
245	};
246};
247
248&sdmmc {
249	status = "disabled";
250};
251
252&sdio0 {
253	status = "disabled";
254};
255
256&sdmmc {
257	status = "disabled";
258};
259
260&spi0 {
261	status = "disabled";
262};
263
264&usb_host0_ehci {
265	status = "disabled";
266};
267
268&usb_host1 {
269	status = "disabled";
270};
271
272&vcc50_hdmi {
273	enable-active-high;
274	gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
275	pinctrl-names = "default";
276	pinctrl-0 = <&power_hdmi_on>;
277};
278