]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/arm/boot/dts/am437x-gp-evm.dts
ARM: dts: am437x-gp-evm: Add regulator-always-on and regulator-boot-on for RTC DCDCs
[karo-tx-linux.git] / arch / arm / boot / dts / am437x-gp-evm.dts
index 84aa30c3235af1a14fcbeebe0622a54be6c6d3d9..215775dc69483dba5b526b69eef58cbde3f697b7 100644 (file)
 
        aliases {
                display0 = &lcd0;
-               serial3 = &uart3;
        };
 
-       vmmcsd_fixed: fixedregulator-sd {
+       evm_v3_3d: fixedregulator-v3_3d {
                compatible = "regulator-fixed";
-               regulator-name = "vmmcsd_fixed";
+               regulator-name = "evm_v3_3d";
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
                enable-active-high;
                compatible = "osddisplays,osd057T0559-34ts", "panel-dpi";
                label = "lcd";
 
-               pinctrl-names = "default";
-               pinctrl-0 = <&lcd_pins>;
-
-               /*
-                * SelLCDorHDMI, LOW to select HDMI. This is not really the
-                * panel's enable GPIO, but we don't have HDMI driver support nor
-                * support to switch between two displays, so using this gpio as
-                * panel's enable should be safe.
-                */
-               enable-gpios = <&gpio5 8 GPIO_ACTIVE_HIGH>;
-
                panel-timing {
                        clock-frequency = <33000000>;
                        hactive = <800>;
                clock-frequency = <12000000>;
        };
 
+       sound0: sound@0 {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "AM437x-GP-EVM";
+               simple-audio-card,widgets =
+                       "Headphone", "Headphone Jack",
+                       "Line", "Line In";
+               simple-audio-card,routing =
+                       "Headphone Jack",       "HPLOUT",
+                       "Headphone Jack",       "HPROUT",
+                       "LINE1L",               "Line In",
+                       "LINE1R",               "Line In";
+               simple-audio-card,format = "dsp_b";
+               simple-audio-card,bitclock-master = <&sound0_master>;
+               simple-audio-card,frame-master = <&sound0_master>;
+               simple-audio-card,bitclock-inversion;
+
+               simple-audio-card,cpu {
+                       sound-dai = <&mcasp1>;
+                       system-clock-frequency = <12000000>;
+               };
+
+               sound0_master: simple-audio-card,codec {
+                       sound-dai = <&tlv320aic3106>;
+                       system-clock-frequency = <12000000>;
+               };
+       };
 };
 
 &am43xx_pinmux {
 
        nand_flash_x8: nand_flash_x8 {
                pinctrl-single,pins = <
-                       0x26c(PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* spi2_cs0.gpio/eMMCorNANDsel */
                        0x0  (PIN_INPUT  | MUX_MODE0)   /* gpmc_ad0.gpmc_ad0 */
                        0x4  (PIN_INPUT  | MUX_MODE0)   /* gpmc_ad1.gpmc_ad1 */
                        0x8  (PIN_INPUT  | MUX_MODE0)   /* gpmc_ad2.gpmc_ad2 */
                >;
        };
 
-       lcd_pins: lcd_pins {
+       display_mux_pins: display_mux_pins {
                pinctrl-single,pins = <
                        /* GPIO 5_8 to select LCD / HDMI */
                        0x238 (PIN_OUTPUT_PULLUP | MUX_MODE7)
                        0x234 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart3_rtsn.uart3_rtsn */
                >;
        };
+
+       mcasp1_pins: mcasp1_pins {
+               pinctrl-single,pins = <
+                       0x108 (PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* mii1_col.mcasp1_axr2 */
+                       0x10c (PIN_INPUT_PULLDOWN | MUX_MODE4)  /* mii1_crs.mcasp1_aclkx */
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE4)  /* mii1_rxerr.mcasp1_fsx */
+                       0x144 (PIN_INPUT_PULLDOWN | MUX_MODE4)  /* rmii1_ref_clk.mcasp1_axr3 */
+               >;
+       };
+
+       mcasp1_sleep_pins: mcasp1_sleep_pins {
+               pinctrl-single,pins = <
+                       0x108 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
+
+       gpio0_pins: gpio0_pins {
+               pinctrl-single,pins = <
+                       0x26c (PIN_OUTPUT | MUX_MODE9) /* spi2_cs0.gpio0_23 SEL_eMMCorNANDn */
+               >;
+       };
+
+       emmc_pins_default: emmc_pins_default {
+               pinctrl-single,pins = <
+                       0x00 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad0.mmc1_dat0 */
+                       0x04 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad1.mmc1_dat1 */
+                       0x08 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad2.mmc1_dat2 */
+                       0x0c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad3.mmc1_dat3 */
+                       0x10 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad4.mmc1_dat4 */
+                       0x14 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad5.mmc1_dat5 */
+                       0x18 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad6.mmc1_dat6 */
+                       0x1c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad7.mmc1_dat7 */
+                       0x80 (PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn1.mmc1_clk */
+                       0x84 (PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn2.mmc1_cmd */
+               >;
+       };
+
+       emmc_pins_sleep: emmc_pins_sleep {
+               pinctrl-single,pins = <
+                       0x00 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad0.gpio1_0 */
+                       0x04 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad1.gpio1_1 */
+                       0x08 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad2.gpio1_2 */
+                       0x0c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad3.gpio1_3 */
+                       0x10 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad4.gpio1_4 */
+                       0x14 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad5.gpio1_5 */
+                       0x18 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad6.gpio1_6 */
+                       0x1c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad7.gpio1_7 */
+                       0x80 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_csn1.gpio1_30 */
+                       0x84 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_csn2.gpio1_31 */
+               >;
+       };
 };
 
 &i2c0 {
                        regulator-name = "v1_0bat";
                        regulator-min-microvolt = <1000000>;
                        regulator-max-microvolt = <1000000>;
+                       regulator-boot-on;
+                       regulator-always-on;
                };
 
                dcdc6: regulator-dcdc6 {
                        regulator-name = "v1_8bat";
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
+                       regulator-boot-on;
+                       regulator-always-on;
                };
 
                ldo1: regulator-ldo1 {
                        };
                };
        };
+
+       tlv320aic3106: tlv320aic3106@1b {
+               #sound-dai-cells = <0>;
+               compatible = "ti,tlv320aic3106";
+               reg = <0x1b>;
+               status = "okay";
+
+               /* Regulators */
+               IOVDD-supply = <&evm_v3_3d>; /* V3_3D -> <tps63031> EN: V1_8D -> VBAT */
+               AVDD-supply = <&evm_v3_3d>; /* v3_3AUD -> V3_3D -> ... */
+               DRVDD-supply = <&evm_v3_3d>; /* v3_3AUD -> V3_3D -> ... */
+               DVDD-supply = <&ldo1>; /* V1_8D -> LDO1 */
+       };
 };
 
 &epwmss0 {
 };
 
 &gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&gpio0_pins>;
        status = "okay";
+
+       p23 {
+               gpio-hog;
+               gpios = <23 GPIO_ACTIVE_HIGH>;
+               /* SelEMMCorNAND selects between eMMC and NAND:
+                * Low: NAND
+                * High: eMMC
+                * When changing this line make sure the newly
+                * selected device node is enabled and the previously
+                * selected device node is disabled.
+                */
+               output-low;
+               line-name = "SelEMMCorNAND";
+       };
 };
 
 &gpio1 {
 };
 
 &gpio5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&display_mux_pins>;
        status = "okay";
        ti,no-reset-on-init;
+
+       p8 {
+               /*
+                * SelLCDorHDMI selects between display and audio paths:
+                * Low: HDMI display with audio via HDMI
+                * High: LCD display with analog audio via aic3111 codec
+                */
+               gpio-hog;
+               gpios = <8 GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "SelLCDorHDMI";
+       };
 };
 
 &mmc1 {
        status = "okay";
-       vmmc-supply = <&vmmcsd_fixed>;
+       vmmc-supply = <&evm_v3_3d>;
        bus-width = <4>;
        pinctrl-names = "default";
        pinctrl-0 = <&mmc1_pins>;
        cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
 };
 
+/* eMMC sits on mmc2 */
+&mmc2 {
+       /*
+        * When enabling eMMC, disable GPMC/NAND and set
+        * SelEMMCorNAND to output-high
+        */
+       status = "disabled";
+       vmmc-supply = <&evm_v3_3d>;
+       bus-width = <8>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&emmc_pins_default>;
+       pinctrl-1 = <&emmc_pins_sleep>;
+       ti,non-removable;
+};
+
 &mmc3 {
        status = "okay";
        /* these are on the crossbar and are outlined in the
 };
 
 &gpmc {
+       /*
+        * When enabling GPMC, disable eMMC and set
+        * SelEMMCorNAND to output-low
+        */
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&nand_flash_x8>;
                };
        };
 };
+
+&mcasp1 {
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&mcasp1_pins>;
+       pinctrl-1 = <&mcasp1_sleep_pins>;
+
+       status = "okay";
+
+       op-mode = <0>; /* MCASP_IIS_MODE */
+       tdm-slots = <2>;
+       /* 4 serializers */
+       serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
+               0 0 1 2
+       >;
+       tx-num-evt = <32>;
+       rx-num-evt = <32>;
+};