treewide: remove redundant IS_ERR() before error code check
[linux/fpc-iii.git] / arch / arm64 / boot / dts / amlogic / meson-gxbb-nanopi-k2.dts
blobd6ca684e0e616bc1d2a63df5fe5505f9fab46c2c
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  * Copyright (c) 2017 Andreas Färber
4  */
6 /dts-v1/;
8 #include "meson-gxbb.dtsi"
9 #include <dt-bindings/gpio/gpio.h>
11 / {
12         compatible = "friendlyarm,nanopi-k2", "amlogic,meson-gxbb";
13         model = "FriendlyARM NanoPi K2";
15         aliases {
16                 serial0 = &uart_AO;
17                 ethernet0 = &ethmac;
18         };
20         chosen {
21                 stdout-path = "serial0:115200n8";
22         };
24         memory@0 {
25                 device_type = "memory";
26                 reg = <0x0 0x0 0x0 0x80000000>;
27         };
29         leds {
30                 compatible = "gpio-leds";
32                 stat {
33                         label = "nanopi-k2:blue:stat";
34                         gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_HIGH>;
35                         default-state = "on";
36                         panic-indicator;
37                 };
38         };
40         vdd_5v: regulator-vdd-5v {
41                 compatible = "regulator-fixed";
42                 regulator-name = "VDD_5V";
43                 regulator-min-microvolt = <5000000>;
44                 regulator-max-microvolt = <5000000>;
45         };
47         vddio_ao18: regulator-vddio-ao18 {
48                 compatible = "regulator-fixed";
49                 regulator-name = "VDDIO_AO18";
50                 regulator-min-microvolt = <1800000>;
51                 regulator-max-microvolt = <1800000>;
52         };
54         vddio_ao3v3: regulator-vddio-ao3v3 {
55                 compatible = "regulator-fixed";
56                 regulator-name = "VDDIO_AO3.3V";
57                 regulator-min-microvolt = <3300000>;
58                 regulator-max-microvolt = <3300000>;
59         };
61         vddio_tf: regulator-vddio-tf {
62                 compatible = "regulator-gpio";
64                 regulator-name = "VDDIO_TF";
65                 regulator-min-microvolt = <1800000>;
66                 regulator-max-microvolt = <3300000>;
68                 gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
69                 gpios-states = <0>;
71                 states = <3300000 0>,
72                          <1800000 1>;
74                 regulator-settling-time-up-us = <100>;
75                 regulator-settling-time-down-us = <5000>;
76         };
78         wifi_32k: wifi-32k {
79                 compatible = "pwm-clock";
80                 #clock-cells = <0>;
81                 clock-frequency = <32768>;
82                 pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
83         };
85         sdio_pwrseq: sdio-pwrseq {
86                 compatible = "mmc-pwrseq-simple";
87                 reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
88                 clocks = <&wifi_32k>;
89                 clock-names = "ext_clock";
90         };
92         vcc1v8: regulator-vcc1v8 {
93                 compatible = "regulator-fixed";
94                 regulator-name = "VCC1.8V";
95                 regulator-min-microvolt = <1800000>;
96                 regulator-max-microvolt = <1800000>;
97         };
99         vcc3v3: regulator-vcc3v3 {
100                 compatible = "regulator-fixed";
101                 regulator-name = "VCC3.3V";
102                 regulator-min-microvolt = <3300000>;
103                 regulator-max-microvolt = <3300000>;
104         };
106         emmc_pwrseq: emmc-pwrseq {
107                 compatible = "mmc-pwrseq-emmc";
108                 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
109         };
111         /* CVBS is available on CON1 pin 36, disabled by default */
112         cvbs-connector {
113                 compatible = "composite-video-connector";
114                 status = "disabled";
116                 port {
117                         cvbs_connector_in: endpoint {
118                                 remote-endpoint = <&cvbs_vdac_out>;
119                         };
120                 };
121         };
123         hdmi-connector {
124                 compatible = "hdmi-connector";
125                 type = "a";
127                 port {
128                         hdmi_connector_in: endpoint {
129                                 remote-endpoint = <&hdmi_tx_tmds_out>;
130                         };
131                 };
132         };
135 &cec_AO {
136         status = "okay";
137         pinctrl-0 = <&ao_cec_pins>;
138         pinctrl-names = "default";
139         hdmi-phandle = <&hdmi_tx>;
142 &cvbs_vdac_port {
143         cvbs_vdac_out: endpoint {
144                 remote-endpoint = <&cvbs_connector_in>;
145         };
148 &ethmac {
149         status = "okay";
150         pinctrl-0 = <&eth_rgmii_pins>;
151         pinctrl-names = "default";
153         phy-handle = <&eth_phy0>;
154         phy-mode = "rgmii";
156         amlogic,tx-delay-ns = <2>;
158         mdio {
159                 compatible = "snps,dwmac-mdio";
160                 #address-cells = <1>;
161                 #size-cells = <0>;
163                 eth_phy0: ethernet-phy@0 {
164                         /* Realtek RTL8211F (0x001cc916) */
165                         reg = <0>;
167                         reset-assert-us = <10000>;
168                         reset-deassert-us = <30000>;
169                         reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
171                         interrupt-parent = <&gpio_intc>;
172                         /* MAC_INTR on GPIOZ_15 */
173                         interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
174                 };
175         };
178 &hdmi_tx {
179         status = "okay";
180         pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
181         pinctrl-names = "default";
184 &hdmi_tx_tmds_port {
185         hdmi_tx_tmds_out: endpoint {
186                 remote-endpoint = <&hdmi_connector_in>;
187         };
190 &ir {
191         status = "okay";
192         pinctrl-0 = <&remote_input_ao_pins>;
193         pinctrl-names = "default";
196 &gpio_ao {
197         gpio-line-names = "UART TX", "UART RX", "Power Control", "Power Key In",
198                           "VCCK En", "CON1 Header Pin31",
199                           "I2S Header Pin6", "IR In", "I2S Header Pin7",
200                           "I2S Header Pin3", "I2S Header Pin4",
201                           "I2S Header Pin5", "HDMI CEC", "SYS LED",
202                           /* GPIO_TEST_N */
203                           "";
206 &gpio {
207         gpio-line-names = /* Bank GPIOZ */
208                           "Eth MDIO", "Eth MDC", "Eth RGMII RX Clk",
209                           "Eth RX DV", "Eth RX D0", "Eth RX D1", "Eth RX D2",
210                           "Eth RX D3", "Eth RGMII TX Clk", "Eth TX En",
211                           "Eth TX D0", "Eth TX D1", "Eth TX D2", "Eth TX D3",
212                           "Eth PHY nRESET", "Eth PHY Intc",
213                           /* Bank GPIOH */
214                           "HDMI HPD", "HDMI DDC SDA", "HDMI DDC SCL",
215                           "CON1 Header Pin33",
216                           /* Bank BOOT */
217                           "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3", "eMMC D4",
218                           "eMMC D5", "eMMC D6", "eMMC D7", "eMMC Clk",
219                           "eMMC Reset", "eMMC CMD",
220                           "", "", "", "", "eMMC DS",
221                           "", "",
222                           /* Bank CARD */
223                           "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
224                           "SDCard D3", "SDCard D2", "SDCard Det",
225                           /* Bank GPIODV */
226                           "", "", "", "", "", "", "", "", "", "", "", "", "",
227                           "", "", "", "", "", "", "", "", "", "", "",
228                           "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK",
229                           "VDDEE Regulator", "VCCK Regulator",
230                           /* Bank GPIOY */
231                           "CON1 Header Pin7", "CON1 Header Pin11",
232                           "CON1 Header Pin13", "CON1 Header Pin15",
233                           "CON1 Header Pin18", "CON1 Header Pin19",
234                           "CON1 Header Pin22", "CON1 Header Pin21",
235                           "CON1 Header Pin24", "CON1 Header Pin23",
236                           "CON1 Header Pin26", "CON1 Header Pin29",
237                           "CON1 Header Pin32", "CON1 Header Pin8",
238                           "CON1 Header Pin10", "CON1 Header Pin16",
239                           "CON1 Header Pin12",
240                           /* Bank GPIOX */
241                           "WIFI SDIO D0", "WIFI SDIO D1", "WIFI SDIO D2",
242                           "WIFI SDIO D3", "WIFI SDIO CLK", "WIFI SDIO CMD",
243                           "WIFI Power Enable", "WIFI WAKE HOST",
244                           "Bluetooth PCM DOUT", "Bluetooth PCM DIN",
245                           "Bluetooth PCM SYNC", "Bluetooth PCM CLK",
246                           "Bluetooth UART TX", "Bluetooth UART RX",
247                           "Bluetooth UART CTS", "Bluetooth UART RTS",
248                           "", "", "", "WIFI 32K", "Bluetooth Enable",
249                           "Bluetooth WAKE HOST", "",
250                           /* Bank GPIOCLK */
251                           "", "CON1 Header Pin35", "", "";
254 &pwm_ef {
255         status = "okay";
256         pinctrl-0 = <&pwm_e_pins>;
257         pinctrl-names = "default";
258         clocks = <&clkc CLKID_FCLK_DIV4>;
259         clock-names = "clkin0";
262 &saradc {
263         status = "okay";
264         vref-supply = <&vddio_ao18>;
267 /* SDIO */
268 &sd_emmc_a {
269         status = "okay";
270         pinctrl-0 = <&sdio_pins>, <&sdio_irq_pins>;
271         pinctrl-1 = <&sdio_clk_gate_pins>;
272         pinctrl-names = "default", "clk-gate";
273         #address-cells = <1>;
274         #size-cells = <0>;
276         bus-width = <4>;
277         cap-sd-highspeed;
278         max-frequency = <50000000>;
280         non-removable;
281         disable-wp;
283         /* WiFi firmware requires power to be kept while in suspend */
284         keep-power-in-suspend;
286         mmc-pwrseq = <&sdio_pwrseq>;
288         vmmc-supply = <&vddio_ao3v3>;
289         vqmmc-supply = <&vddio_ao18>;
291         brcmf: wifi@1 {
292                 compatible = "brcm,bcm4329-fmac";
293                 reg = <1>;
294         };
297 /* SD */
298 &sd_emmc_b {
299         status = "okay";
300         pinctrl-0 = <&sdcard_pins>;
301         pinctrl-1 = <&sdcard_clk_gate_pins>;
302         pinctrl-names = "default", "clk-gate";
304         bus-width = <4>;
305         cap-sd-highspeed;
306         sd-uhs-sdr12;
307         sd-uhs-sdr25;
308         sd-uhs-sdr50;
309         sd-uhs-ddr50;
310         max-frequency = <100000000>;
311         disable-wp;
313         cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
315         vmmc-supply = <&vddio_ao3v3>;
316         vqmmc-supply = <&vddio_tf>;
319 /* eMMC */
320 &sd_emmc_c {
321         status = "disabled";
322         pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
323         pinctrl-1 = <&emmc_clk_gate_pins>;
324         pinctrl-names = "default", "clk-gate";
326         bus-width = <8>;
327         max-frequency = <200000000>;
328         non-removable;
329         disable-wp;
330         cap-mmc-highspeed;
331         mmc-ddr-1_8v;
332         mmc-hs200-1_8v;
334         mmc-pwrseq = <&emmc_pwrseq>;
335         vmmc-supply = <&vcc3v3>;
336         vqmmc-supply = <&vcc1v8>;
339 /* DBG_UART */
340 &uart_AO {
341         status = "okay";
342         pinctrl-0 = <&uart_ao_a_pins>;
343         pinctrl-names = "default";
346 /* Bluetooth on AP6212 */
347 &uart_A {
348         status = "disabled";
349         pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
350         pinctrl-names = "default";
353 /* 40-pin CON1 */
354 &uart_C {
355         status = "disabled";
356         pinctrl-0 = <&uart_c_pins>;
357         pinctrl-names = "default";
360 &usb0_phy {
361         status = "okay";
362         phy-supply = <&vdd_5v>;
365 &usb1_phy {
366         status = "okay";
369 &usb0 {
370         status = "okay";
373 &usb1 {
374         status = "okay";