ARM64: DTS: Fix Firefly board audio driver
[firefly-linux-kernel-4.4.55.git] / arch / arm / boot / dts / rk3288-firefly.dtsi
index 6bfbd7fd9a63c4c8425310b926968f58ed2c5717..b3bb02ea23fee090d5b9752f530b6d948edb803e 100644 (file)
 / {
        memory {
                device_type = "memory";
-               reg = <0 0x80000000>;
+               reg = <0x0 0x0 0x0 0x80000000>;
+       };
+
+       backlight: backlight {
+               status = "disabled";
+               compatible = "pwm-backlight";
+               brightness-levels = <
+                         3   4   5   6   7
+                         8   9  10  11  12  13  14  15
+                        16  17  18  19  20  21  22  23
+                        24  25  26  27  28  29  30  31
+                        32  33  34  35  36  37  38  39
+                        40  41  42  43  44  45  46  47
+                        48  49  50  51  52  53  54  55
+                        56  57  58  59  60  61  62  63
+                        64  65  66  67  68  69  70  71
+                        72  73  74  75  76  77  78  79
+                        80  81  82  83  84  85  86  87
+                        88  89  90  91  92  93  94  95
+                        96  97  98  99 100 101 102 103
+                       104 105 106 107 108 109 110 111
+                       112 113 114 115 116 117 118 119
+                       120 121 122 123 124 125 126 127
+                       128 129 130 131 132 133 134 135
+                       136 137 138 139 140 141 142 143
+                       144 145 146 147 148 149 150 151
+                       152 153 154 155 156 157 158 159
+                       160 161 162 163 164 165 166 167
+                       168 169 170 171 172 173 174 175
+                       176 177 178 179 180 181 182 183
+                       184 185 186 187 188 189 190 191
+                       192 193 194 195 196 197 198 199
+                       200 201 202 203 204 205 206 207
+                       208 209 210 211 212 213 214 215
+                       216 217 218 219 220 221 222 223
+                       224 225 226 227 228 229 230 231
+                       232 233 234 235 236 237 238 239
+                       240 241 242 243 244 245 246 247
+                       248 249 250 251 252 253 254 255>;
+               default-brightness-level = <180>;
+               pwms = <&pwm1 0 25000 0>;
+               pwm-names = "backlight";
+               power-supply = <&vcc_sys>;
+       };
+
+       panel: panel {
+               status = "disabled";
+               compatible ="lg,lp079qx1-sp0v";
+               power-supply = <&vcc_sys>;
+               backlight = <&backlight>;
+               enable-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
+
+               ports {
+                       panel_in: port {
+                               panel_in_edp: endpoint {
+                                       remote-endpoint = <&edp_out_panel>;
+                               };
+                       };
+               };
        };
 
        dovdd_1v8: dovdd-1v8-regulator {
                clock-output-names = "ext_gmac";
        };
 
-       io_domains: io-domains {
-               compatible = "rockchip,rk3288-io-voltage-domain";
-               rockchip,grf = <&grf>;
-
-               audio-supply = <&vcca_33>;
-               bb-supply = <&vcc_io>;
-               dvp-supply = <&dovdd_1v8>;
-               flash0-supply = <&vcc_flash>;
-               flash1-supply = <&vcc_lan>;
-               gpio30-supply = <&vcc_io>;
-               gpio1830-supply = <&vcc_io>;
-               lcdc-supply = <&vcc_io>;
-               sdcard-supply = <&vccio_sd>;
-               wifi-supply = <&vccio_wl>;
-       };
-
        ir: ir-receiver {
                compatible = "gpio-ir-receiver";
                pinctrl-names = "default";
                };
        };
 
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&hym8563>;
+               clock-names = "ext_clock";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_enable_h>;
+
+               /*
+                * On the module itself this is one of these (depending
+                * on the actual card populated):
+                * - SDIO_RESET_L_WL_REG_ON
+                * - PDN (power down when low)
+                */
+               reset-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>;
+       };
+
+       es8323-sound {
+               status = "okay";
+        compatible = "simple-audio-card";
+        simple-audio-card,format = "i2s";
+        simple-audio-card,name = "rockchip,es8323-codec";
+        simple-audio-card,mclk-fs = <256>;
+        //simple-audio-card,hp-det-gpio = <&gpio7 15 GPIO_ACTIVE_HIGH>;
+               simple-audio-card,widgets =
+                               "Microphone","Mic Jack",
+                               "Headphone","Headphone Jack";
+               simple-audio-card,routing =
+                               "Mic Jack","MICBIAS1",
+                               "IN1P","Mic Jack",
+                               "Headphone Jack","HPOL",
+                               "Headphone Jack","HPOR";
+               simple-audio-card,cpu {
+                               sound-dai = <&i2s>;
+               };
+               simple-audio-card,codec {
+                               sound-dai = <&es8323>;
+               };
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "SPDIF";
+               simple-audio-card,dai-link@1 {
+                       cpu { sound-dai = <&spdif>; };
+                       codec { sound-dai = <&spdif_out>; };
+               };
+       };
+
+       spdif_out: spdif-out {
+               compatible = "linux,spdif-dit";
+               #sound-dai-cells = <0>;
+       };
+
        vbat_wl: vcc_sys: vsys-regulator {
                compatible = "regulator-fixed";
                regulator-name = "vcc_sys";
                regulator-always-on;
                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";
+       };
 };
 
 &cpu0 {
        cpu0-supply = <&vdd_cpu>;
 };
 
+&edp {
+       vcc-supply = <&vdd_10>;
+       vccio-supply = <&vcc_18>;
+       force-hpd;
+       status = "disabled";
+
+       ports {
+               edp_out: port@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       edp_out_panel: endpoint {
+                               reg = <0>;
+                               remote-endpoint = <&panel_in_edp>;
+                       };
+               };
+       };
+};
+
+&edp_in {
+       /delete-node/ endpoint@0;
+};
+
+&edp_phy {
+       status = "disabled";
+       //status = "okay";
+};
+
 &emmc {
        bus-width = <8>;
        cap-mmc-highspeed;
        status = "ok";
 };
 
+&gpu {
+       mali-supply = <&vdd_gpu>;
+       status = "okay";
+};
+
 &hdmi {
-       ddc-i2c-bus = <&i2c5>;
        status = "okay";
 };
 
+&hevc_service {
+       status = "okay";
+
+};
+
+&hdmi_in {
+       /delete-node/ endpoint@1;
+};
+
 &i2c0 {
        clock-frequency = <400000>;
        status = "okay";
                regulator-min-microvolt = <850000>;
                regulator-max-microvolt = <1350000>;
                regulator-always-on;
+               regulator-ramp-delay = <6000>;
                vin-supply = <&vcc_sys>;
        };
 
                                regulator-name = "vcca_33";
                                regulator-min-microvolt = <3300000>;
                                regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
                        };
 
                        vcc_lan: REG9 {
 
 &i2c1 {
        status = "okay";
+
+       mpu6050@68 {
+               compatible = "invensense,mpu6050";
+               reg = <0x68>;
+               interrupt-parent = <&gpio5>;
+               interrupts = <RK_PB4 IRQ_TYPE_LEVEL_LOW>;
+               mount-matrix = "0",
+                              "1",
+                              "0",
+                              "-1",
+                              "0",
+                              "0",
+                              "0",
+                              "0",
+                              "-1";
+       };
 };
 
 &i2c2 {
        status = "okay";
+
+       es8323: es8323@10 {
+        status = "okay";
+               compatible = "everest,es8323";
+               reg = <0x10>;
+               spk-con-gpio = <&gpio7 3 GPIO_ACTIVE_HIGH>;
+               hp-det-gpio = <&gpio7 15 GPIO_ACTIVE_LOW>;
+               clock-names = "mclk";
+               clocks = <&cru SCLK_I2S0_OUT>;
+               #sound-dai-cells = <0>;
+       };
 };
 
 &i2c4 {
        status = "okay";
 };
 
-&i2c5 {
+&io_domains {
+       status = "okay";
+
+       audio-supply = <&vcca_33>;
+       bb-supply = <&vcc_io>;
+       dvp-supply = <&dovdd_1v8>;
+       flash0-supply = <&vcc_flash>;
+       flash1-supply = <&vcc_lan>;
+       gpio30-supply = <&vcc_io>;
+       gpio1830-supply = <&vcc_io>;
+       lcdc-supply = <&vcc_io>;
+       sdcard-supply = <&vccio_sd>;
+       wifi-supply = <&vccio_wl>;
+};
+
+&rga {
        status = "okay";
 };
 
                output-low;
        };
 
+       pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
+               drive-strength = <8>;
+       };
+
+       pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
+               bias-pull-up;
+               drive-strength = <8>;
+       };
+
        act8846 {
                pwr_hold: pwr-hold {
                        rockchip,pins = <0 1 RK_FUNC_GPIO &pcfg_output_high>;
                };
        };
 
+       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
+                * high-speed mode on firefly board so bump up to 8ma.
+                */
+               sdmmc_bus4: sdmmc-bus4 {
+                       rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
+                                       <6 17 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
+                                       <6 18 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
+                                       <6 19 RK_FUNC_1 &pcfg_pull_up_drv_8ma>;
+               };
+
+               sdmmc_clk: sdmmc-clk {
+                       rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+
+               sdmmc_cmd: sdmmc-cmd {
+                       rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up_drv_8ma>;
+               };
+
                sdmmc_pwr: sdmmc-pwr {
                        rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>;
                };
                        rockchip,pins = <0 12 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
+
+       wireless-bluetooth {
+               uart0_gpios: uart0-gpios {
+                       rockchip,pins = <4 19 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&i2s {
+       status = "okay";
+       #sound-dai-cells = <0>;
 };
 
 &saradc {
 };
 
 &sdio0 {
+       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>;
+       pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk &sdio0_int>;
+       sd-uhs-sdr104;
+       supports-sdio;
        vmmc-supply = <&vbat_wl>;
        vqmmc-supply = <&vccio_wl>;
        status = "okay";
        status = "okay";
 };
 
+&spdif {
+       status = "okay";
+};
+
 &spi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&spi0_clk>, <&spi0_cs0>, <&spi0_tx>, <&spi0_rx>, <&spi0_cs1>;
 
 &uart0 {
        pinctrl-names = "default";
-       pinctrl-0 = <&uart0_xfer>, <&uart0_cts>, <&uart0_rts>;
+       pinctrl-0 = <&uart0_xfer>, <&uart0_cts>;
        status = "okay";
 };
 
        status = "okay";
 };
 
+&vopb_out {
+       /delete-node/ endpoint@1;
+};
+
 &vopl {
        status = "okay";
 };
        status = "okay";
 };
 
+&vpu_service {
+       status = "okay";
+};
+
+&vopl_out {
+       /delete-node/ endpoint@0;
+};
+
 &wdt {
        status = "okay";
 };