1/*
2 * Copyright (C) 2013 Philipp Zabel
3 *
4 * This file is licensed under the terms of the GNU General Public License
5 * version 2.  This program is licensed "as is" without any warranty of any
6 * kind, whether express or implied.
7 */
8
9/dts-v1/;
10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/input/input.h>
12#include "imx6q.dtsi"
13
14/ {
15	model = "Zealz GK802";
16	compatible = "zealz,imx6q-gk802", "fsl,imx6q";
17
18	chosen {
19		stdout-path = &uart4;
20	};
21
22	memory@10000000 {
23		device_type = "memory";
24		reg = <0x10000000 0x40000000>;
25	};
26
27	regulators {
28		compatible = "simple-bus";
29		#address-cells = <1>;
30		#size-cells = <0>;
31
32		reg_3p3v: regulator@0 {
33			compatible = "regulator-fixed";
34			reg = <0>;
35			regulator-name = "3P3V";
36			regulator-min-microvolt = <3300000>;
37			regulator-max-microvolt = <3300000>;
38			regulator-always-on;
39		};
40	};
41
42	gpio-keys {
43		compatible = "gpio-keys";
44
45		recovery-button {
46			label = "recovery";
47			gpios = <&gpio3 16 1>;
48			linux,code = <KEY_RESTART>;
49			wakeup-source;
50		};
51	};
52};
53
54&hdmi {
55	ddc-i2c-bus = <&i2c3>;
56	status = "okay";
57};
58
59/* Internal I2C */
60&i2c2 {
61	pinctrl-names = "default";
62	pinctrl-0 = <&pinctrl_i2c2>;
63	clock-frequency = <100000>;
64	status = "okay";
65
66	/* SDMC DM2016 1024 bit EEPROM + 128 bit OTP */
67	eeprom: dm2016@51 {
68		compatible = "sdmc,dm2016";
69		reg = <0x51>;
70	};
71};
72
73/* External I2C via HDMI */
74&i2c3 {
75	pinctrl-names = "default";
76	pinctrl-0 = <&pinctrl_i2c3>;
77	clock-frequency = <100000>;
78	status = "okay";
79};
80
81&iomuxc {
82	pinctrl-names = "default";
83	pinctrl-0 = <&pinctrl_hog>;
84
85	imx6q-gk802 {
86		pinctrl_hog: hoggrp {
87			fsl,pins = <
88				/* Recovery button, active-low */
89				MX6QDL_PAD_EIM_D16__GPIO3_IO16  0x100b1
90				/* RTL8192CU enable GPIO, active-low */
91				MX6QDL_PAD_NANDF_D0__GPIO2_IO00 0x1b0b0
92			>;
93		};
94
95		pinctrl_i2c2: i2c2grp {
96			fsl,pins = <
97				MX6QDL_PAD_KEY_COL3__I2C2_SCL		0x4001b8b1
98				MX6QDL_PAD_KEY_ROW3__I2C2_SDA		0x4001b8b1
99			>;
100		};
101
102		pinctrl_i2c3: i2c3grp {
103			fsl,pins = <
104				MX6QDL_PAD_GPIO_5__I2C3_SCL		0x4001b8b1
105				MX6QDL_PAD_GPIO_16__I2C3_SDA		0x4001b8b1
106			>;
107		};
108
109		pinctrl_uart4: uart4grp {
110			fsl,pins = <
111				MX6QDL_PAD_KEY_COL0__UART4_TX_DATA	0x1b0b1
112				MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA	0x1b0b1
113			>;
114		};
115
116		pinctrl_usdhc3: usdhc3grp {
117			fsl,pins = <
118				MX6QDL_PAD_SD3_CMD__SD3_CMD		0x17059
119				MX6QDL_PAD_SD3_CLK__SD3_CLK		0x10059
120				MX6QDL_PAD_SD3_DAT0__SD3_DATA0		0x17059
121				MX6QDL_PAD_SD3_DAT1__SD3_DATA1		0x17059
122				MX6QDL_PAD_SD3_DAT2__SD3_DATA2		0x17059
123				MX6QDL_PAD_SD3_DAT3__SD3_DATA3		0x17059
124			>;
125		};
126
127		pinctrl_usdhc4: usdhc4grp {
128			fsl,pins = <
129				MX6QDL_PAD_SD4_CMD__SD4_CMD		0x17059
130				MX6QDL_PAD_SD4_CLK__SD4_CLK		0x10059
131				MX6QDL_PAD_SD4_DAT0__SD4_DATA0		0x17059
132				MX6QDL_PAD_SD4_DAT1__SD4_DATA1		0x17059
133				MX6QDL_PAD_SD4_DAT2__SD4_DATA2		0x17059
134				MX6QDL_PAD_SD4_DAT3__SD4_DATA3		0x17059
135			>;
136		};
137	};
138};
139
140&uart2 {
141	status = "okay";
142};
143
144&uart4 {
145	pinctrl-names = "default";
146	pinctrl-0 = <&pinctrl_uart4>;
147	status = "okay";
148};
149
150/* External USB-A port (USBOTG) */
151&usbotg {
152	disable-over-current;
153	status = "okay";
154};
155
156/* Internal USB port (USBH1), connected to RTL8192CU */
157&usbh1 {
158	disable-over-current;
159	status = "okay";
160};
161
162/* External microSD */
163&usdhc3 {
164	pinctrl-names = "default";
165	pinctrl-0 = <&pinctrl_usdhc3>;
166	bus-width = <4>;
167	cd-gpios = <&gpio6 11 GPIO_ACTIVE_LOW>;
168	vmmc-supply = <&reg_3p3v>;
169	status = "okay";
170};
171
172/* Internal microSD */
173&usdhc4 {
174	pinctrl-names = "default";
175	pinctrl-0 = <&pinctrl_usdhc4>;
176	bus-width = <4>;
177	vmmc-supply = <&reg_3p3v>;
178	status = "okay";
179};
180