Merge tag 's390-5.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
[linux-2.6-microblaze.git] / arch / arm64 / boot / dts / amlogic / meson-gxbb-nexbox-a95x.dts
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  * Copyright (c) 2016 Andreas Färber
4  * Copyright (c) 2016 BayLibre, Inc.
5  * Author: Neil Armstrong <narmstrong@kernel.org>
6  */
7
8 /dts-v1/;
9
10 #include "meson-gxbb.dtsi"
11 #include <dt-bindings/gpio/gpio.h>
12 #include <dt-bindings/input/input.h>
13 #include <dt-bindings/sound/meson-aiu.h>
14
15 / {
16         compatible = "nexbox,a95x", "amlogic,meson-gxbb";
17         model = "NEXBOX A95X";
18
19         aliases {
20                 serial0 = &uart_AO;
21                 ethernet0 = &ethmac;
22         };
23
24         chosen {
25                 stdout-path = "serial0:115200n8";
26         };
27
28         memory@0 {
29                 device_type = "memory";
30                 reg = <0x0 0x0 0x0 0x40000000>;
31         };
32
33         leds {
34                 compatible = "gpio-leds";
35                 led-blue {
36                         label = "a95x:system-status";
37                         gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_LOW>;
38                         linux,default-trigger = "heartbeat";
39                         default-state = "off";
40                 };
41         };
42
43         gpio-keys-polled {
44                 compatible = "gpio-keys-polled";
45                 #address-cells = <1>;
46                 #size-cells = <0>;
47                 poll-interval = <100>;
48
49                 button@0 {
50                         label = "reset";
51                         linux,code = <KEY_RESTART>;
52                         gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>;
53                 };
54         };
55
56         usb_pwr: regulator-usb-pwrs {
57                 compatible = "regulator-fixed";
58
59                 regulator-name = "USB_PWR";
60
61                 regulator-min-microvolt = <5000000>;
62                 regulator-max-microvolt = <5000000>;
63
64                 gpio = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
65                 enable-active-high;
66         };
67
68         vddio_card: gpio-regulator {
69                 compatible = "regulator-gpio";
70
71                 regulator-name = "VDDIO_CARD";
72                 regulator-min-microvolt = <1800000>;
73                 regulator-max-microvolt = <3300000>;
74
75                 gpios = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
76                 gpios-states = <1>;
77
78                 /* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */
79                 states = <1800000 0>,
80                          <3300000 1>;
81         };
82
83         vddio_boot: regulator-vddio_boot {
84                 compatible = "regulator-fixed";
85                 regulator-name = "VDDIO_BOOT";
86                 regulator-min-microvolt = <1800000>;
87                 regulator-max-microvolt = <1800000>;
88         };
89
90         vddao_3v3: regulator-vddao_3v3 {
91                 compatible = "regulator-fixed";
92                 regulator-name = "VDDAO_3V3";
93                 regulator-min-microvolt = <3300000>;
94                 regulator-max-microvolt = <3300000>;
95         };
96
97         vcc_3v3: regulator-vcc_3v3 {
98                 compatible = "regulator-fixed";
99                 regulator-name = "VCC_3V3";
100                 regulator-min-microvolt = <3300000>;
101                 regulator-max-microvolt = <3300000>;
102         };
103
104         emmc_pwrseq: emmc-pwrseq {
105                 compatible = "mmc-pwrseq-emmc";
106                 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
107         };
108
109         wifi32k: wifi32k {
110                 compatible = "pwm-clock";
111                 #clock-cells = <0>;
112                 clock-frequency = <32768>;
113                 pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
114         };
115
116         sdio_pwrseq: sdio-pwrseq {
117                 compatible = "mmc-pwrseq-simple";
118                 reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
119                 clocks = <&wifi32k>;
120                 clock-names = "ext_clock";
121         };
122
123         cvbs-connector {
124                 compatible = "composite-video-connector";
125
126                 port {
127                         cvbs_connector_in: endpoint {
128                                 remote-endpoint = <&cvbs_vdac_out>;
129                         };
130                 };
131         };
132
133         hdmi-connector {
134                 compatible = "hdmi-connector";
135                 type = "a";
136
137                 port {
138                         hdmi_connector_in: endpoint {
139                                 remote-endpoint = <&hdmi_tx_tmds_out>;
140                         };
141                 };
142         };
143
144         sound {
145                 compatible = "amlogic,gx-sound-card";
146                 model = "GXBB-NEXBOX-A95X";
147                 assigned-clocks = <&clkc CLKID_MPLL0>,
148                                   <&clkc CLKID_MPLL1>,
149                                   <&clkc CLKID_MPLL2>;
150                 assigned-clock-parents = <0>, <0>, <0>;
151                 assigned-clock-rates = <294912000>,
152                                        <270950400>,
153                                        <393216000>;
154                 status = "okay";
155
156                 dai-link-0 {
157                         sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
158                 };
159
160                 dai-link-1 {
161                         sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
162                         dai-format = "i2s";
163                         mclk-fs = <256>;
164
165                         codec-0 {
166                                 sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
167                         };
168                 };
169
170                 dai-link-2 {
171                         sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
172
173                         codec-0 {
174                                 sound-dai = <&hdmi_tx>;
175                         };
176                 };
177         };
178 };
179
180 &aiu {
181         status = "okay";
182 };
183
184 &cvbs_vdac_port {
185         cvbs_vdac_out: endpoint {
186                 remote-endpoint = <&cvbs_connector_in>;
187         };
188 };
189
190 &cec_AO {
191         status = "okay";
192         pinctrl-0 = <&ao_cec_pins>;
193         pinctrl-names = "default";
194         hdmi-phandle = <&hdmi_tx>;
195 };
196
197 &ethmac {
198         status = "okay";
199         pinctrl-0 = <&eth_rmii_pins>;
200         pinctrl-names = "default";
201
202         phy-handle = <&eth_phy0>;
203         phy-mode = "rmii";
204
205         mdio {
206                 compatible = "snps,dwmac-mdio";
207                 #address-cells = <1>;
208                 #size-cells = <0>;
209
210                 eth_phy0: ethernet-phy@0 {
211                         /* IC Plus IP101GR (0x02430c54) */
212                         reg = <0>;
213
214                         reset-assert-us = <10000>;
215                         reset-deassert-us = <10000>;
216                         reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
217                 };
218         };
219 };
220
221 &hdmi_tx {
222         status = "okay";
223         pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
224         pinctrl-names = "default";
225 };
226
227 &hdmi_tx_tmds_port {
228         hdmi_tx_tmds_out: endpoint {
229                 remote-endpoint = <&hdmi_connector_in>;
230         };
231 };
232
233 &ir {
234         status = "okay";
235         pinctrl-0 = <&remote_input_ao_pins>;
236         pinctrl-names = "default";
237 };
238
239 &pwm_ef {
240         status = "okay";
241         pinctrl-0 = <&pwm_e_pins>;
242         pinctrl-names = "default";
243         clocks = <&clkc CLKID_FCLK_DIV4>;
244         clock-names = "clkin0";
245 };
246
247 /* Wireless SDIO Module */
248 &sd_emmc_a {
249         status = "okay";
250         pinctrl-0 = <&sdio_pins>;
251         pinctrl-1 = <&sdio_clk_gate_pins>;
252         pinctrl-names = "default", "clk-gate";
253         #address-cells = <1>;
254         #size-cells = <0>;
255
256         bus-width = <4>;
257         cap-sd-highspeed;
258         max-frequency = <100000000>;
259
260         non-removable;
261         disable-wp;
262
263         /* WiFi firmware requires power to be kept while in suspend */
264         keep-power-in-suspend;
265
266         mmc-pwrseq = <&sdio_pwrseq>;
267
268         vmmc-supply = <&vddao_3v3>;
269         vqmmc-supply = <&vddio_boot>;
270 };
271
272 /* SD card */
273 &sd_emmc_b {
274         status = "okay";
275         pinctrl-0 = <&sdcard_pins>;
276         pinctrl-1 = <&sdcard_clk_gate_pins>;
277         pinctrl-names = "default", "clk-gate";
278
279         bus-width = <4>;
280         cap-sd-highspeed;
281         max-frequency = <50000000>;
282         disable-wp;
283
284         cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
285
286         vmmc-supply = <&vddao_3v3>;
287         vqmmc-supply = <&vddio_card>;
288 };
289
290 /* eMMC */
291 &sd_emmc_c {
292         status = "okay";
293         pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
294         pinctrl-1 = <&emmc_clk_gate_pins>;
295         pinctrl-names = "default", "clk-gate";
296
297         bus-width = <8>;
298         cap-mmc-highspeed;
299         max-frequency = <200000000>;
300         non-removable;
301         disable-wp;
302         mmc-ddr-1_8v;
303         mmc-hs200-1_8v;
304
305         mmc-pwrseq = <&emmc_pwrseq>;
306         vmmc-supply = <&vcc_3v3>;
307         vqmmc-supply = <&vddio_boot>;
308 };
309
310 &uart_AO {
311         status = "okay";
312         pinctrl-0 = <&uart_ao_a_pins>;
313         pinctrl-names = "default";
314 };
315
316 &usb0_phy {
317         status = "okay";
318         phy-supply = <&usb_pwr>;
319 };
320
321 &usb1_phy {
322         status = "okay";
323 };
324
325 &usb0 {
326         status = "okay";
327 };
328
329 &usb1 {
330         status = "okay";
331 };