arm: dts: rk3288-evb: add ion support
[firefly-linux-kernel-4.4.55.git] / arch / arm / boot / dts / rk3288-evb.dtsi
index f6d2e7894b051bbde8333b41427c613d8a560aff..41b8eae3304cf3ef1e80d7d9ab5492551928cb60 100644 (file)
@@ -1,4 +1,6 @@
 /*
+ * Copyright (c) 2015~2017 Fuzhou Rockchip Electronics Co., Ltd
+ *
  * This file is dual-licensed: you can use it either under the terms
  * of the GPL or the X11 license, at your option. Note that this dual
  * licensing only applies to this file, and not this project as a
  */
 
 #include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/input/input.h>
 #include "rk3288.dtsi"
 
 / {
-       memory {
-               device_type = "memory";
-               reg = <0x0 0x80000000>;
+       chosen {
+               bootargs = "earlycon=uart8250,mmio32,0xff690000 swiotlb=1";
        };
 
-       backlight {
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               drm_logo: drm-logo@00000000 {
+                       compatible = "rockchip,drm-logo";
+                       reg = <0x0 0x0>;
+               };
+
+               /* global autoconfigured region for contiguous allocations */
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       reusable;
+                       size = <0x0 0x2000000>;
+                       linux,cma-default;
+               };
+       };
+
+       ion {
+               compatible = "rockchip,ion";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cma-heap {
+                       reg = <0x00000000 0x2000000>;
+               };
+
+               system-heap {
+               };
+       };
+
+       backlight: backlight {
                compatible = "pwm-backlight";
                brightness-levels = <
                          0   1   2   3   4   5   6   7
                pwms = <&pwm0 0 1000000 PWM_POLARITY_INVERTED>;
        };
 
-       gpio-keys {
-               compatible = "gpio-keys";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               autorepeat;
+       rk_key: rockchip-key {
+               compatible = "rockchip,key";
+               status = "okay";
 
-               pinctrl-names = "default";
-               pinctrl-0 = <&pwrbtn>;
+               io-channels = <&saradc 1>;
+
+               vol-up-key {
+                       linux,code = <115>;
+                       label = "volume up";
+                       rockchip,adc_value = <1>;
+               };
+
+               vol-down-key {
+                       linux,code = <114>;
+                       label = "volume down";
+                       rockchip,adc_value = <170>;
+               };
 
-               button@0 {
+               power-key {
                        gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
                        linux,code = <116>;
-                       label = "GPIO Key Power";
-                       linux,input-type = <1>;
-                       gpio-key,wakeup = <1>;
-                       debounce-interval = <100>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwrbtn>;
+                       label = "power";
+                       gpio-key,wakeup;
+               };
+
+               menu-key {
+                       linux,code = <59>;
+                       label = "menu";
+                       rockchip,adc_value = <355>;
+               };
+
+               home-key {
+                       linux,code = <102>;
+                       label = "home";
+                       rockchip,adc_value = <746>;
+               };
+
+               back-key {
+                       linux,code = <158>;
+                       label = "back";
+                       rockchip,adc_value = <560>;
+               };
+
+               camera-key {
+                       linux,code = <212>;
+                       label = "camera";
+                       rockchip,adc_value = <450>;
+               };
+       };
+
+       panel: panel {
+               compatible ="lg,lp079qx1-sp0v", "simple-panel";
+               backlight = <&backlight>;
+               enable-gpios = <&gpio7 4 GPIO_ACTIVE_HIGH>;
+               pinctrl-0 = <&lcd_cs>;
+               ports {
+                       panel_in: port {
+                               panel_in_edp: endpoint {
+                                       remote-endpoint = <&edp_out_panel>;
+                               };
+                       };
                };
        };
 
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,name = "rockchip,rt5640-codec";
+               simple-audio-card,mclk-fs = <512>;
+               simple-audio-card,widgets =
+                       "Microphone", "Microphone Jack",
+                       "Headphone", "Headphone Jack";
+               simple-audio-card,routing =
+                       "MIC1", "Microphone Jack",
+                       "MIC2", "Microphone Jack",
+                       "Microphone Jack", "micbias1",
+                       "Headphone Jack", "HPOL",
+                       "Headphone Jack", "HPOR";
+
+               simple-audio-card,dai-link@0 {
+                       format = "i2s";
+                       cpu {
+                               sound-dai = <&i2s>;
+                       };
+
+                       codec {
+                               sound-dai = <&rt5640>;
+                       };
+               };
+
+               simple-audio-card,dai-link@1 {
+                       format = "i2s";
+                       cpu {
+                               sound-dai = <&i2s>;
+                       };
+
+                       codec {
+                               sound-dai = <&hdmi>;
+                       };
+               };
+       };
+
+       lvds_panel: lvds_panel {
+               compatible ="auo,b101ew05","simple-panel";
+               backlight = <&backlight>;
+               enable-gpios = <&gpio7 4 GPIO_ACTIVE_HIGH>;
+               pinctrl-0 = <&lcd_cs>;
+               status = "disabled";
+       };
+
+       ext_gmac: external-gmac-clock {
+               compatible = "fixed-clock";
+               clock-frequency = <125000000>;
+               clock-output-names = "ext_gmac";
+               #clock-cells = <0>;
+       };
+
+       vccadc_ref: vccadc-ref {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc1v8_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
        /* This turns on USB vbus for both host0 (ehci) and host1 (dwc2) */
        vcc_host: vcc-host-regulator {
                compatible = "regulator-fixed";
                regulator-boot-on;
        };
 
+       /* This switch DIO3222 HOST_DP_HOST to host2 (dwc2) */
+       vcc_3g: vcc-3g-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio7 8 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwr_3g>;
+               regulator-name = "vcc_3g";
+       };
+
        /*
         * NOTE: vcc_sd isn't hooked up on v1.0 boards where power comes from
         * vcc_io directly.  Those boards won't be able to power cycle SD cards
         */
        vcc_sd: sdmmc-regulator {
                compatible = "regulator-fixed";
-               gpio = <&gpio7 11 GPIO_ACTIVE_LOW>;
                pinctrl-names = "default";
                pinctrl-0 = <&sdmmc_pwr>;
                regulator-name = "vcc_sd";
                startup-delay-us = <100000>;
                vin-supply = <&vcc_io>;
        };
+
+       wireless-bluetooth {
+               compatible = "bluetooth-platdata";
+               uart_rts_gpios = <&gpio4 19 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default", "rts_gpio";
+               pinctrl-0 = <&uart0_rts>;
+               pinctrl-1 = <&uart0_gpios>;
+               BT,reset_gpio    = <&gpio4 29 GPIO_ACTIVE_HIGH>;
+               BT,wake_gpio     = <&gpio4 26 GPIO_ACTIVE_HIGH>;
+               BT,wake_host_irq = <&gpio4 31 GPIO_ACTIVE_HIGH>;
+               status = "okay";
+       };
+
+       wireless-wlan {
+               compatible = "wlan-platdata";
+               rockchip,grf = <&grf>;
+               wifi_chip_type = "ap6335";
+               sdio_vref = <1800>;
+               WIFI,host_wake_irq = <&gpio4 30 GPIO_ACTIVE_HIGH>;
+               status = "okay";
+       };
 };
 
 &emmc {
-       broken-cd;
        bus-width = <8>;
        cap-mmc-highspeed;
        disable-wp;
        status = "okay";
 };
 
+&gmac {
+       phy-supply = <&vcc_phy>;
+       phy-mode = "rgmii";
+       clock_in_out = "input";
+       snps,reset-gpio = <&gpio4 7 0>;
+       snps,reset-active-low;
+       snps,reset-delays-us = <0 10000 1000000>;
+       assigned-clocks = <&cru SCLK_MAC>;
+       assigned-clock-parents = <&ext_gmac>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&rgmii_pins>;
+       tx_delay = <0x30>;
+       rx_delay = <0x10>;
+       status = "okay";
+};
+
 &hdmi {
-       ddc-i2c-bus = <&i2c5>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       #sound-dai-cells = <0>;
+       status = "okay";
+
+       /* Don't use vopl for HDMI */
+       ports {
+               hdmi_in: port {
+                       /delete-node/ endpoint@1;
+               };
+       };
+};
+
+&saradc {
+       vref-supply = <&vccadc_ref>;
        status = "okay";
 };
 
 &sdmmc {
+       supports-sd;
        bus-width = <4>;
        cap-mmc-highspeed;
+       sd-uhs-sdr12;
+       sd-uhs-sdr25;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
        cap-sd-highspeed;
        card-detect-delay = <200>;
        disable-wp;                     /* wp not hooked up */
        status = "okay";
        vmmc-supply = <&vcc_sd>;
        vqmmc-supply = <&vccio_sd>;
+       supports-sd;
+};
+
+&edp_phy {
+       status = "okay";
+};
+
+&edp {
+       force-hpd;
+       status = "okay";
+
+       ports {
+               /* Don't use vopb for eDP */
+               edp_in: port@0 {
+                       /delete-node/ endpoint@0;
+               };
+
+               edp_out: port@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       edp_out_panel: endpoint {
+                               reg = <0>;
+                               remote-endpoint = <&panel_in_edp>;
+                       };
+               };
+       };
+};
+
+&hevc_service {
+       status = "okay";
 };
 
 &i2c0 {
        status = "okay";
 };
 
-&i2c5 {
+&i2c2 {
+       status = "okay";
+
+       rt5640: rt5640@1c {
+               #sound-dai-cells = <0>;
+               compatible = "realtek,rt5640";
+               reg = <0x1c>;
+               clocks = <&cru SCLK_I2S0_OUT>;
+               clock-names = "mclk";
+               interrupt-parent = <&gpio6>;
+               interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
+       };
+};
+
+&i2c4 {
+       status = "okay";
+
+       gsl3673@40 {
+               compatible = "GSL,GSL3673";
+               reg = <0x40>;
+               screen_max_x = <1536>;
+               screen_max_y = <2048>;
+               irq_gpio_number = <&gpio7 6 IRQ_TYPE_LEVEL_LOW>;
+               rst_gpio_number = <&gpio7 5 GPIO_ACTIVE_HIGH>;
+               status = "okay";
+       };
+};
+
+&i2s {
+       #sound-dai-cells = <0>;
+       status = "okay";
+};
+
+&io_domains {
        status = "okay";
+
+       sdcard-supply = <&vccio_sd>;
+       wifi-supply = <&vcc_18>;
 };
 
 &wdt {
        status = "okay";
 };
 
-&uart0 {
+&rga {
        status = "okay";
 };
 
-&uart1 {
+&sdio0 {
        status = "okay";
+
+       clock-frequency = <50000000>;
+       clock-freq-min-max = <200000 50000000>;
+
+       bus-width = <4>;
+       cap-sd-highspeed;
+       cap-sdio-irq;
+       disable-wp;
+       keep-power-in-suspend;
+       mmc-pwrseq = <&sdio_pwrseq>;
+       non-removable;
+       num-slots = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk &sdio0_int>;
+       sd-uhs-sdr104;
+       supports-sdio;
 };
 
-&uart2 {
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_xfer &uart0_cts>;
        status = "okay";
 };
 
-&uart3 {
+&uart2 {
        status = "okay";
 };
 
-&uart4 {
+&vpu_service {
        status = "okay";
 };
 
        status = "okay";
 };
 
+&usbphy {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host1 {
+       status = "okay";
+};
+
+&usb_otg {
+       status = "okay";
+};
+
+&lvds {
+       rockchip,data-mapping = "jeida";
+       rockchip,data-width = <24>;
+       rockchip,output = "lvds";
+       rockchip,panel = <&lvds_panel>;
+       status = "disabled";
+};
+
+&vopb {
+       status = "okay";
+
+       /* Don't use vopb for eDP, save it for HDMI */
+       vopb_out: port {
+               /delete-node/ endpoint@1;
+       };
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&vopl {
+       status = "okay";
+
+       /* Don't use vopb for HDMI, save it for eDP */
+       vopl_out: port {
+               /delete-node/ endpoint@0;
+       };
+};
+
+&vopl_mmu {
+       status = "okay";
+};
+
 &pinctrl {
        pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
                drive-strength = <8>;
                };
        };
 
+       sdio-pwrseq {
+               wifi_enable_h: wifi-enable-h {
+                       rockchip,pins = <4 28 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
        sdmmc {
                /*
                 * Default drive strength isn't enough to achieve even
                host_vbus_drv: host-vbus-drv {
                        rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
                };
+
+               pwr_3g: pwr-3g {
+                       rockchip,pins = <7 8 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
        };
 
        eth_phy {
                        rockchip,pins = <0 6 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
-};
 
-&usbphy {
-       status = "okay";
-};
-
-&usb_host0_ehci {
-       status = "okay";
-};
-
-&usb_host1 {
-       status = "okay";
-};
-
-&vopb {
-       status = "okay";
-};
-
-&vopb_mmu {
-       status = "okay";
-};
-
-&vopl {
-       status = "okay";
-};
+       lcd {
+               lcd_cs: lcd-cs {
+                       rockchip,pins = <7 4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
 
-&vopl_mmu {
-       status = "okay";
+       wireless-bluetooth {
+               uart0_gpios: uart0-gpios {
+                       rockchip,pins = <4 19 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
 };