Linux Audio

Check our new training course

Loading...
v6.2
  1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2/*
  3 * Copyright (c) 2013 Heiko Stuebner <heiko@sntech.de>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  4 */
  5
  6/dts-v1/;
  7#include <dt-bindings/input/input.h>
  8#include "rk3188.dtsi"
  9
 10/ {
 11	model = "Radxa Rock";
 12	compatible = "radxa,rock", "rockchip,rk3188";
 13
 14	aliases {
 15		mmc0 = &mmc0;
 16	};
 17
 18	memory@60000000 {
 19		device_type = "memory";
 20		reg = <0x60000000 0x80000000>;
 21	};
 22
 23	gpio-keys {
 24		compatible = "gpio-keys";
 25		autorepeat;
 26
 27		key-power {
 28			gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
 29			linux,code = <KEY_POWER>;
 30			label = "GPIO Key Power";
 31			linux,input-type = <1>;
 32			wakeup-source;
 33			debounce-interval = <100>;
 34		};
 35	};
 36
 37	gpio-leds {
 38		compatible = "gpio-leds";
 39
 40		green_led: led-0 {
 41			label = "rock:green:user1";
 42			gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_LOW>;
 43			default-state = "off";
 44		};
 45
 46		blue_led: led-1 {
 47			label = "rock:blue:user2";
 48			gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>;
 49			default-state = "off";
 50		};
 51
 52		sleep_led: led-2 {
 53			label = "rock:red:power";
 54			gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
 55			default-state = "off";
 56		};
 57	};
 58
 59	sound {
 60		compatible = "simple-audio-card";
 61		simple-audio-card,name = "SPDIF";
 62
 63		simple-audio-card,dai-link@1 {  /* S/PDIF - S/PDIF */
 64			cpu { sound-dai = <&spdif>; };
 65			codec { sound-dai = <&spdif_out>; };
 66		};
 67	};
 68
 69	spdif_out: spdif-out {
 70		compatible = "linux,spdif-dit";
 71		#sound-dai-cells = <0>;
 72	};
 73
 74	ir_recv: ir-receiver {
 75		compatible = "gpio-ir-receiver";
 76		gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
 77		pinctrl-names = "default";
 78		pinctrl-0 = <&ir_recv_pin>;
 79	};
 80
 81	vcc_otg: usb-otg-regulator {
 82		compatible = "regulator-fixed";
 83		enable-active-high;
 84		gpio = <&gpio2 RK_PD7 GPIO_ACTIVE_HIGH>;
 85		pinctrl-names = "default";
 86		pinctrl-0 = <&otg_vbus_drv>;
 87		regulator-name = "otg-vbus";
 88		regulator-min-microvolt = <5000000>;
 89		regulator-max-microvolt = <5000000>;
 90		regulator-always-on;
 91		regulator-boot-on;
 92	};
 93
 94	vcc_sd0: sdmmc-regulator {
 95		compatible = "regulator-fixed";
 96		regulator-name = "sdmmc-supply";
 97		regulator-min-microvolt = <3300000>;
 98		regulator-max-microvolt = <3300000>;
 99		gpio = <&gpio3 RK_PA1 GPIO_ACTIVE_LOW>;
100		pinctrl-names = "default";
101		pinctrl-0 = <&sdmmc_pwr>;
102		startup-delay-us = <100000>;
103		vin-supply = <&vcc_io>;
104	};
105
106	vcc_host: usb-host-regulator {
107		compatible = "regulator-fixed";
108		enable-active-high;
109		gpio = <&gpio0 RK_PA3 GPIO_ACTIVE_HIGH>;
110		pinctrl-names = "default";
111		pinctrl-0 = <&host_vbus_drv>;
112		regulator-name = "host-pwr";
113		regulator-min-microvolt = <5000000>;
114		regulator-max-microvolt = <5000000>;
115		regulator-always-on;
116		regulator-boot-on;
117	};
118
119	vsys: vsys-regulator {
120		compatible = "regulator-fixed";
121		regulator-name = "vsys";
122		regulator-min-microvolt = <5000000>;
123		regulator-max-microvolt = <5000000>;
124		regulator-boot-on;
125	};
126};
127
128&emac {
129	phy = <&phy0>;
130	phy-supply = <&vcc_rmii>;
131	pinctrl-names = "default";
132	pinctrl-0 = <&emac_xfer>, <&emac_mdio>, <&phy_int>;
133	status = "okay";
134
135	mdio {
136		#address-cells = <1>;
137		#size-cells = <0>;
138
139		phy0: ethernet-phy@0 {
140			reg = <0>;
141			interrupt-parent = <&gpio3>;
142			interrupts = <RK_PD2 IRQ_TYPE_LEVEL_LOW>;
143		};
144	};
145};
146
147&cpu0 {
148	cpu-supply = <&vdd_arm>;
149};
150
151&cpu1 {
152	cpu-supply = <&vdd_arm>;
153};
154
155&cpu2 {
156	cpu-supply = <&vdd_arm>;
157};
158
159&cpu3 {
160	cpu-supply = <&vdd_arm>;
161};
162
163&gpu {
164	status = "okay";
165};
166
167&i2c1 {
168	status = "okay";
169	clock-frequency = <400000>;
170
171	rtc@51 {
172		compatible = "haoyu,hym8563";
173		reg = <0x51>;
174		interrupt-parent = <&gpio0>;
175		interrupts = <RK_PB5 IRQ_TYPE_EDGE_FALLING>;
176		pinctrl-names = "default";
177		pinctrl-0 = <&rtc_int>;
178		#clock-cells = <0>;
179		clock-output-names = "xin32k";
180	};
181
182	act8846: act8846@5a {
183		compatible = "active-semi,act8846";
184		reg = <0x5a>;
185		status = "okay";
186		system-power-controller;
187
188		pinctrl-names = "default";
189		pinctrl-0 = <&act8846_dvs0_ctl>;
190
191		vp1-supply = <&vsys>;
192		vp2-supply = <&vsys>;
193		vp3-supply = <&vsys>;
194		vp4-supply = <&vsys>;
195		inl1-supply = <&vcc_io>;
196		inl2-supply = <&vsys>;
197		inl3-supply = <&vsys>;
198
199		regulators {
200			vcc_ddr: REG1 {
201				regulator-name = "VCC_DDR";
202				regulator-min-microvolt = <1200000>;
203				regulator-max-microvolt = <1200000>;
204				regulator-always-on;
205			};
206
207			vdd_log: REG2 {
208				regulator-name = "VDD_LOG";
209				regulator-min-microvolt = <1000000>;
210				regulator-max-microvolt = <1000000>;
211				regulator-always-on;
212			};
213
214			vdd_arm: REG3 {
215				regulator-name = "VDD_ARM";
216				regulator-min-microvolt = <875000>;
217				regulator-max-microvolt = <1350000>;
218				regulator-always-on;
219			};
220
221			vcc_io: REG4 {
222				regulator-name = "VCC_IO";
223				regulator-min-microvolt = <3300000>;
224				regulator-max-microvolt = <3300000>;
225				regulator-always-on;
226			};
227
228			vdd_10: REG5 {
229				regulator-name = "VDD_10";
230				regulator-min-microvolt = <1000000>;
231				regulator-max-microvolt = <1000000>;
232				regulator-always-on;
233			};
234
235			vdd_hdmi: REG6 {
236				regulator-name = "VDD_HDMI";
237				regulator-min-microvolt = <2500000>;
238				regulator-max-microvolt = <2500000>;
239				regulator-always-on;
240			};
241
242			vcc18: REG7 {
243				regulator-name = "VCC_18";
244				regulator-min-microvolt = <1800000>;
245				regulator-max-microvolt = <1800000>;
246				regulator-always-on;
247			};
248
249			vcca_33: REG8 {
250				regulator-name = "VCCA_33";
251				regulator-min-microvolt = <3300000>;
252				regulator-max-microvolt = <3300000>;
253				regulator-always-on;
254			};
255
256			vcc_rmii: REG9 {
257				regulator-name = "VCC_RMII";
258				regulator-min-microvolt = <3300000>;
259				regulator-max-microvolt = <3300000>;
260			};
261
262			vccio_wl: REG10 {
263				regulator-name = "VCCIO_WL";
264				regulator-min-microvolt = <3300000>;
265				regulator-max-microvolt = <3300000>;
266				regulator-always-on;
267			};
268
269			vcc_18: REG11 {
270				regulator-name = "VCC18_IO";
271				regulator-min-microvolt = <1800000>;
272				regulator-max-microvolt = <1800000>;
273				regulator-always-on;
274			};
275
276			vcc28: REG12 {
277				regulator-name = "VCC_28";
278				regulator-min-microvolt = <2800000>;
279				regulator-max-microvolt = <2800000>;
280				regulator-always-on;
281			};
282		};
283	};
284};
285
286&mmc0 {
 
287	status = "okay";
288	pinctrl-names = "default";
289	pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
290	vmmc-supply = <&vcc_sd0>;
291
292	bus-width = <4>;
293	cap-mmc-highspeed;
294	cap-sd-highspeed;
295	disable-wp;
296};
297
298&pwm1 {
299	status = "okay";
300};
301
302&pwm2 {
303	status = "okay";
304};
305
306&pwm3 {
307	status = "okay";
308};
309
310&pinctrl {
311	pcfg_output_low: pcfg-output-low {
312		output-low;
313	};
314
315	act8846 {
316		act8846_dvs0_ctl: act8846-dvs0-ctl {
317			rockchip,pins = <3 RK_PD3 RK_FUNC_GPIO &pcfg_output_low>;
318		};
319	};
320
321	hym8563 {
322		rtc_int: rtc-int {
323			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
324		};
325	};
326
327	lan8720a  {
328		phy_int: phy-int {
329			rockchip,pins = <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>;
330		};
331	};
332
333	ir-receiver {
334		ir_recv_pin: ir-recv-pin {
335			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
336		};
337	};
338
339	sd0 {
340		sdmmc_pwr: sdmmc-pwr {
341			rockchip,pins = <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
342		};
343	};
344
345	usb {
346		host_vbus_drv: host-vbus-drv {
347			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
348		};
349		otg_vbus_drv: otg-vbus-drv {
350			rockchip,pins = <2 RK_PD7 RK_FUNC_GPIO &pcfg_pull_none>;
351		};
352	};
353};
354
355&spdif {
356	status = "okay";
357};
358
359&uart0 {
360	status = "okay";
361};
362
363&uart1 {
364	status = "okay";
365};
366
367&uart2 {
368	status = "okay";
369};
370
371&uart3 {
372	status = "okay";
373};
374
375&usbphy {
376	status = "okay";
377};
378
379&usb_host {
380	status = "okay";
381};
382
383&usb_otg {
384	status = "okay";
385};
386
387&wdt {
388	status = "okay";
389};
v4.10.11
 
  1/*
  2 * Copyright (c) 2013 Heiko Stuebner <heiko@sntech.de>
  3 *
  4 * This file is dual-licensed: you can use it either under the terms
  5 * of the GPL or the X11 license, at your option. Note that this dual
  6 * licensing only applies to this file, and not this project as a
  7 * whole.
  8 *
  9 *  a) This file is free software; you can redistribute it and/or
 10 *     modify it under the terms of the GNU General Public License as
 11 *     published by the Free Software Foundation; either version 2 of the
 12 *     License, or (at your option) any later version.
 13 *
 14 *     This file is distributed in the hope that it will be useful,
 15 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 16 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 17 *     GNU General Public License for more details.
 18 *
 19 * Or, alternatively,
 20 *
 21 *  b) Permission is hereby granted, free of charge, to any person
 22 *     obtaining a copy of this software and associated documentation
 23 *     files (the "Software"), to deal in the Software without
 24 *     restriction, including without limitation the rights to use,
 25 *     copy, modify, merge, publish, distribute, sublicense, and/or
 26 *     sell copies of the Software, and to permit persons to whom the
 27 *     Software is furnished to do so, subject to the following
 28 *     conditions:
 29 *
 30 *     The above copyright notice and this permission notice shall be
 31 *     included in all copies or substantial portions of the Software.
 32 *
 33 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 34 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 35 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 36 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 37 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 38 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 39 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 40 *     OTHER DEALINGS IN THE SOFTWARE.
 41 */
 42
 43/dts-v1/;
 44#include <dt-bindings/input/input.h>
 45#include "rk3188.dtsi"
 46
 47/ {
 48	model = "Radxa Rock";
 49	compatible = "radxa,rock", "rockchip,rk3188";
 50
 
 
 
 
 51	memory@60000000 {
 52		device_type = "memory";
 53		reg = <0x60000000 0x80000000>;
 54	};
 55
 56	gpio-keys {
 57		compatible = "gpio-keys";
 58		autorepeat;
 59
 60		power {
 61			gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
 62			linux,code = <KEY_POWER>;
 63			label = "GPIO Key Power";
 64			linux,input-type = <1>;
 65			wakeup-source;
 66			debounce-interval = <100>;
 67		};
 68	};
 69
 70	gpio-leds {
 71		compatible = "gpio-leds";
 72
 73		green {
 74			label = "rock:green:user1";
 75			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
 76			default-state = "off";
 77		};
 78
 79		blue {
 80			label = "rock:blue:user2";
 81			gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
 82			default-state = "off";
 83		};
 84
 85		sleep {
 86			label = "rock:red:power";
 87			gpios = <&gpio0 15 0>;
 88			default-state = "off";
 89		};
 90	};
 91
 92	sound {
 93		compatible = "simple-audio-card";
 94		simple-audio-card,name = "SPDIF";
 95
 96		simple-audio-card,dai-link@1 {  /* S/PDIF - S/PDIF */
 97			cpu { sound-dai = <&spdif>; };
 98			codec { sound-dai = <&spdif_out>; };
 99		};
100	};
101
102	spdif_out: spdif-out {
103		compatible = "linux,spdif-dit";
104		#sound-dai-cells = <0>;
105	};
106
107	ir_recv: gpio-ir-receiver {
108		compatible = "gpio-ir-receiver";
109		gpios = <&gpio0 10 1>;
110		pinctrl-names = "default";
111		pinctrl-0 = <&ir_recv_pin>;
112	};
113
114	vcc_otg: usb-otg-regulator {
115		compatible = "regulator-fixed";
116		enable-active-high;
117		gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
118		pinctrl-names = "default";
119		pinctrl-0 = <&otg_vbus_drv>;
120		regulator-name = "otg-vbus";
121		regulator-min-microvolt = <5000000>;
122		regulator-max-microvolt = <5000000>;
123		regulator-always-on;
124		regulator-boot-on;
125	};
126
127	vcc_sd0: sdmmc-regulator {
128		compatible = "regulator-fixed";
129		regulator-name = "sdmmc-supply";
130		regulator-min-microvolt = <3300000>;
131		regulator-max-microvolt = <3300000>;
132		gpio = <&gpio3 1 GPIO_ACTIVE_LOW>;
 
 
133		startup-delay-us = <100000>;
134		vin-supply = <&vcc_io>;
135	};
136
137	vcc_host: usb-host-regulator {
138		compatible = "regulator-fixed";
139		enable-active-high;
140		gpio = <&gpio0 3 GPIO_ACTIVE_HIGH>;
141		pinctrl-names = "default";
142		pinctrl-0 = <&host_vbus_drv>;
143		regulator-name = "host-pwr";
144		regulator-min-microvolt = <5000000>;
145		regulator-max-microvolt = <5000000>;
146		regulator-always-on;
147		regulator-boot-on;
148	};
149
150	vsys: vsys-regulator {
151		compatible = "regulator-fixed";
152		regulator-name = "vsys";
153		regulator-min-microvolt = <5000000>;
154		regulator-max-microvolt = <5000000>;
155		regulator-boot-on;
156	};
157};
158
159&emac {
160	status = "okay";
161
162	pinctrl-names = "default";
163	pinctrl-0 = <&emac_xfer>, <&emac_mdio>, <&phy_int>;
 
164
165	phy = <&phy0>;
166	phy-supply = <&vcc_rmii>;
167
168	phy0: ethernet-phy@0 {
169		reg = <0>;
170		interrupt-parent = <&gpio3>;
171		interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
 
 
172	};
173};
174
175&cpu0 {
176	cpu0-supply = <&vdd_arm>;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177};
178
179&i2c1 {
180	status = "okay";
181	clock-frequency = <400000>;
182
183	rtc@51 {
184		compatible = "haoyu,hym8563";
185		reg = <0x51>;
186		interrupt-parent = <&gpio0>;
187		interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
188		pinctrl-names = "default";
189		pinctrl-0 = <&rtc_int>;
190		#clock-cells = <0>;
191		clock-output-names = "xin32k";
192	};
193
194	act8846: act8846@5a {
195		compatible = "active-semi,act8846";
196		reg = <0x5a>;
197		status = "okay";
198		system-power-controller;
199
200		pinctrl-names = "default";
201		pinctrl-0 = <&act8846_dvs0_ctl>;
202
203		vp1-supply = <&vsys>;
204		vp2-supply = <&vsys>;
205		vp3-supply = <&vsys>;
206		vp4-supply = <&vsys>;
207		inl1-supply = <&vcc_io>;
208		inl2-supply = <&vsys>;
209		inl3-supply = <&vsys>;
210
211		regulators {
212			vcc_ddr: REG1 {
213				regulator-name = "VCC_DDR";
214				regulator-min-microvolt = <1200000>;
215				regulator-max-microvolt = <1200000>;
216				regulator-always-on;
217			};
218
219			vdd_log: REG2 {
220				regulator-name = "VDD_LOG";
221				regulator-min-microvolt = <1000000>;
222				regulator-max-microvolt = <1000000>;
223				regulator-always-on;
224			};
225
226			vdd_arm: REG3 {
227				regulator-name = "VDD_ARM";
228				regulator-min-microvolt = <875000>;
229				regulator-max-microvolt = <1350000>;
230				regulator-always-on;
231			};
232
233			vcc_io: REG4 {
234				regulator-name = "VCC_IO";
235				regulator-min-microvolt = <3300000>;
236				regulator-max-microvolt = <3300000>;
237				regulator-always-on;
238			};
239
240			vdd_10: REG5 {
241				regulator-name = "VDD_10";
242				regulator-min-microvolt = <1000000>;
243				regulator-max-microvolt = <1000000>;
244				regulator-always-on;
245			};
246
247			vdd_hdmi: REG6 {
248				regulator-name = "VDD_HDMI";
249				regulator-min-microvolt = <2500000>;
250				regulator-max-microvolt = <2500000>;
251				regulator-always-on;
252			};
253
254			vcc18: REG7 {
255				regulator-name = "VCC_18";
256				regulator-min-microvolt = <1800000>;
257				regulator-max-microvolt = <1800000>;
258				regulator-always-on;
259			};
260
261			vcca_33: REG8 {
262				regulator-name = "VCCA_33";
263				regulator-min-microvolt = <3300000>;
264				regulator-max-microvolt = <3300000>;
265				regulator-always-on;
266			};
267
268			vcc_rmii: REG9 {
269				regulator-name = "VCC_RMII";
270				regulator-min-microvolt = <3300000>;
271				regulator-max-microvolt = <3300000>;
272			};
273
274			vccio_wl: REG10 {
275				regulator-name = "VCCIO_WL";
276				regulator-min-microvolt = <3300000>;
277				regulator-max-microvolt = <3300000>;
278				regulator-always-on;
279			};
280
281			vcc_18: REG11 {
282				regulator-name = "VCC18_IO";
283				regulator-min-microvolt = <1800000>;
284				regulator-max-microvolt = <1800000>;
285				regulator-always-on;
286			};
287
288			vcc28: REG12 {
289				regulator-name = "VCC_28";
290				regulator-min-microvolt = <2800000>;
291				regulator-max-microvolt = <2800000>;
292				regulator-always-on;
293			};
294		};
295	};
296};
297
298&mmc0 {
299	num-slots = <1>;
300	status = "okay";
301	pinctrl-names = "default";
302	pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
303	vmmc-supply = <&vcc_sd0>;
304
305	bus-width = <4>;
306	cap-mmc-highspeed;
307	cap-sd-highspeed;
308	disable-wp;
309};
310
311&pwm1 {
312	status = "okay";
313};
314
315&pwm2 {
316	status = "okay";
317};
318
319&pwm3 {
320	status = "okay";
321};
322
323&pinctrl {
324	pcfg_output_low: pcfg-output-low {
325		output-low;
326	};
327
328	act8846 {
329		act8846_dvs0_ctl: act8846-dvs0-ctl {
330			rockchip,pins = <RK_GPIO3 27 RK_FUNC_GPIO &pcfg_output_low>;
331		};
332	};
333
334	hym8563 {
335		rtc_int: rtc-int {
336			rockchip,pins = <RK_GPIO0 0 RK_FUNC_GPIO &pcfg_pull_up>;
337		};
338	};
339
340	lan8720a  {
341		phy_int: phy-int {
342			rockchip,pins = <RK_GPIO3 26 RK_FUNC_GPIO &pcfg_pull_up>;
343		};
344	};
345
346	ir-receiver {
347		ir_recv_pin: ir-recv-pin {
348			rockchip,pins = <RK_GPIO0 10 RK_FUNC_GPIO &pcfg_pull_none>;
 
 
 
 
 
 
349		};
350	};
351
352	usb {
353		host_vbus_drv: host-vbus-drv {
354			rockchip,pins = <0 3 RK_FUNC_GPIO &pcfg_pull_none>;
355		};
356		otg_vbus_drv: otg-vbus-drv {
357			rockchip,pins = <2 31 RK_FUNC_GPIO &pcfg_pull_none>;
358		};
359	};
360};
361
362&spdif {
363	status = "okay";
364};
365
366&uart0 {
367	status = "okay";
368};
369
370&uart1 {
371	status = "okay";
372};
373
374&uart2 {
375	status = "okay";
376};
377
378&uart3 {
379	status = "okay";
380};
381
382&usbphy {
383	status = "okay";
384};
385
386&usb_host {
387	status = "okay";
388};
389
390&usb_otg {
391	status = "okay";
392};
393
394&wdt {
395	status = "okay";
396};