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