GNU Linux-libre 6.1.90-gnu
[releases.git] / arch / arm / boot / dts / imx6q-gk802.dts
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 };