/*
+ * 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 {
+ rockchip-relinquish-port;
+ 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>;
+ };
+ };
};