]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branch 'remotes/stable/linux-4.4.y' into karo-tx6-mainline karo-tx6-stable v4.4.15-KARO
authorLothar Waßmann <LW@KARO-electronics.de>
Tue, 12 Jul 2016 09:14:35 +0000 (11:14 +0200)
committerLothar Waßmann <LW@KARO-electronics.de>
Tue, 12 Jul 2016 09:14:35 +0000 (11:14 +0200)
73 files changed:
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/am335x-boneblack.dts
arch/arm/boot/dts/am335x-evm.dts
arch/arm/boot/dts/am335x-evmsk.dts
arch/arm/boot/dts/am335x-igep0033.dtsi
arch/arm/boot/dts/am335x-nano.dts
arch/arm/boot/dts/am335x-tx48.dts [new file with mode: 0644]
arch/arm/boot/dts/am33xx.dtsi
arch/arm/boot/dts/imx28-tx28.dts
arch/arm/boot/dts/imx53-tx53-x03x.dts
arch/arm/boot/dts/imx53-tx53-x13x.dts
arch/arm/boot/dts/imx53-tx53.dtsi
arch/arm/boot/dts/imx6dl-tx6dl-comtft.dts
arch/arm/boot/dts/imx6dl-tx6s-8034.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6dl-tx6s-8035.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6dl-tx6u-801x.dts
arch/arm/boot/dts/imx6dl-tx6u-8033.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6dl-tx6u-811x.dts
arch/arm/boot/dts/imx6dl-tx6u-81xx-mb7.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6q-tx6q-1010-comtft.dts
arch/arm/boot/dts/imx6q-tx6q-1010.dts
arch/arm/boot/dts/imx6q-tx6q-1020-comtft.dts
arch/arm/boot/dts/imx6q-tx6q-1020.dts
arch/arm/boot/dts/imx6q-tx6q-1036.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6q-tx6q-1110.dts
arch/arm/boot/dts/imx6q-tx6q-11x0-mb7.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6q.dtsi
arch/arm/boot/dts/imx6qdl-tx6.dtsi
arch/arm/boot/dts/imx6qdl.dtsi
arch/arm/boot/dts/imx6sl.dtsi
arch/arm/boot/dts/imx6sx.dtsi
arch/arm/boot/dts/imx6ul-14x14-evk.dts
arch/arm/boot/dts/imx6ul-tx6ul-0010.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6ul-tx6ul-0011.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6ul-tx6ul-mainboard.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6ul-tx6ul.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6ul.dtsi
arch/arm/configs/tx28_defconfig [new file with mode: 0644]
arch/arm/configs/tx48_defconfig [new file with mode: 0644]
arch/arm/configs/tx53_defconfig [new file with mode: 0644]
arch/arm/configs/tx6_defconfig [new file with mode: 0644]
arch/arm/configs/txul_defconfig [new file with mode: 0644]
drivers/clk/imx/clk-imx6q.c
drivers/clk/imx/clk-imx6ul.c
drivers/clk/ti/clk.c
drivers/dma/Kconfig
drivers/leds/trigger/ledtrig-gpio.c
drivers/mfd/ti_am335x_tscadc.c
drivers/net/ethernet/freescale/fec.h
drivers/net/ethernet/freescale/fec_main.c
drivers/pwm/core.c
drivers/pwm/pwm-atmel-tcb.c
drivers/pwm/pwm-atmel.c
drivers/pwm/pwm-imx.c
drivers/pwm/pwm-pxa.c
drivers/pwm/pwm-renesas-tpu.c
drivers/pwm/pwm-samsung.c
drivers/pwm/pwm-tiecap.c
drivers/pwm/pwm-tiehrpwm.c
drivers/pwm/pwm-vt8500.c
drivers/regulator/ltc3589.c
drivers/spi/spi-omap2-mcspi.c
drivers/usb/musb/musb_am335x.c
drivers/usb/musb/musb_core.c
drivers/usb/phy/phy-am335x-control.c
drivers/usb/phy/phy-am335x.c
include/dt-bindings/clock/imx6qdl-clock.h
include/dt-bindings/clock/imx6ul-clock.h
include/linux/pwm.h
sound/soc/codecs/sgtl5000.c
sound/soc/davinci/Kconfig
sound/soc/davinci/Makefile
sound/soc/davinci/am335x-tx48.c [new file with mode: 0644]

index 30bbc3746130a56e54fa665a763894fe4ec02e6a..2659f5f25ad03cbe3ae70c14663fada4eeee6849 100644 (file)
@@ -303,8 +303,12 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
        imx6dl-sabrelite.dtb \
        imx6dl-sabresd.dtb \
        imx6dl-tx6dl-comtft.dtb \
+       imx6dl-tx6s-8034.dtb \
+       imx6dl-tx6s-8035.dtb \
+       imx6dl-tx6u-8033.dtb \
        imx6dl-tx6u-801x.dtb \
        imx6dl-tx6u-811x.dtb \
+       imx6dl-tx6u-81xx-mb7.dtb \
        imx6dl-udoo.dtb \
        imx6dl-wandboard.dtb \
        imx6dl-wandboard-revb1.dtb \
@@ -336,7 +340,9 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
        imx6q-tx6q-1010-comtft.dtb \
        imx6q-tx6q-1020.dtb \
        imx6q-tx6q-1020-comtft.dtb \
+       imx6q-tx6q-1036.dtb \
        imx6q-tx6q-1110.dtb \
+       imx6q-tx6q-11x0-mb7.dtb \
        imx6q-udoo.dtb \
        imx6q-wandboard.dtb \
        imx6q-wandboard-revb1.dtb
@@ -348,7 +354,10 @@ dtb-$(CONFIG_SOC_IMX6SX) += \
        imx6sx-sdb-reva.dtb \
        imx6sx-sdb.dtb
 dtb-$(CONFIG_SOC_IMX6UL) += \
-       imx6ul-14x14-evk.dtb
+       imx6ul-14x14-evk.dtb \
+       imx6ul-tx6ul-0010.dtb \
+       imx6ul-tx6ul-0011.dtb \
+       imx6ul-tx6ul-mainboard.dtb
 dtb-$(CONFIG_SOC_IMX7D) += \
        imx7d-sdb.dtb
 dtb-$(CONFIG_SOC_LS1021A) += \
@@ -459,13 +468,14 @@ dtb-$(CONFIG_SOC_AM33XX) += \
        am335x-bone.dtb \
        am335x-boneblack.dtb \
        am335x-bonegreen.dtb \
-       am335x-sl50.dtb \
+       am335x-chiliboard.dtb \
        am335x-evm.dtb \
        am335x-evmsk.dtb \
+       am335x-lxm.dtb \
        am335x-nano.dtb \
        am335x-pepper.dtb \
-       am335x-lxm.dtb \
-       am335x-chiliboard.dtb \
+       am335x-sl50.dtb \
+       am335x-tx48.dtb \
        am335x-wega-rdk.dtb
 dtb-$(CONFIG_ARCH_OMAP4) += \
        omap4-duovero-parlor.dtb \
index eadbba32386d80a42300266f0dd423d610c2dd51..baa881ecc5266b79a7ead6aa85b03c246cfc49c5 100644 (file)
        regulator-always-on;
 };
 
-&mmc1 {
+&mmc0 {
        vmmc-supply = <&vmmcsd_fixed>;
 };
 
-&mmc2 {
+&mmc1 {
        vmmc-supply = <&vmmcsd_fixed>;
        pinctrl-names = "default";
        pinctrl-0 = <&emmc_pins>;
index d9d00ab863a21735312ff2d53a6830c48ad425ff..128ebdb946ede5eb78873b699f31020fabdde37b 100644 (file)
        };
 };
 
-&mmc1 {
+&mmc0 {
        status = "okay";
        vmmc-supply = <&vmmc_reg>;
        bus-width = <4>;
index 89442e98a8375c965dc117fd2e04da3be6e8d2de..7a9bf38a3322d8b32a501ce0eece2856b74f63a6 100644 (file)
        dual_emac_res_vlan = <2>;
 };
 
-&mmc1 {
+&mmc0 {
        status = "okay";
        vmmc-supply = <&vmmc_reg>;
        bus-width = <4>;
index 54f113546ecc0fcd6a520ff8f19b576b14bc80f1..5168ac6f50aa18fb3d83962f165a3fced1329e04 100644 (file)
        };
 };
 
-&mmc1 {
+&mmc0 {
        status = "okay";
        vmmc-supply = <&vmmc>;
        bus-width = <4>;
index 5ed4ca6eaf55b6ea0adeae9f0ea635fce453a6ef..23c7678dc20fa6667739d1ffcff74c74c78641bb 100644 (file)
                >;
        };
 
-       mmc1_pins: mmc1_pins {
+       mmc0_pins: mmc0_pins {
                pinctrl-single,pins = <
                        0xf0 (PIN_INPUT_PULLUP | MUX_MODE0)     /* mmc0_dat0.mmc0_dat0 */
                        0xf4 (PIN_INPUT_PULLUP | MUX_MODE0)     /* mmc0_dat1.mmc0_dat1 */
        dual_emac_res_vlan = <2>;
 };
 
-&mmc1 {
+&mmc0 {
        status = "okay";
        vmmc-supply = <&ldo4_reg>;
        pinctrl-names = "default";
-       pinctrl-0 = <&mmc1_pins>;
+       pinctrl-0 = <&mmc0_pins>;
        bus-width = <4>;
        cd-gpios = <&gpio3 8 0>;
        wp-gpios = <&gpio3 18 0>;
diff --git a/arch/arm/boot/dts/am335x-tx48.dts b/arch/arm/boot/dts/am335x-tx48.dts
new file mode 100644 (file)
index 0000000..737bed2
--- /dev/null
@@ -0,0 +1,910 @@
+/*
+ * Copyright (C) 2013 Ka-Ro electronics GmbH - http://www.karo-electronics.com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "am33xx.dtsi"
+#include <dt-bindings/pwm/pwm.h>
+
+/ {
+       model = "Ka-Ro electronics TX48 module (TI AM335x)";
+       compatible = "karo,am335x-tx48", "ti,am33xx";
+
+       aliases {
+               can0 = &dcan0;
+               can1 = &dcan1;
+               display = &display;
+               lcdif_23bit_pins_a = &pinctrl_lcd_23bit;
+               lcdif_24bit_pins_a = &pinctrl_lcd_24bit;
+               reg_can_xcvr = &reg_can_xcvr;
+               usbhost = &usb1;
+               usbotg = &usb0;
+       };
+
+       cpus {
+               cpu@0 {
+                       cpu0-supply = <&sw2_reg>;
+               };
+       };
+
+       clocks {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               mclk: clock@0 {
+                       compatible = "fixed-clock";
+                       reg = <0>;
+                       #clock-cells = <0>;
+                       clock-frequency = <26000000>;
+               };
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0 0>; /* will be set up by bootloader */
+       };
+
+       backlight: backlight@0 {
+               compatible = "pwm-backlight";
+               pwms = <&ehrpwm0 0 500000 PWM_POLARITY_INVERTED>;
+               power-supply = <&bb_out_reg>;
+               /*
+                * a poor man's way to create a 1:1 relationship between
+                * the PWM value and the actual duty cycle
+                */
+               brightness-levels = <
+                        0  1  2  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
+               >;
+               default-brightness-level = <50>;
+       };
+
+       display: panel {
+               compatible = "ti,tilcdc,panel";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lcd_24bit>;
+               status = "okay";
+
+               display-timings {
+                       VGA {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <48>;
+                               hsync-len = <96>;
+                               hfront-porch = <16>;
+                               vback-porch = <31>;
+                               vsync-len = <2>;
+                               vfront-porch = <12>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                       };
+
+                       ETV570 {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <114>;
+                               hsync-len = <30>;
+                               hfront-porch = <16>;
+                               vback-porch = <32>;
+                               vsync-len = <3>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                       };
+
+                       ET0350 {
+                               clock-frequency = <6413760>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <34>;
+                               hsync-len = <34>;
+                               hfront-porch = <20>;
+                               vback-porch = <15>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                       };
+
+                       ET0430 {
+                               clock-frequency = <9009000>;
+                               hactive = <480>;
+                               vactive = <272>;
+                               hback-porch = <2>;
+                               hsync-len = <41>;
+                               hfront-porch = <2>;
+                               vback-porch = <2>;
+                               vsync-len = <10>;
+                               vfront-porch = <2>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                       };
+
+                       ET0500 {
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                       };
+
+                       ET0700 { /* same as ET0500 */
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                       };
+
+                       ETQ570 {
+                               clock-frequency = <6596040>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <38>;
+                               hsync-len = <30>;
+                               hfront-porch = <30>;
+                               vback-porch = <16>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                       };
+               };
+
+               panel-info {
+                       ac-bias           = <255>;
+                       ac-bias-intrpt    = <0>;
+                       dma-burst-sz      = <16>;
+                       bpp               = <24>;
+                       fdd               = <0x80>;
+                       sync-edge         = <1>;
+                       sync-ctrl         = <1>;
+                       raster-order      = <0>;
+                       fifo-th           = <0>;
+                       invert-pxl-clk;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_led>;
+
+               heartbeat {
+                       label = "heartbeat";
+                       gpios = <&gpio1 26 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       matrix_keypad: matrix_keypad@0 {
+               compatible = "gpio-matrix-keypad";
+               debounce-delay-ms = <5>;
+               col-scan-delay-us = <2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_matrix_keypad0>;
+               linux,wakeup;
+
+               row-gpios = <
+                       &gpio0 19 GPIO_ACTIVE_HIGH
+                       &gpio0 20 GPIO_ACTIVE_HIGH
+                       &gpio2  1 GPIO_ACTIVE_HIGH
+                       &gpio2  0 GPIO_ACTIVE_HIGH
+               >;
+
+               col-gpios = <
+                       &gpio2 26 GPIO_ACTIVE_HIGH
+                       &gpio3 17 GPIO_ACTIVE_HIGH
+                       &gpio0 7 GPIO_ACTIVE_HIGH
+                       &gpio1 28 GPIO_ACTIVE_HIGH
+               >;
+
+               linux,keymap = <
+                       0x00000074      /* POWER */
+               >;
+       };
+
+       regulators {
+               compatible = "simple-bus";
+
+               reg_lcd_pwr: regulator@0 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "LCD power";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_lcd_pwr>;
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       gpio = <&gpio1 22 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               reg_lcd_rst: regulator@1 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "LCD reset";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_lcd_rst>;
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       gpio = <&gpio1 19 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               reg_can_xcvr: regulator@2 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "can-xcvr";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_can_xcvr>;
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       gpio = <&gpio0 22 GPIO_ACTIVE_LOW>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               reg_usbotg: regulator@3 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "usbotg-vbus";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_reg_usbotg>;
+                       gpio = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+               };
+       };
+
+       sound {
+               compatible = "ti,am335x-tx48-audio";
+               ti,model = "TX48-SGTL5000";
+               ti,audio-codec = <&sgtl5000>;
+               ti,mcasp-controller = <&mcasp1>;
+       };
+};
+
+&am33xx_pinmux {
+       cpsw_default: cpsw_default {
+               pinctrl-single,pins = <
+                       /* Slave 1 */
+                       0x10c (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_crs.rmii1_crs_dv */
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_rxerr.rmii1_rxerr */
+                       0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txen.rmii1_txen */
+                       0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd1.rmii1_txd1 */
+                       0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd0.rmii1_txd0 */
+                       0x13c (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_rxd1.rmii1_rxd1 */
+                       0x140 (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_rxd0.rmii1_rxd0 */
+                       0x144 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE0)   /* rmii1_ref_clk.rmii1_refclk */
+                       0x1e4 (PIN_INPUT_PULLUP | MUX_MODE7)    /* emu0.gpio3_7 */
+                       0x1e8 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* emu1.gpio3_8 */
+               >;
+       };
+
+       cpsw_sleep: cpsw_sleep {
+               pinctrl-single,pins = <
+                       /* Slave 1 reset value */
+                       0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x1e4 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x1e8 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
+
+       davinci_mdio_default: davinci_mdio_default {
+               pinctrl-single,pins = <
+                       /* MDIO */
+                       0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)    /* mdio_data.mdio_data */
+                       0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)                   /* mdio_clk.mdio_clk */
+               >;
+       };
+
+       davinci_mdio_sleep: davinci_mdio_sleep {
+               pinctrl-single,pins = <
+                       /* MDIO reset value */
+                       0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
+
+       pinctrl_can_xcvr: can-xcvr-grp {
+               pinctrl-single,pins = <
+                       0x20 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_ad8.gpio0_22    CAN Transceiver Enable */
+               >;
+       };
+
+       pinctrl_cspi0: cspi0grp-1 {
+               pinctrl-single,pins = <
+                       0x15c (PIN_OUTPUT_PULLUP | MUX_MODE0)   /* spi0_cs0.spi0_cs0    CSPI_SS */
+                       0x160 (PIN_OUTPUT_PULLUP | MUX_MODE0)   /* spi0_cs1.spi0_cs1    CSPI_SS*/
+                       0x154 (PIN_OUTPUT | MUX_MODE0)          /* spi0_d0.spi0_d0      CSPI_MOSI*/
+                       0x158 (PIN_INPUT_PULLUP | MUX_MODE0)    /* spi0_d1.spi0_d1      CSPI_MISO*/
+                       0x150 (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* spi0_sclk.spi0_sclk  CSPI_SCLK */
+               >;
+       };
+
+       pinctrl_dcan0: dcan0grp-1 {
+               pinctrl-single,pins = <
+                       0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd3.dcan0_tx   TXCAN */
+                       0x120 (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_txd2.dcan0_rx   RXCAN */
+               >;
+       };
+
+       pinctrl_dcan1: dcan1grp-1 { // USB-OTG / 2nd CAN
+               pinctrl-single,pins = <
+                       0x100 (PIN_INPUT_PULLDOWN | MUX_MODE4)  /* mmc0_clk.dcan1_tx    USBOTG_VBUSEN */
+                       0x104 (PIN_INPUT_PULLUP | MUX_MODE4)    /* mmc0_cmd.dcan1_rx    #USBOTG_OC */
+               >;
+       };
+
+       pinctrl_gpmc_1: gpmcgrp-1 {
+               pinctrl-single,pins = <
+                       0x00 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad0.gpmc_ad0 */
+                       0x04 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad1.gpmc_ad1 */
+                       0x08 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad2.gpmc_ad2 */
+                       0x0c (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad3.gpmc_ad3 */
+                       0x10 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad4.gpmc_ad4 */
+                       0x14 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad5.gpmc_ad5 */
+                       0x18 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad6.gpmc_ad6 */
+                       0x1c (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad7.gpmc_ad7 */
+                       0x9c (PIN_OUTPUT_PULLUP | MUX_MODE0)    /* gpmc_ben0_cle.gpmc_ben0_cle */
+                       0x90 (PIN_OUTPUT_PULLUP | MUX_MODE0)    /* gpmc_advn_ale.gpmc_advn_ale */
+                       0x7c (PIN_OUTPUT_PULLUP | MUX_MODE0)    /* gpmc_csn0.gpmc_csn0 */
+                       0x94 (PIN_OUTPUT_PULLUP | MUX_MODE0)    /* gpmc_oe_re.gpmc_oe_re */
+                       0x98 (PIN_OUTPUT_PULLUP | MUX_MODE0)    /* gpmc_wen.gpmc_wen */
+                       0x74 (PIN_OUTPUT_PULLUP | MUX_MODE0)    /* gpmc_wpn.gpmc_wpn */
+                       0x70 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_wait0.gpmc_wait0 */
+               >;
+       };
+
+       pinctrl_i2c0_1: i2c0grp-1 {
+               pinctrl-single,pins = <
+                       0x188 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_sda.i2c0_sda I2C_DATA */
+                       0x18c (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_scl.i2c0_scl I2C_CLK */
+               >;
+       };
+
+       pinctrl_lcd_pwr: lcdpwrgrp {
+               pinctrl-single,pins = <
+                       0x58 (PIN_OUTPUT | MUX_MODE7)           /* gpmc_a6.gpio1_22 */
+               >;
+       };
+
+       pinctrl_lcd_rst: lcdrstgrp {
+               pinctrl-single,pins = <
+                       0x4c (PIN_OUTPUT | MUX_MODE7)           /* gpmc_a3.gpio1_19 */
+               >;
+       };
+
+       pinctrl_lcd_23bit: lcd0grp1 {
+               pinctrl-single,pins = <
+                       0x2c (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad11.lcd_data20         LD1 */
+                       0x38 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad14.lcd_data17         LD2 */
+                       0xcc (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data11.lcd_data11        LD3 */
+                       0xd0 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data12.lcd_data12        LD4 */
+                       0xd4 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data13.lcd_data13        LD5 */
+                       0xd8 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data14.lcd_data14        LD6 */
+                       0xdc (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data15.lcd_data15        LD7 */
+                       0x24 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad.lcd_data22           LD8 */
+                       0x30 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad.lcd_data19           LD9 */
+                       0xb4 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data5.lcd_data5          LD10 */
+                       0xb8 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data6.lcd_data6          LD11 */
+                       0xbc (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data7.lcd_data7          LD12 */
+                       0xc0 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data8.lcd_data8          LD13 */
+                       0xc4 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data9.lcd_data9          LD14 */
+                       0xc8 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data10.lcd_data10        LD15 */
+                       0x28 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad10.lcd_data21         LD16 */
+                       0x34 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad13.lcd_data18         LD17 */
+                       0x3c (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad15.lcd_data16         LD18 */
+                       0xa0 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data0.lcd_data0          LD19 */
+                       0xa4 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data1.lcd_data1          LD20 */
+                       0xa8 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data2.lcd_data2          LD21 */
+                       0xac (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data3.lcd_data3          LD22 */
+                       0xb0 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data4.lcd_data4          LD23 */
+                       0xe4 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_hsync.lcd_hsync          HSYNC */
+                       0xe0 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_vsync.lcd_vsync          VSYNC */
+                       0xec (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_ac_bias_en.lcd_ac_bias_en OE_ACD */
+                       0xe8 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_pclk.lcd_pclk            LSCLK */
+               >;
+       };
+
+       pinctrl_lcd_24bit: lcd0grp2 {
+               pinctrl-single,pins = <
+                       0x20 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad8.lcd_data23          LD0 */
+                       0x2c (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad11.lcd_data20         LD1 */
+                       0x38 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad14.lcd_data17         LD2 */
+                       0xcc (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data11.lcd_data11        LD3 */
+                       0xd0 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data12.lcd_data12        LD4 */
+                       0xd4 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data13.lcd_data13        LD5 */
+                       0xd8 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data14.lcd_data14        LD6 */
+                       0xdc (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data15.lcd_data15        LD7 */
+                       0x24 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad.lcd_data22           LD8 */
+                       0x30 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad.lcd_data19           LD9 */
+                       0xb4 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data5.lcd_data5          LD10 */
+                       0xb8 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data6.lcd_data6          LD11 */
+                       0xbc (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data7.lcd_data7          LD12 */
+                       0xc0 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data8.lcd_data8          LD13 */
+                       0xc4 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data9.lcd_data9          LD14 */
+                       0xc8 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data10.lcd_data10        LD15 */
+                       0x28 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad10.lcd_data21         LD16 */
+                       0x34 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad13.lcd_data18         LD17 */
+                       0x3c (PIN_OUTPUT_PULLDOWN | MUX_MODE1)  /* gpmc_ad15.lcd_data16         LD18 */
+                       0xa0 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data0.lcd_data0          LD19 */
+                       0xa4 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data1.lcd_data1          LD20 */
+                       0xa8 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data2.lcd_data2          LD21 */
+                       0xac (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data3.lcd_data3          LD22 */
+                       0xb0 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_data4.lcd_data4          LD23 */
+                       0xe4 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_hsync.lcd_hsync          HSYNC */
+                       0xe0 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_vsync.lcd_vsync          VSYNC */
+                       0xec (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_ac_bias_en.lcd_ac_bias_en OE_ACD */
+                       0xe8 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* lcd_pclk.lcd_pclk            LSCLK */
+               >;
+       };
+
+       pinctrl_led: ledgrp {
+               pinctrl-single,pins = <
+                       0x68 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_a10.gpio1_26 */
+               >;
+       };
+
+       pinctrl_matrix_keypad0: matrix-keypad0 {
+               pinctrl-single,pins = <
+                       0xf0 (PIN_OUTPUT_PULLUP | MUX_MODE7)    /* mmc0_dat3.gpio2_26           KP_COL0 */
+                       0x19c (PIN_OUTPUT_PULLUP | MUX_MODE7)   /* mcasp0_ahclkr.gpio3_17       KP_COL1 */
+                       0x164 (PIN_OUTPUT_PULLUP | MUX_MODE7)   /* ecap0_in_pwm0_out.gpio0_7    KP_COL2 */
+                       0x78 (PIN_OUTPUT_PULLUP | MUX_MODE7)    /* gpmc_ben1.gpio1_28           KP_COL3 */
+                       0x1b0 (PIN_INPUT_PULLDOWN | MUX_MODE7)  /* xdma_event_intr0.gpio0_19    KP_ROW0 */
+                       0x1b4 (PIN_INPUT_PULLDOWN | MUX_MODE7)  /* xdma_event_intr1.gpio0_20    KP_ROW1 */
+                       0x8c (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_clk.gpio2_1             KP_ROW2 */
+                       0x88 (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_csn3.gpio2_0            KP_ROW3 */
+               >;
+       };
+
+       pinctrl_mmc1: mmc1grp-1 {
+               pinctrl-single,pins = <
+                       0x194 (PIN_INPUT_PULLUP | MUX_MODE7)    /* mcasp0_fsx.gpio3_15          SD1_CD */
+                       0x12c (PIN_INPUT_PULLUP | MUX_MODE4)    /* mii1_tx_clk.mmc1_dat0        SD1_DAT0 */
+                       0x130 (PIN_INPUT_PULLUP | MUX_MODE4)    /* mii1_rx_clk.mmc1_dat1        SD1_DAT1 */
+                       0x134 (PIN_INPUT_PULLUP | MUX_MODE4)    /* mii1_rxd3.mmc1_dat2          SD1_DAT2 */
+                       0x138 (PIN_INPUT_PULLUP | MUX_MODE4)    /* mii1_rxd2.mmc1_dat3          SD1_DAT3 */
+                       0x84 (PIN_INPUT_PULLUP | MUX_MODE2)     /* gpmc_cs2.mmc1_cmd            SD1_CMD */
+                       0x80 (PIN_INPUT_PULLUP | MUX_MODE2)     /* gpmc_cs1.mmc1_clk            SD1_CLK */
+               >;
+       };
+
+       pinctrl_ow0: ow0grp-1 {
+               pinctrl-single,pins = <
+                       0xf4 (PIN_INPUT_PULLUP | MUX_MODE7)     /* mmc0_dat2.gpio2_27           OWDAT */
+               >;
+       };
+
+       pinctrl_pwm0: pwm0grp-11 {
+               pinctrl-single,pins = <
+                       0x190 (PIN_OUTPUT_PULLUP | MUX_MODE1)   /* mcasp0_aclkx.ehrpwm0a        PWM */
+               >;
+       };
+
+       pinctrl_reg_usbotg: reg-usbotggrp-1 {
+               pinctrl-single,pins = <
+                       0x100 (PIN_OUTPUT | MUX_MODE7)          /* mmc0_clk.gpio2_30            USBOTG_VBUSEN */
+                       0x104 (PIN_INPUT_PULLUP | MUX_MODE7)    /* mmc0_cmd.gpio2_31            #USBOTG_OC */
+               >;
+       };
+
+       pinctrl_ssi_1: ssi1grp-1 {
+               pinctrl-single,pins = <
+                       0x1a8 (PIN_INPUT_PULLUP | MUX_MODE3)    /* mcasp0_axr1.mcasp1_axr0      SSI1_RXD */
+                       0x1ac (PIN_OUTPUT | MUX_MODE3)          /* mcasp0_ahclkx.mcasp1_axr1    SSI1_TXD */
+                       0x1a0 (PIN_INPUT_PULLUP | MUX_MODE3)    /* mcasp0_aclkr.mcasp1_aclkx    SSI1_CLK */
+                       0x1a4 (PIN_INPUT_PULLUP | MUX_MODE3)    /* mcasp0_fsr.mcasp1_fsx        SSI1_FS */
+               >;
+       };
+
+       pinctrl_tsc2007: tsc2007grp-1 {
+               pinctrl-single,pins = <
+                       0x198 (PIN_INPUT_PULLUP | MUX_MODE7) /* mcasp0_axr0.gpio3_16            SSI1_INT */
+               >;
+       };
+
+       pinctrl_uart0_1: uart0grp-1 {
+               pinctrl-single,pins = <
+                       0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd          TXD */
+                       0x170 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart0_rxd.uart0_rxd          RXD */
+                       0x168 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart0_ctsn.uart0_ctsn        RTS/CTS IN */
+                       0x16c (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_rtsn.uart0_rtsn        CTS/RTS OUT */
+               >;
+       };
+
+       pinctrl_uart1_1: uart1grp-1 {
+               pinctrl-single,pins = <
+                       0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd          TXD */
+                       0x180 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart1_rxd.uart1_rxd          RXD */
+                       0x178 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart1_ctsn.uart1_ctsn        RTS/CTS IN */
+                       0x17c (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_rtsn.uart1_rtsn        CTS/RTS OUT */
+               >;
+       };
+
+       pinctrl_uart5_1: uart5grp-1 {
+               pinctrl-single,pins = <
+                       0x118 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* mii1_rxdv.uart5_txd          TXD */
+                       0x108 (PIN_INPUT_PULLUP | MUX_MODE3)    /* mii1_col.uart5_rxd           RXD */
+                       0xf8 (PIN_INPUT_PULLUP | MUX_MODE2)     /* mmc0_dat1.uart5_ctsn         RTS/CTS IN */
+                       0xfc (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* mmc0_dat0.uart5_rtsn         CTS/RTS OUT */
+               >;
+       };
+
+       pinctrl_usbhost: usbhostgrp-1 {
+               pinctrl-single,pins = <
+                       0x234 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* usb1_drvvbus.usb1_drvvbus    USBH_VBUSEN */
+                       0x21c (PIN_INPUT_PULLUP | MUX_MODE7)    /* usb0_drvvbus.gpio0_18        #USBH_OC */
+               >;
+       };
+};
+
+&cppi41dma {
+       status = "okay";
+};
+
+&cpsw_emac0 {
+       phy_id = <&davinci_mdio>, <0>;
+       phy-mode = "rmii";
+};
+
+&cpsw_emac1 {
+       phy_id = <&davinci_mdio>, <1>;
+       phy-mode = "rmii";
+       status = "disabled";
+};
+
+&davinci_mdio {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&davinci_mdio_default>;
+       pinctrl-1 = <&davinci_mdio_sleep>;
+       status = "okay";
+};
+
+&dcan0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_dcan0>;
+       status = "okay";
+};
+
+&dcan1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_dcan1>;
+       status = "okay";
+};
+
+&ehrpwm0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm0>;
+       status = "okay";
+};
+
+&elm {
+       status = "okay";
+};
+
+&epwmss0 {
+       status = "okay";
+};
+
+&gpio0 {
+       ti,gpio-always-on;
+};
+
+&gpio1 {
+       ti,gpio-always-on;
+};
+
+&gpio2 {
+       ti,gpio-always-on;
+};
+
+&gpio3 {
+       ti,gpio-always-on;
+};
+
+&gpmc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpmc_1>;
+       ranges = <0 0 0x08000000 0x10000000>;   /* CS0: NAND */
+       status = "okay";
+
+       nand@0 {
+               reg = <0 0 0>;
+               nand-bus-width = <8>;
+               nand-on-flash-bbt;
+               elm_id = <&elm>;
+               ti,nand-ecc-opt = "bch8";
+
+               gpmc,device-nand = "true";
+               gpmc,device-width = <1>;
+               gpmc,sync-clk-ps = <0>;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <20>;
+               gpmc,cs-wr-off-ns = <25>;
+               gpmc,adv-on-ns = <0>;
+               gpmc,adv-rd-off-ns = <0>;
+               gpmc,adv-wr-off-ns = <0>;
+               gpmc,we-off-ns = <20>;
+               gpmc,oe-off-ns = <25>;
+               gpmc,access-ns = <25>;
+               gpmc,rd-cycle-ns = <30>;
+               gpmc,wr-cycle-ns = <30>;
+               gpmc,wr-access-ns = <15>;
+               gpmc,wr-data-mux-bus-ns = <0>;
+               gpmc,bus-turnaround-ns = <100>;
+               gpmc,cycle2cycle-delay-ns = <100>;
+               gpmc,clk-activation-ns = <0>;
+               gpmc,wait-monitoring-ns = <0>;
+               gpmc,wait-on-read = "true";
+               gpmc,wait-on-write = "true";
+
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               /* partitions will be filled in by U-Boot */
+       };
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c0_1>;
+       status = "okay";
+
+       rtc1: ds1339@68 {
+               compatible = "dallas,ds1339";
+               reg = <0x68>;
+       };
+
+       pmic: lt3589@34 {
+               compatible = "lltc,ltc3589-2";
+               reg = <0x34>;
+               interrupt-parent = <&intc>;
+               interrupts = <7>;
+
+               regulators {
+                       sw1_reg: sw1 {
+                               regulator-min-microvolt = <591930>;
+                               regulator-max-microvolt = <1224671>;
+                               lltc,fb-voltage-divider = <100000 158000>;
+                               regulator-name = "vdd_core";
+                               regulator-ramp-delay = <7000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       sw2_reg: sw2 {
+                               regulator-min-microvolt = <704544>;
+                               regulator-max-microvolt = <1363627>;
+                               lltc,fb-voltage-divider = <180000 220000>;
+                               regulator-name = "vdd_mpu";
+                               regulator-ramp-delay = <7000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       sw3_reg: sw3 {
+                               regulator-min-microvolt = <1364186>;
+                               regulator-max-microvolt = <1670426>;
+                               lltc,fb-voltage-divider = <270000 220000>;
+                               regulator-name = "vdds_ddr";
+                               regulator-ramp-delay = <7000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       bb_out_reg: bb-out {
+                               regulator-min-microvolt = <3387341>;
+                               regulator-max-microvolt = <3387341>;
+                               lltc,fb-voltage-divider = <511000 158000>;
+                               regulator-name = "vddio";
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo1_reg: ldo1 {
+                               regulator-min-microvolt = <1781818>;
+                               regulator-max-microvolt = <1781818>;
+                               lltc,fb-voltage-divider = <270000 220000>;
+                               regulator-name = "vdds_rtc";
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo2_reg: ldo2 {
+                               regulator-min-microvolt = <1799991>;
+                               regulator-max-microvolt = <1833324>;
+                               lltc,fb-voltage-divider = <300000 180000>;
+                               regulator-name = "vdd_etn";
+                               regulator-ramp-delay = <7000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo3_reg: ldo3 {
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-name = "vdds";
+                       };
+
+                       ldo4_reg: ldo4 {
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3200000>;
+                               regulator-name = "vpp";
+                       };
+               };
+       };
+
+       sgtl5000: sgtl5000@0a {
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               VDDA-supply = <&bb_out_reg>;
+               VDDIO-supply = <&bb_out_reg>;
+               clocks = <&mclk>;
+       };
+
+       touchscreen: tsc2007@48 {
+               compatible = "ti,tsc2007";
+               reg = <0x48>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <16 2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_tsc2007>;
+               gpios = <&gpio3 16 GPIO_ACTIVE_LOW>;
+               ti,x-plate-ohms = <660>;
+       };
+
+       polytouch: edt-ft5x06@38 {
+               compatible = "edt,edt-ft5x06";
+               reg = <0x38>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <17 2>;
+               reset-gpios = <&gpio1 18 GPIO_ACTIVE_LOW>;
+               wake-gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&lcdc {
+       status = "okay";
+};
+
+&mac {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&cpsw_default>;
+       pinctrl-1 = <&cpsw_sleep>;
+       status = "okay";
+};
+
+&mcasp1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ssi_1>;
+       op-mode = <0>;          /* MCASP_IIS_MODE */
+       tdm-slots = <2>;
+       serial-dir = <2 1 0 0>; /* 0: INACTIVE, 1: TX, 2: RX */
+       tx-num-evt = <32>;
+       rx-num-evt = <32>;
+       status = "okay";
+};
+
+&mmc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_mmc1>;
+       cd-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
+       vmmc-supply = <&bb_out_reg>;
+       status = "okay";
+};
+
+&phy_sel {
+       rmii-clock-ext;
+};
+
+&spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_cspi0>;
+       ti,spi-num-cs = <2>;
+       ti,pindir-d0-out-d1-in;
+       status = "okay";
+
+       spidev0: spi@0 {
+               compatible = "spidev";
+               reg = <0>;
+               spi-max-frequency = <375000>;
+       };
+
+       spidev1: spi@1 {
+               compatible = "spidev";
+               reg = <1>;
+               spi-max-frequency = <375000>;
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_1>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_1>;
+       status = "okay";
+};
+
+&uart5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart5_1>;
+       status = "okay";
+};
+
+&usb {
+       status = "okay";
+};
+
+&usb_ctrl_mod {
+       status = "okay";
+};
+
+&usb0 {
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+&usb0_phy {
+       vcc-supply = <&reg_usbotg>;
+       status = "okay";
+};
+
+&usb1 {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usb1_phy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbhost>;
+       status = "okay";
+};
index d23e2524d694e95512a0ab967c6ef4fd9c1b8314..9a8df24a26761c9ec386450c5531c6b5c7d90e95 100644 (file)
                        status = "disabled";
                };
 
-               mmc1: mmc@48060000 {
+               mmc0: mmc@48060000 {
                        compatible = "ti,omap4-hsmmc";
                        ti,hwmods = "mmc1";
                        ti,dual-volt;
                        status = "disabled";
                };
 
-               mmc2: mmc@481d8000 {
+               mmc1: mmc@481d8000 {
                        compatible = "ti,omap4-hsmmc";
                        ti,hwmods = "mmc2";
                        ti,needs-special-reset;
                        status = "disabled";
                };
 
-               mmc3: mmc@47810000 {
+               mmc2: mmc@47810000 {
                        compatible = "ti,omap4-hsmmc";
                        ti,hwmods = "mmc3";
                        ti,needs-special-reset;
index 4ea89344a5fff51115160fad9e34b16a4a4377eb..054843b67bfa7caf1218b54a63c505b6703ae235 100644 (file)
                        compatible = "fixed-clock";
                        reg = <0>;
                        #clock-cells = <0>;
-                       clock-frequency = <27000000>;
+                       clock-frequency = <26000000>;
                };
        };
 
index 13e842b0c7857b1050c73319842113d6bf08dbb3..b654780f66038957928920299b97db5309bd39e5 100644 (file)
                display = &display;
        };
 
-       soc {
-               display: display@di0 {
-                       compatible = "fsl,imx-parallel-display";
-                       interface-pix-fmt = "rgb24";
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&pinctrl_rgb24_vga1>;
-                       status = "okay";
+       display: display@di0 {
+               compatible = "fsl,imx-parallel-display";
+               interface-pix-fmt = "rgb24";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_rgb24_vga1>;
+               fsl,panel = <&lcd>;
+               status = "okay";
 
-                       port {
-                               display0_in: endpoint {
-                                       remote-endpoint = <&ipu_di0_disp0>;
-                               };
+               port {
+                       display0_in: endpoint {
+                               remote-endpoint = <&ipu_di0_disp0>;
                        };
+               };
 
-                       display-timings {
-                               VGA {
-                                       clock-frequency = <25200000>;
-                                       hactive = <640>;
-                                       vactive = <480>;
-                                       hback-porch = <48>;
-                                       hsync-len = <96>;
-                                       hfront-porch = <16>;
-                                       vback-porch = <31>;
-                                       vsync-len = <2>;
-                                       vfront-porch = <12>;
-                                       hsync-active = <0>;
-                                       vsync-active = <0>;
-                                       de-active = <1>;
-                                       pixelclk-active = <0>;
-                               };
+               display-timings {
+                       VGA {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <48>;
+                               hsync-len = <96>;
+                               hfront-porch = <16>;
+                               vback-porch = <31>;
+                               vsync-len = <2>;
+                               vfront-porch = <12>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
 
-                               ETV570 {
-                                       clock-frequency = <25200000>;
-                                       hactive = <640>;
-                                       vactive = <480>;
-                                       hback-porch = <114>;
-                                       hsync-len = <30>;
-                                       hfront-porch = <16>;
-                                       vback-porch = <32>;
-                                       vsync-len = <3>;
-                                       vfront-porch = <10>;
-                                       hsync-active = <0>;
-                                       vsync-active = <0>;
-                                       de-active = <1>;
-                                       pixelclk-active = <0>;
-                               };
+                       ETV570 {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <114>;
+                               hsync-len = <30>;
+                               hfront-porch = <16>;
+                               vback-porch = <32>;
+                               vsync-len = <3>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
 
-                               ET0350 {
-                                       clock-frequency = <6413760>;
-                                       hactive = <320>;
-                                       vactive = <240>;
-                                       hback-porch = <34>;
-                                       hsync-len = <34>;
-                                       hfront-porch = <20>;
-                                       vback-porch = <15>;
-                                       vsync-len = <3>;
-                                       vfront-porch = <4>;
-                                       hsync-active = <0>;
-                                       vsync-active = <0>;
-                                       de-active = <1>;
-                                       pixelclk-active = <0>;
-                               };
+                       ET0350 {
+                               clock-frequency = <6413760>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <34>;
+                               hsync-len = <34>;
+                               hfront-porch = <20>;
+                               vback-porch = <15>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
 
-                               ET0430 {
-                                       clock-frequency = <9009000>;
-                                       hactive = <480>;
-                                       vactive = <272>;
-                                       hback-porch = <2>;
-                                       hsync-len = <41>;
-                                       hfront-porch = <2>;
-                                       vback-porch = <2>;
-                                       vsync-len = <10>;
-                                       vfront-porch = <2>;
-                                       hsync-active = <0>;
-                                       vsync-active = <0>;
-                                       de-active = <1>;
-                                       pixelclk-active = <1>;
-                               };
+                       ET0430 {
+                               clock-frequency = <9009000>;
+                               hactive = <480>;
+                               vactive = <272>;
+                               hback-porch = <2>;
+                               hsync-len = <41>;
+                               hfront-porch = <2>;
+                               vback-porch = <2>;
+                               vsync-len = <10>;
+                               vfront-porch = <2>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
 
-                               ET0500 {
-                                       clock-frequency = <33264000>;
-                                       hactive = <800>;
-                                       vactive = <480>;
-                                       hback-porch = <88>;
-                                       hsync-len = <128>;
-                                       hfront-porch = <40>;
-                                       vback-porch = <33>;
-                                       vsync-len = <2>;
-                                       vfront-porch = <10>;
-                                       hsync-active = <0>;
-                                       vsync-active = <0>;
-                                       de-active = <1>;
-                                       pixelclk-active = <0>;
-                               };
+                       ET0500 {
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
 
-                               ET0700 { /* same as ET0500 */
-                                       clock-frequency = <33264000>;
-                                       hactive = <800>;
-                                       vactive = <480>;
-                                       hback-porch = <88>;
-                                       hsync-len = <128>;
-                                       hfront-porch = <40>;
-                                       vback-porch = <33>;
-                                       vsync-len = <2>;
-                                       vfront-porch = <10>;
-                                       hsync-active = <0>;
-                                       vsync-active = <0>;
-                                       de-active = <1>;
-                                       pixelclk-active = <0>;
-                               };
+                       ET0700 { /* same as ET0500 */
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
 
-                               ETQ570 {
-                                       clock-frequency = <6596040>;
-                                       hactive = <320>;
-                                       vactive = <240>;
-                                       hback-porch = <38>;
-                                       hsync-len = <30>;
-                                       hfront-porch = <30>;
-                                       vback-porch = <16>;
-                                       vsync-len = <3>;
-                                       vfront-porch = <4>;
-                                       hsync-active = <0>;
-                                       vsync-active = <0>;
-                                       de-active = <1>;
-                                       pixelclk-active = <0>;
-                               };
+                       ETQ570 {
+                               clock-frequency = <6596040>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <38>;
+                               hsync-len = <30>;
+                               hfront-porch = <30>;
+                               vback-porch = <16>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
                        };
                };
        };
        backlight: backlight {
                compatible = "pwm-backlight";
                pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
-               power-supply = <&reg_3v3>;
+               power-supply = <&reg_lcd_pwr>;
                brightness-levels = <
                          0  1  2  3  4  5  6  7  8  9
                         10 11 12 13 14 15 16 17 18 19
                default-brightness-level = <50>;
        };
 
+       lcd: panel {
+               compatible = "simple-panel";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lcd_reset>;
+               enable-gpios = <&gpio3 29 GPIO_ACTIVE_HIGH>;
+               backlight = <&backlight>;
+       };
+
        regulators {
                reg_lcd_pwr: regulator@5 {
                        compatible = "regulator-fixed";
                        regulator-min-microvolt = <3300000>;
                        regulator-max-microvolt = <3300000>;
                        gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_lcd_pwr>;
                        enable-active-high;
-                       regulator-boot-on;
-               };
-
-               reg_lcd_reset: regulator@6 {
-                       compatible = "regulator-fixed";
-                       reg = <6>;
-                       regulator-name = "LCD RESET";
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-                       gpio = <&gpio3 29 GPIO_ACTIVE_HIGH>;
-                       enable-active-high;
-                       regulator-boot-on;
                };
        };
 };
                        >;
                };
 
+               pinctrl_lcd_reset: lcd-resetgrp {
+                       fsl,pins = <
+                               MX53_PAD_EIM_D29__GPIO3_29 0x1f0 /* LCD reset */
+                       >;
+               };
+
+               pinctrl_lcd_pwr: lcd-pwrgrp {
+                       fsl,pins = <
+                               MX53_PAD_EIM_EB3__GPIO2_31 0x1f0 /* LCD enable */
+                       >;
+               };
+
                pinctrl_rgb24_vga1: rgb24-vgagrp1 {
                        fsl,pins = <
                                MX53_PAD_DI0_DISP_CLK__IPU_DI0_DISP_CLK         0x5
index 64804719f0f442de2225613f54518f68293fc190..c01e0b889603f6d4a3d69995db53f70b2945db11 100644 (file)
        };
 
        regulators {
-               reg_lcd_pwr0: regulator@5 {
+               regulator@5 {
                        compatible = "regulator-fixed";
                        reg = <5>;
-                       regulator-name = "LVDS0 POWER";
+                       regulator-name = "LVDS0 CABC";
                        regulator-min-microvolt = <3300000>;
                        regulator-max-microvolt = <3300000>;
                        gpio = <&gpio3 29 GPIO_ACTIVE_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_lvds0_cabc>;
                        enable-active-high;
-                       regulator-boot-on;
                };
 
-               reg_lcd_pwr1: regulator@6 {
+               regulator@6 {
                        compatible = "regulator-fixed";
                        reg = <6>;
-                       regulator-name = "LVDS1 POWER";
+                       regulator-name = "LVDS1 CABC";
                        regulator-min-microvolt = <3300000>;
                        regulator-max-microvolt = <3300000>;
                        gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_lvds1_cabc>;
                        enable-active-high;
-                       regulator-boot-on;
                };
        };
 };
                        >;
                };
 
+               pinctrl_lvds0_cabc: lvds0-cabcgrp {
+                       fsl,pins = <
+                               MX53_PAD_EIM_D29__GPIO3_29 0x1f0 /* LCD reset */
+                       >;
+               };
+
                pinctrl_lvds1: lvds1grp {
                        fsl,pins = <
                                MX53_PAD_LVDS1_TX3_P__LDB_LVDS1_TX3 0x80000000
                        >;
                };
 
+               pinctrl_lvds1_cabc: lvds1-cabcgrp {
+                       fsl,pins = <
+                               MX53_PAD_EIM_EB3__GPIO2_31 0x1f0 /* LCD enable */
+                       >;
+               };
+
                pinctrl_pwm1: pwm1grp {
                        fsl,pins = <MX53_PAD_GPIO_9__PWM1_PWMO 0x04>;
                };
 };
 
 &ldb {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_lvds0 &pinctrl_lvds1>;
        status = "okay";
 
        lvds0: lvds-channel@0 {
-               fsl,data-mapping = "jeida";
-               fsl,data-width = <24>;
+               fsl,data-mapping = "spwg";
+               fsl,data-width = <18>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lvds0>;
                status = "okay";
 
                display-timings {
        };
 
        lvds1: lvds-channel@1 {
-               fsl,data-mapping = "jeida";
-               fsl,data-width = <24>;
+               fsl,data-mapping = "spwg";
+               fsl,data-width = <18>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lvds1>;
                status = "okay";
 
                display-timings {
index d3e50b22064f28777bbd2a3b60f512d844ff9418..bc1ace5aefd6046d128fb3e9c303e98fd2a486eb 100644 (file)
                                /* Module Specific Signal */
                                /* MX53_PAD_NANDF_CS2__GPIO6_15 0x1f4 maybe used by EDT-FT5x06 */
                                /* MX53_PAD_EIM_A16__GPIO2_22 0x1f4 maybe used by EDT-FT5x06 */
-                               MX53_PAD_EIM_D29__GPIO3_29 0x1f4
-                               MX53_PAD_EIM_EB3__GPIO2_31 0x1f4
+                               /* MX53_PAD_EIM_D29__GPIO3_29 0x1f4 used as LCD RESET by default */
+                               /* MX53_PAD_EIM_EB3__GPIO2_31 0x1f4 used as LCD ENABLE by default */
                                /* MX53_PAD_EIM_A17__GPIO2_21 0x1f4 maybe used by EDT-FT5x06 */
                                /* MX53_PAD_EIM_A18__GPIO2_20 0x1f4 used by LED */
                                MX53_PAD_EIM_A19__GPIO2_19 0x1f4
        vbus-supply = <&reg_usbotg_vbus>;
        status = "okay";
 };
+
+&vpu {
+       status = "disabled";
+};
index 913bb9a0466a4a8f5f5146c2e535c7d9305fab62..063fe7510da5f7652e0fcbb52c0f8fd95806a70f 100644 (file)
@@ -1,12 +1,42 @@
 /*
- * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
+ * Copyright 2014-2016 Lothar Waßmann <LW@KARO-electronics.de>
  *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 at the following locations:
+ * 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
+ * whole.
  *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
diff --git a/arch/arm/boot/dts/imx6dl-tx6s-8034.dts b/arch/arm/boot/dts/imx6dl-tx6s-8034.dts
new file mode 100644 (file)
index 0000000..ff8f7b1
--- /dev/null
@@ -0,0 +1,237 @@
+/*
+ * Copyright 2015-2016 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * 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
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "imx6dl.dtsi"
+#include "imx6qdl-tx6.dtsi"
+
+/ {
+       model = "Ka-Ro electronics TX6S-8034 Module";
+       compatible = "karo,imx6dl-tx6dl", "fsl,imx6dl";
+
+       aliases {
+               display = &display;
+               ipu1 = &ipu1;
+       };
+
+       cpus {
+               /delete-node/ cpu@1;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lcd0_pwr>;
+               enable-gpios = <&gpio3 29 GPIO_ACTIVE_HIGH>;
+               power-supply = <&reg_lcd1_pwr>;
+               /*
+                * a poor man's way to create a 1:1 relationship between
+                * the PWM value and the actual duty cycle
+                */
+               brightness-levels = < 0  1  2  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>;
+               default-brightness-level = <50>;
+       };
+
+       display: display@di0 {
+               compatible = "fsl,imx-parallel-display";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_disp0_2>;
+               interface-pix-fmt = "rgb24";
+               status = "okay";
+
+               port {
+                       display0_in: endpoint {
+                               remote-endpoint = <&ipu1_di0_disp0>;
+                       };
+               };
+
+               display-timings {
+                       native-mode = <&vga>;
+
+                       vga: VGA {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <48>;
+                               hsync-len = <96>;
+                               hfront-porch = <16>;
+                               vback-porch = <31>;
+                               vsync-len = <2>;
+                               vfront-porch = <12>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ETV570 {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <114>;
+                               hsync-len = <30>;
+                               hfront-porch = <16>;
+                               vback-porch = <32>;
+                               vsync-len = <3>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0350 {
+                               clock-frequency = <6413760>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <34>;
+                               hsync-len = <34>;
+                               hfront-porch = <20>;
+                               vback-porch = <15>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0430 {
+                               clock-frequency = <9009000>;
+                               hactive = <480>;
+                               vactive = <272>;
+                               hback-porch = <2>;
+                               hsync-len = <41>;
+                               hfront-porch = <2>;
+                               vback-porch = <2>;
+                               vsync-len = <10>;
+                               vfront-porch = <2>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       ET0500 {
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0700 { /* same as ET0500 */
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ETQ570 {
+                               clock-frequency = <6596040>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <38>;
+                               hsync-len = <30>;
+                               hfront-porch = <30>;
+                               vback-porch = <16>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+               };
+       };
+};
+
+&ds1339 {
+       status = "disabled";
+};
+
+&pinctrl_usdhc1 {
+       fsl,pins = <
+               MX6QDL_PAD_SD1_CMD__SD1_CMD             0x070b1
+               MX6QDL_PAD_SD1_CLK__SD1_CLK             0x070b1
+               MX6QDL_PAD_SD1_DAT0__SD1_DATA0          0x070b1
+               MX6QDL_PAD_SD1_DAT1__SD1_DATA1          0x070b1
+               MX6QDL_PAD_SD1_DAT2__SD1_DATA2          0x070b1
+               MX6QDL_PAD_SD1_DAT3__SD1_DATA3          0x070b1
+               MX6QDL_PAD_SD3_CMD__GPIO7_IO02          0x170b0 /* SD1 CD */
+       >;
+};
+
+&ipu1_di0_disp0 {
+       remote-endpoint = <&display0_in>;
+};
+
+&reg_lcd0_pwr {
+       status = "disabled";
+};
diff --git a/arch/arm/boot/dts/imx6dl-tx6s-8035.dts b/arch/arm/boot/dts/imx6dl-tx6s-8035.dts
new file mode 100644 (file)
index 0000000..f988950
--- /dev/null
@@ -0,0 +1,253 @@
+/*
+ * Copyright 2015-2016 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * 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
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "imx6dl.dtsi"
+#include "imx6qdl-tx6.dtsi"
+
+/ {
+       model = "Ka-Ro electronics TX6S-8035 Module";
+       compatible = "karo,imx6dl-tx6dl", "fsl,imx6dl";
+
+       aliases {
+               display = &display;
+               ipu1 = &ipu1;
+       };
+
+       cpus {
+               /delete-node/ cpu@1;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lcd0_pwr>;
+               enable-gpios = <&gpio3 29 GPIO_ACTIVE_HIGH>;
+               power-supply = <&reg_lcd1_pwr>;
+               /*
+                * a poor man's way to create a 1:1 relationship between
+                * the PWM value and the actual duty cycle
+                */
+               brightness-levels = < 0  1  2  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>;
+               default-brightness-level = <50>;
+       };
+
+       display: display@di0 {
+               compatible = "fsl,imx-parallel-display";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_disp0_2>;
+               interface-pix-fmt = "rgb24";
+               status = "okay";
+
+               port {
+                       display0_in: endpoint {
+                               remote-endpoint = <&ipu1_di0_disp0>;
+                       };
+               };
+
+               display-timings {
+                       native-mode = <&vga>;
+
+                       vga: VGA {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <48>;
+                               hsync-len = <96>;
+                               hfront-porch = <16>;
+                               vback-porch = <31>;
+                               vsync-len = <2>;
+                               vfront-porch = <12>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ETV570 {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <114>;
+                               hsync-len = <30>;
+                               hfront-porch = <16>;
+                               vback-porch = <32>;
+                               vsync-len = <3>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0350 {
+                               clock-frequency = <6413760>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <34>;
+                               hsync-len = <34>;
+                               hfront-porch = <20>;
+                               vback-porch = <15>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0430 {
+                               clock-frequency = <9009000>;
+                               hactive = <480>;
+                               vactive = <272>;
+                               hback-porch = <2>;
+                               hsync-len = <41>;
+                               hfront-porch = <2>;
+                               vback-porch = <2>;
+                               vsync-len = <10>;
+                               vfront-porch = <2>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       ET0500 {
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0700 { /* same as ET0500 */
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ETQ570 {
+                               clock-frequency = <6596040>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <38>;
+                               hsync-len = <30>;
+                               hfront-porch = <30>;
+                               vback-porch = <16>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+               };
+       };
+};
+
+&ds1339 {
+       status = "disabled";
+};
+
+&gpmi {
+       status = "disabled";
+};
+
+&ipu1_di0_disp0 {
+       remote-endpoint = <&display0_in>;
+};
+
+&reg_lcd0_pwr {
+       status = "disabled";
+};
+
+&usdhc4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc4>;
+       bus-width = <4>;
+       non-removable;
+       no-1-8-v;
+       fsl,wp-controller;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_usdhc4: usdhc4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD             0x070b1
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK             0x070b1
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0          0x070b1
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1          0x070b1
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2          0x070b1
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3          0x070b1
+                       MX6QDL_PAD_NANDF_ALE__SD4_RESET         0x0b0b1
+               >;
+       };
+};
index 5fe465c2814ecb982a871a5e4274cac714591b82..b7a72840b7f0c73c72e676187442e9299a3157f0 100644 (file)
@@ -1,12 +1,42 @@
 /*
- * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
+ * Copyright 2014-2016 Lothar Waßmann <LW@KARO-electronics.de>
  *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 at the following locations:
+ * 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
+ * whole.
  *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
diff --git a/arch/arm/boot/dts/imx6dl-tx6u-8033.dts b/arch/arm/boot/dts/imx6dl-tx6u-8033.dts
new file mode 100644 (file)
index 0000000..4d3204a
--- /dev/null
@@ -0,0 +1,248 @@
+/*
+ * Copyright 2014-2016 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * 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
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "imx6dl.dtsi"
+#include "imx6qdl-tx6.dtsi"
+
+/ {
+       model = "Ka-Ro electronics TX6U-8033 Module";
+       compatible = "karo,imx6dl-tx6dl", "fsl,imx6dl";
+
+       aliases {
+               display = &display;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lcd0_pwr>;
+               enable-gpios = <&gpio3 29 GPIO_ACTIVE_HIGH>;
+               power-supply = <&reg_lcd1_pwr>;
+               /*
+                * a poor man's way to create a 1:1 relationship between
+                * the PWM value and the actual duty cycle
+                */
+               brightness-levels = < 0  1  2  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>;
+               default-brightness-level = <50>;
+       };
+
+       display: display@di0 {
+               compatible = "fsl,imx-parallel-display";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_disp0_2>;
+               interface-pix-fmt = "rgb24";
+               status = "okay";
+
+               port {
+                       display0_in: endpoint {
+                               remote-endpoint = <&ipu1_di0_disp0>;
+                       };
+               };
+
+               display-timings {
+                       native-mode = <&vga>;
+
+                       vga: VGA {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <48>;
+                               hsync-len = <96>;
+                               hfront-porch = <16>;
+                               vback-porch = <31>;
+                               vsync-len = <2>;
+                               vfront-porch = <12>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ETV570 {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <114>;
+                               hsync-len = <30>;
+                               hfront-porch = <16>;
+                               vback-porch = <32>;
+                               vsync-len = <3>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0350 {
+                               clock-frequency = <6413760>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <34>;
+                               hsync-len = <34>;
+                               hfront-porch = <20>;
+                               vback-porch = <15>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0430 {
+                               clock-frequency = <9009000>;
+                               hactive = <480>;
+                               vactive = <272>;
+                               hback-porch = <2>;
+                               hsync-len = <41>;
+                               hfront-porch = <2>;
+                               vback-porch = <2>;
+                               vsync-len = <10>;
+                               vfront-porch = <2>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       ET0500 {
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0700 { /* same as ET0500 */
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ETQ570 {
+                               clock-frequency = <6596040>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <38>;
+                               hsync-len = <30>;
+                               hfront-porch = <30>;
+                               vback-porch = <16>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+               };
+       };
+};
+
+&ds1339 {
+       status = "disabled";
+};
+
+&gpmi {
+       status = "disabled";
+};
+
+&ipu1_di0_disp0 {
+       remote-endpoint = <&display0_in>;
+};
+
+&reg_lcd0_pwr {
+       status = "disabled";
+};
+
+&usdhc4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc4>;
+       bus-width = <4>;
+       non-removable;
+       no-1-8-v;
+       fsl,wp-controller;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_usdhc4: usdhc4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD             0x070b1
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK             0x070b1
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0          0x070b1
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1          0x070b1
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2          0x070b1
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3          0x070b1
+                       MX6QDL_PAD_NANDF_ALE__SD4_RESET         0x0b0b1
+               >;
+       };
+};
index c275eecc9472006de381c2a450025badea821f2c..22b7c3493c9454210683c12cc9853cfeb38a2256 100644 (file)
@@ -1,12 +1,42 @@
 /*
- * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
+ * Copyright 2014-2016 Lothar Waßmann <LW@KARO-electronics.de>
  *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 at the following locations:
+ * 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
+ * whole.
  *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
        };
 };
 
-&iomuxc {
-       imx6dl-tx6u-811x {
-               pinctrl_eeti: eetigrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b1 /* Interrupt */
-                       >;
-               };
-       };
-};
-
 &kpp {
        status = "disabled"; /* pad conflict with backlight1 PWM */
 };
 &pwm1 {
        status = "okay";
 };
+
+&iomuxc {
+       pinctrl_eeti: eetigrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b1 /* Interrupt */
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6dl-tx6u-81xx-mb7.dts b/arch/arm/boot/dts/imx6dl-tx6u-81xx-mb7.dts
new file mode 100644 (file)
index 0000000..b9a783f
--- /dev/null
@@ -0,0 +1,255 @@
+/*
+ * Copyright 2016 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * 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
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "imx6dl.dtsi"
+#include "imx6qdl-tx6.dtsi"
+
+/ {
+       model = "Ka-Ro electronics TX6U-81xx Module on MB7 baseboard";
+       compatible = "karo,imx6dl-tx6dl", "fsl,imx6dl";
+
+       aliases {
+               display = &lvds0;
+               lvds0 = &lvds0;
+               lvds1 = &lvds1;
+       };
+
+       backlight0: backlight0 {
+               compatible = "pwm-backlight";
+               pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
+               power-supply = <&reg_lcd0_pwr>;
+               /*
+                * a poor man's way to create a 1:1 relationship between
+                * the PWM value and the actual duty cycle
+                */
+               brightness-levels = < 0  1  2  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>;
+               default-brightness-level = <50>;
+       };
+
+       backlight1: backlight1 {
+               compatible = "pwm-backlight";
+               pwms = <&pwm1 0 500000 PWM_POLARITY_INVERTED>;
+               power-supply = <&reg_lcd1_pwr>;
+               /*
+                * a poor man's way to create a 1:1 relationship between
+                * the PWM value and the actual duty cycle
+                */
+               brightness-levels = < 0  1  2  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>;
+               default-brightness-level = <50>;
+       };
+};
+
+&can1 {
+       status = "disabled";
+};
+
+&can2 {
+       xceiver-supply = <&reg_3v3>;
+};
+
+&i2c3 {
+       polytouch1: eeti@04 {
+               compatible = "eeti,egalax_ts";
+               reg = <0x04>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_eeti>;
+               interrupts-extended = <&gpio3 22 IRQ_TYPE_EDGE_FALLING>;
+               wakeup-gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
+               wakeup-source;
+       };
+};
+
+&kpp {
+       status = "disabled"; /* pads partially clash with backlight1 PWM */
+};
+
+&ldb {
+       status = "okay";
+
+       lvds0: lvds-channel@0 {
+               fsl,data-mapping = "spwg";
+               fsl,data-width = <18>;
+               status = "okay";
+
+               display-timings {
+                       native-mode = <&lvds0_timing1>;
+
+                       lvds0_timing0: hsd100pxn1 {
+                               clock-frequency = <65000000>;
+                               hactive = <1024>;
+                               vactive = <768>;
+                               hback-porch = <220>;
+                               hfront-porch = <40>;
+                               vback-porch = <21>;
+                               vfront-porch = <7>;
+                               hsync-len = <60>;
+                               vsync-len = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       lvds0_timing1: VGA {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <48>;
+                               hfront-porch = <16>;
+                               vback-porch = <31>;
+                               vfront-porch = <12>;
+                               hsync-len = <96>;
+                               vsync-len = <2>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       lvds0_timing2: nl12880bc20 {
+                               clock-frequency = <71000000>;
+                               hactive = <1280>;
+                               vactive = <800>;
+                               hback-porch = <50>;
+                               hfront-porch = <50>;
+                               vback-porch = <5>;
+                               vfront-porch = <5>;
+                               hsync-len = <60>;
+                               vsync-len = <13>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+               };
+       };
+
+       lvds1: lvds-channel@1 {
+               fsl,data-mapping = "spwg";
+               fsl,data-width = <18>;
+               status = "okay";
+
+               display-timings {
+                       native-mode = <&lvds1_timing2>;
+
+                       lvds1_timing0: hsd100pxn1 {
+                               clock-frequency = <65000000>;
+                               hactive = <1024>;
+                               vactive = <768>;
+                               hback-porch = <220>;
+                               hfront-porch = <40>;
+                               vback-porch = <21>;
+                               vfront-porch = <7>;
+                               hsync-len = <60>;
+                               vsync-len = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       lvds1_timing1: VGA {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <48>;
+                               hfront-porch = <16>;
+                               vback-porch = <31>;
+                               vfront-porch = <12>;
+                               hsync-len = <96>;
+                               vsync-len = <2>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       lvds1_timing2: nl12880bc20 {
+                               clock-frequency = <71000000>;
+                               hactive = <1280>;
+                               vactive = <800>;
+                               hback-porch = <50>;
+                               hfront-porch = <50>;
+                               vback-porch = <5>;
+                               vfront-porch = <5>;
+                               hsync-len = <60>;
+                               vsync-len = <13>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+               };
+       };
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_eeti: eetigrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b1 /* Interrupt */
+               >;
+       };
+};
index b18fae10b2e3fe568ca562f42340fdca019b58e6..65e95ae7509a45cd408fe5fc58bfed2111c605b7 100644 (file)
@@ -1,12 +1,42 @@
 /*
- * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
+ * Copyright 2014-2016 Lothar Waßmann <LW@KARO-electronics.de>
  *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 at the following locations:
+ * 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
+ * whole.
  *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index b58ec9c966c8139e87ffe28912bb40f1bf460d46..20cd0e7b3e210231f6c834e3f5f2104c12abd1e1 100644 (file)
@@ -1,12 +1,42 @@
 /*
- * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
+ * Copyright 2014-2016 Lothar Waßmann <LW@KARO-electronics.de>
  *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 at the following locations:
+ * 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
+ * whole.
  *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
index 0bb9a9de62a9249d278ec5c1fdb67ad8b05fe5e6..9ed243b704ff5c490e46bfa17320cb040e5ad5e5 100644 (file)
@@ -1,12 +1,42 @@
 /*
- * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
+ * Copyright 2014-2016 Lothar Waßmann <LW@KARO-electronics.de>
  *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 at the following locations:
+ * 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
+ * whole.
  *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
        status = "disabled";
 };
 
-&iomuxc {
-       imx6qdl-tx6 {
-               pinctrl_usdhc4: usdhc4grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD4_CMD__SD4_CMD             0x070b1
-                               MX6QDL_PAD_SD4_CLK__SD4_CLK             0x070b1
-                               MX6QDL_PAD_SD4_DAT0__SD4_DATA0          0x070b1
-                               MX6QDL_PAD_SD4_DAT1__SD4_DATA1          0x070b1
-                               MX6QDL_PAD_SD4_DAT2__SD4_DATA2          0x070b1
-                               MX6QDL_PAD_SD4_DAT3__SD4_DATA3          0x070b1
-                               MX6QDL_PAD_NANDF_ALE__SD4_RESET         0x0b0b1
-                       >;
-               };
-       };
-};
-
 &ipu1_di0_disp0 {
        remote-endpoint = <&display0_in>;
 };
        fsl,wp-controller;
        status = "okay";
 };
+
+&iomuxc {
+       pinctrl_usdhc4: usdhc4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD             0x070b1
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK             0x070b1
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0          0x070b1
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1          0x070b1
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2          0x070b1
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3          0x070b1
+                       MX6QDL_PAD_NANDF_ALE__SD4_RESET         0x0b0b1
+               >;
+       };
+};
index b96d80a35d3909578419d7027ef23f23a82a324c..347b531d37637a31cb5c89ca7a52b3239cea451f 100644 (file)
@@ -1,12 +1,42 @@
 /*
- * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
+ * Copyright 2014-2016 Lothar Waßmann <LW@KARO-electronics.de>
  *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 at the following locations:
+ * 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
+ * whole.
  *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
        status = "disabled";
 };
 
-&iomuxc {
-       imx6qdl-tx6 {
-               pinctrl_usdhc4: usdhc4grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD4_CMD__SD4_CMD             0x070b1
-                               MX6QDL_PAD_SD4_CLK__SD4_CLK             0x070b1
-                               MX6QDL_PAD_SD4_DAT0__SD4_DATA0          0x070b1
-                               MX6QDL_PAD_SD4_DAT1__SD4_DATA1          0x070b1
-                               MX6QDL_PAD_SD4_DAT2__SD4_DATA2          0x070b1
-                               MX6QDL_PAD_SD4_DAT3__SD4_DATA3          0x070b1
-                               MX6QDL_PAD_NANDF_ALE__SD4_RESET         0x0b0b1
-                       >;
-               };
-       };
-};
-
 &ipu1_di0_disp0 {
        remote-endpoint = <&display0_in>;
 };
        fsl,wp-controller;
        status = "okay";
 };
+
+&iomuxc {
+       pinctrl_usdhc4: usdhc4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD             0x070b1
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK             0x070b1
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0          0x070b1
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1          0x070b1
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2          0x070b1
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3          0x070b1
+                       MX6QDL_PAD_NANDF_ALE__SD4_RESET         0x0b0b1
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6q-tx6q-1036.dts b/arch/arm/boot/dts/imx6q-tx6q-1036.dts
new file mode 100644 (file)
index 0000000..7c152e3
--- /dev/null
@@ -0,0 +1,252 @@
+/*
+ * Copyright 2014-2016 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * 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
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "imx6q.dtsi"
+#include "imx6qdl-tx6.dtsi"
+
+/ {
+       model = "Ka-Ro electronics TX6Q-1036 Module";
+       compatible = "karo,imx6q-tx6q", "fsl,imx6q";
+
+       aliases {
+               display = &display;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lcd0_pwr>;
+               enable-gpios = <&gpio3 29 GPIO_ACTIVE_HIGH>;
+               power-supply = <&reg_lcd1_pwr>;
+               /*
+                * a poor man's way to create a 1:1 relationship between
+                * the PWM value and the actual duty cycle
+                */
+               brightness-levels = < 0  1  2  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>;
+               default-brightness-level = <50>;
+       };
+
+       display: display@di0 {
+               compatible = "fsl,imx-parallel-display";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_disp0_2>;
+               interface-pix-fmt = "rgb24";
+               status = "okay";
+
+               port {
+                       display0_in: endpoint {
+                               remote-endpoint = <&ipu1_di0_disp0>;
+                       };
+               };
+
+               display-timings {
+                       native-mode = <&vga>;
+
+                       vga: VGA {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <48>;
+                               hsync-len = <96>;
+                               hfront-porch = <16>;
+                               vback-porch = <31>;
+                               vsync-len = <2>;
+                               vfront-porch = <12>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ETV570 {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <114>;
+                               hsync-len = <30>;
+                               hfront-porch = <16>;
+                               vback-porch = <32>;
+                               vsync-len = <3>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0350 {
+                               clock-frequency = <6413760>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <34>;
+                               hsync-len = <34>;
+                               hfront-porch = <20>;
+                               vback-porch = <15>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0430 {
+                               clock-frequency = <9009000>;
+                               hactive = <480>;
+                               vactive = <272>;
+                               hback-porch = <2>;
+                               hsync-len = <41>;
+                               hfront-porch = <2>;
+                               vback-porch = <2>;
+                               vsync-len = <10>;
+                               vfront-porch = <2>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       ET0500 {
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0700 { /* same as ET0500 */
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ETQ570 {
+                               clock-frequency = <6596040>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <38>;
+                               hsync-len = <30>;
+                               hfront-porch = <30>;
+                               vback-porch = <16>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+               };
+       };
+};
+
+&ds1339 {
+       status = "disabled";
+};
+
+&gpmi {
+       status = "disabled";
+};
+
+&ipu1_di0_disp0 {
+       remote-endpoint = <&display0_in>;
+};
+
+&ipu2 {
+       status = "disabled";
+};
+
+&reg_lcd0_pwr {
+       status = "disabled";
+};
+
+&usdhc4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc4>;
+       bus-width = <4>;
+       non-removable;
+       no-1-8-v;
+       fsl,wp-controller;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_usdhc4: usdhc4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD             0x070b1
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK             0x070b1
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0          0x070b1
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1          0x070b1
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2          0x070b1
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3          0x070b1
+                       MX6QDL_PAD_NANDF_ALE__SD4_RESET         0x0b0b1
+               >;
+       };
+};
index 88aa1e4c792d2c2c5d56d8a819cac4640bb46369..a7df94c60417eb267685ab75d79a3ae862564292 100644 (file)
@@ -1,12 +1,42 @@
 /*
- * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
+ * Copyright 2014-2016 Lothar Waßmann <LW@KARO-electronics.de>
  *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 at the following locations:
+ * 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
+ * whole.
  *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
        };
 };
 
-&iomuxc {
-       imx6q-tx6q-1110 {
-               pinctrl_eeti: eetigrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b1 /* Interrupt */
-                       >;
-               };
-       };
-};
-
 &kpp {
        status = "disabled"; /* pad conflict with backlight1 PWM */
 };
 &sata {
        status = "okay";
 };
+
+&iomuxc {
+       pinctrl_eeti: eetigrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b1 /* Interrupt */
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6q-tx6q-11x0-mb7.dts b/arch/arm/boot/dts/imx6q-tx6q-11x0-mb7.dts
new file mode 100644 (file)
index 0000000..d78b129
--- /dev/null
@@ -0,0 +1,264 @@
+/*
+ * Copyright 2016 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * 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
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "imx6q.dtsi"
+#include "imx6qdl-tx6.dtsi"
+
+/ {
+       model = "Ka-Ro electronics TX6Q-1110/-1130 Module on MB7 baseboard";
+       compatible = "karo,imx6q-tx6q", "fsl,imx6q";
+
+       aliases {
+               display = &lvds0;
+               ipu1 = &ipu2;
+               lvds0 = &lvds0;
+               lvds1 = &lvds1;
+       };
+
+       backlight0: backlight0 {
+               compatible = "pwm-backlight";
+               pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
+               power-supply = <&reg_lcd0_pwr>;
+               /*
+                * a poor man's way to create a 1:1 relationship between
+                * the PWM value and the actual duty cycle
+                */
+               brightness-levels = < 0  1  2  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>;
+               default-brightness-level = <50>;
+       };
+
+       backlight1: backlight1 {
+               compatible = "pwm-backlight";
+               pwms = <&pwm1 0 500000 PWM_POLARITY_INVERTED>;
+               power-supply = <&reg_lcd1_pwr>;
+               /*
+                * a poor man's way to create a 1:1 relationship between
+                * the PWM value and the actual duty cycle
+                */
+               brightness-levels = < 0  1  2  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>;
+               default-brightness-level = <50>;
+       };
+};
+
+&can1 {
+       status = "disabled";
+};
+
+&can2 {
+       xceiver-supply = <&reg_3v3>;
+};
+
+&i2c3 {
+       polytouch1: eeti@04 {
+               compatible = "eeti,egalax_ts";
+               reg = <0x04>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_eeti>;
+               interrupts-extended = <&gpio3 22 IRQ_TYPE_EDGE_FALLING>;
+               wakeup-gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
+               wakeup-source;
+       };
+};
+
+&ipu2 {
+       status = "disabled";
+};
+
+&kpp {
+       status = "disabled"; /* pads partially clash with backlight1 PWM */
+};
+
+&ldb {
+       status = "okay";
+
+       lvds0: lvds-channel@0 {
+               fsl,data-mapping = "spwg";
+               fsl,data-width = <18>;
+               status = "okay";
+
+               display-timings {
+                       native-mode = <&lvds0_timing1>;
+
+                       lvds0_timing0: hsd100pxn1 {
+                               clock-frequency = <65000000>;
+                               hactive = <1024>;
+                               vactive = <768>;
+                               hback-porch = <220>;
+                               hfront-porch = <40>;
+                               vback-porch = <21>;
+                               vfront-porch = <7>;
+                               hsync-len = <60>;
+                               vsync-len = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       lvds0_timing1: VGA {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <48>;
+                               hfront-porch = <16>;
+                               vback-porch = <31>;
+                               vfront-porch = <12>;
+                               hsync-len = <96>;
+                               vsync-len = <2>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       lvds0_timing2: nl12880bc20 {
+                               clock-frequency = <71000000>;
+                               hactive = <1280>;
+                               vactive = <800>;
+                               hback-porch = <50>;
+                               hfront-porch = <50>;
+                               vback-porch = <5>;
+                               vfront-porch = <5>;
+                               hsync-len = <60>;
+                               vsync-len = <13>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+               };
+       };
+
+       lvds1: lvds-channel@1 {
+               fsl,data-mapping = "spwg";
+               fsl,data-width = <18>;
+               status = "okay";
+
+               display-timings {
+                       native-mode = <&lvds1_timing2>;
+
+                       lvds1_timing0: hsd100pxn1 {
+                               clock-frequency = <65000000>;
+                               hactive = <1024>;
+                               vactive = <768>;
+                               hback-porch = <220>;
+                               hfront-porch = <40>;
+                               vback-porch = <21>;
+                               vfront-porch = <7>;
+                               hsync-len = <60>;
+                               vsync-len = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       lvds1_timing1: VGA {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <48>;
+                               hfront-porch = <16>;
+                               vback-porch = <31>;
+                               vfront-porch = <12>;
+                               hsync-len = <96>;
+                               vsync-len = <2>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       lvds1_timing2: nl12880bc20 {
+                               clock-frequency = <71000000>;
+                               hactive = <1280>;
+                               vactive = <800>;
+                               hback-porch = <50>;
+                               hfront-porch = <50>;
+                               vback-porch = <5>;
+                               vfront-porch = <5>;
+                               hsync-len = <60>;
+                               vsync-len = <13>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+               };
+       };
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&sata {
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_eeti: eetigrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b1 /* Interrupt */
+               >;
+       };
+};
index 399103b8e2c948110154fa0b109e917a192061b0..4a9957f36cd32da874c0182e99a83ce52d5af086 100644 (file)
 
                        iomuxc: iomuxc@020e0000 {
                                compatible = "fsl,imx6q-iomuxc";
-
-                               ipu2 {
-                                       pinctrl_ipu2_1: ipu2grp-1 {
-                                               fsl,pins = <
-                                                       MX6QDL_PAD_DI0_DISP_CLK__IPU2_DI0_DISP_CLK 0x10
-                                                       MX6QDL_PAD_DI0_PIN15__IPU2_DI0_PIN15       0x10
-                                                       MX6QDL_PAD_DI0_PIN2__IPU2_DI0_PIN02        0x10
-                                                       MX6QDL_PAD_DI0_PIN3__IPU2_DI0_PIN03        0x10
-                                                       MX6QDL_PAD_DI0_PIN4__IPU2_DI0_PIN04        0x80000000
-                                                       MX6QDL_PAD_DISP0_DAT0__IPU2_DISP0_DATA00   0x10
-                                                       MX6QDL_PAD_DISP0_DAT1__IPU2_DISP0_DATA01   0x10
-                                                       MX6QDL_PAD_DISP0_DAT2__IPU2_DISP0_DATA02   0x10
-                                                       MX6QDL_PAD_DISP0_DAT3__IPU2_DISP0_DATA03   0x10
-                                                       MX6QDL_PAD_DISP0_DAT4__IPU2_DISP0_DATA04   0x10
-                                                       MX6QDL_PAD_DISP0_DAT5__IPU2_DISP0_DATA05   0x10
-                                                       MX6QDL_PAD_DISP0_DAT6__IPU2_DISP0_DATA06   0x10
-                                                       MX6QDL_PAD_DISP0_DAT7__IPU2_DISP0_DATA07   0x10
-                                                       MX6QDL_PAD_DISP0_DAT8__IPU2_DISP0_DATA08   0x10
-                                                       MX6QDL_PAD_DISP0_DAT9__IPU2_DISP0_DATA09   0x10
-                                                       MX6QDL_PAD_DISP0_DAT10__IPU2_DISP0_DATA10  0x10
-                                                       MX6QDL_PAD_DISP0_DAT11__IPU2_DISP0_DATA11  0x10
-                                                       MX6QDL_PAD_DISP0_DAT12__IPU2_DISP0_DATA12  0x10
-                                                       MX6QDL_PAD_DISP0_DAT13__IPU2_DISP0_DATA13  0x10
-                                                       MX6QDL_PAD_DISP0_DAT14__IPU2_DISP0_DATA14  0x10
-                                                       MX6QDL_PAD_DISP0_DAT15__IPU2_DISP0_DATA15  0x10
-                                                       MX6QDL_PAD_DISP0_DAT16__IPU2_DISP0_DATA16  0x10
-                                                       MX6QDL_PAD_DISP0_DAT17__IPU2_DISP0_DATA17  0x10
-                                                       MX6QDL_PAD_DISP0_DAT18__IPU2_DISP0_DATA18  0x10
-                                                       MX6QDL_PAD_DISP0_DAT19__IPU2_DISP0_DATA19  0x10
-                                                       MX6QDL_PAD_DISP0_DAT20__IPU2_DISP0_DATA20  0x10
-                                                       MX6QDL_PAD_DISP0_DAT21__IPU2_DISP0_DATA21  0x10
-                                                       MX6QDL_PAD_DISP0_DAT22__IPU2_DISP0_DATA22  0x10
-                                                       MX6QDL_PAD_DISP0_DAT23__IPU2_DISP0_DATA23  0x10
-                                               >;
-                                       };
-                               };
                        };
                };
 
index 13cb7ccfea44dd653e8100669d415b88699c7831..c7de73a0126100d434ea2d71ccac8c20f15dd2a0 100644 (file)
@@ -1,12 +1,42 @@
 /*
- * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
+ * Copyright 2014-2016 Lothar Waßmann <LW@KARO-electronics.de>
  *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 at the following locations:
+ * 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
+ * whole.
  *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 #include <dt-bindings/gpio/gpio.h>
        clocks {
                #address-cells = <1>;
                #size-cells = <0>;
+
                mclk: clock@0 {
                        compatible = "fixed-clock";
                        reg = <0>;
                        #clock-cells = <0>;
-                       clock-frequency = <27000000>;
+                       clock-frequency = <26000000>;
                };
        };
 
                };
        };
 
-       regulators {
-               compatible = "simple-bus";
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               reg_3v3_etn: regulator@0 {
-                       compatible = "regulator-fixed";
-                       reg = <0>;
-                       regulator-name = "3V3_ETN";
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&pinctrl_etnphy_power>;
-                       gpio = <&gpio3 20 GPIO_ACTIVE_HIGH>;
-                       enable-active-high;
-               };
+       reg_3v3_etn: reg-3v3-etn {
+               compatible = "regulator-fixed";
+               regulator-name = "3V3_ETN";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_etnphy_power>;
+               gpio = <&gpio3 20 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
 
-               reg_2v5: regulator@1 {
-                       compatible = "regulator-fixed";
-                       reg = <1>;
-                       regulator-name = "2V5";
-                       regulator-min-microvolt = <2500000>;
-                       regulator-max-microvolt = <2500000>;
-                       regulator-always-on;
-               };
+       reg_2v5: reg-2v5 {
+               compatible = "regulator-fixed";
+               regulator-name = "2V5";
+               regulator-min-microvolt = <2500000>;
+               regulator-max-microvolt = <2500000>;
+               regulator-always-on;
+       };
 
-               reg_3v3: regulator@2 {
-                       compatible = "regulator-fixed";
-                       reg = <2>;
-                       regulator-name = "3V3";
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-                       regulator-always-on;
-               };
+       reg_3v3: reg-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
 
-               reg_can_xcvr: regulator@3 {
-                       compatible = "regulator-fixed";
-                       reg = <3>;
-                       regulator-name = "CAN XCVR";
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&pinctrl_flexcan_xcvr>;
-                       gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
-                       enable-active-low;
-               };
+       reg_can_xcvr: reg-can-xcvr {
+               compatible = "regulator-fixed";
+               regulator-name = "CAN XCVR";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_flexcan_xcvr>;
+               gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
+               enable-active-low;
+       };
 
-               reg_lcd0_pwr: regulator@4 {
-                       compatible = "regulator-fixed";
-                       reg = <4>;
-                       regulator-name = "LCD0 POWER";
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&pinctrl_lcd0_pwr>;
-                       gpio = <&gpio3 29 GPIO_ACTIVE_HIGH>;
-                       enable-active-high;
-                       regulator-boot-on;
-                       regulator-always-on;
-               };
+       reg_lcd0_pwr: reg-lcd0-pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "LCD0 POWER";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lcd0_pwr>;
+               gpio = <&gpio3 29 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-boot-on;
+       };
 
-               reg_lcd1_pwr: regulator@5 {
-                       compatible = "regulator-fixed";
-                       reg = <5>;
-                       regulator-name = "LCD1 POWER";
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&pinctrl_lcd1_pwr>;
-                       gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
-                       enable-active-high;
-                       regulator-boot-on;
-                       regulator-always-on;
-               };
+       reg_lcd1_pwr: reg-lcd1-pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "LCD1 POWER";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lcd1_pwr>;
+               gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-boot-on;
+       };
 
-               reg_usbh1_vbus: regulator@6 {
-                       compatible = "regulator-fixed";
-                       reg = <6>;
-                       regulator-name = "usbh1_vbus";
-                       regulator-min-microvolt = <5000000>;
-                       regulator-max-microvolt = <5000000>;
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&pinctrl_usbh1_vbus>;
-                       gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
-                       enable-active-high;
-               };
+       reg_usbh1_vbus: reg-usbh1-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usbh1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usbh1_vbus>;
+               gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
 
-               reg_usbotg_vbus: regulator@7 {
-                       compatible = "regulator-fixed";
-                       reg = <7>;
-                       regulator-name = "usbotg_vbus";
-                       regulator-min-microvolt = <5000000>;
-                       regulator-max-microvolt = <5000000>;
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&pinctrl_usbotg_vbus>;
-                       gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
-                       enable-active-high;
-               };
+       reg_usbotg_vbus: reg-usbotg-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usbotg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usbotg_vbus>;
+               gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
        };
 
        sound {
                &gpio2 30 GPIO_ACTIVE_HIGH
                &gpio3 19 GPIO_ACTIVE_HIGH
        >;
-       status = "okay";
+       status = "disabled";
 
        spidev0: spi@0 {
                compatible = "spidev";
 &fec {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet>;
+       clocks = <&clks IMX6QDL_CLK_ENET>,
+                <&clks IMX6QDL_CLK_ENET>,
+                <&clks IMX6QDL_CLK_ENET_REF>,
+                <&clks IMX6QDL_CLK_ENET_REF>;
+       clock-names = "ipg", "ahb", "ptp", "enet_out";
        phy-mode = "rmii";
        phy-reset-gpios = <&gpio7 6 GPIO_ACTIVE_HIGH>;
+       phy-reset-duration = <2>;
+       phy-handle = <&etnphy>;
        phy-supply = <&reg_3v3_etn>;
        status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               etnphy: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_enet_mdio>;
+                       interrupts-extended = <&gpio7 1 IRQ_TYPE_EDGE_FALLING>;
+               };
+       };
 };
 
 &gpmi {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_hog>;
 
-       imx6qdl-tx6 {
-               pinctrl_hog: hoggrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_A18__GPIO2_IO20          0x1b0b1 /* LED */
-                               MX6QDL_PAD_SD3_DAT2__GPIO7_IO06         0x1b0b1 /* ETN PHY RESET */
-                               MX6QDL_PAD_SD3_DAT4__GPIO7_IO01         0x1b0b1 /* ETN PHY INT */
-                               MX6QDL_PAD_EIM_A25__GPIO5_IO02          0x1b0b1 /* PWR BTN */
-                       >;
-               };
+       pinctrl_hog: hoggrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_A18__GPIO2_IO20          0x1b0b1 /* LED */
+                       MX6QDL_PAD_SD3_DAT2__GPIO7_IO06         0x1b0b1 /* ETN PHY RESET */
+                       MX6QDL_PAD_SD3_DAT4__GPIO7_IO01         0x1b0b1 /* ETN PHY INT */
+                       MX6QDL_PAD_EIM_A25__GPIO5_IO02          0x1b0b1 /* PWR BTN */
+               >;
+       };
 
-               pinctrl_audmux: audmuxgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_KEY_ROW1__AUD5_RXD           0x130b0 /* SSI1_RXD */
-                               MX6QDL_PAD_KEY_ROW0__AUD5_TXD           0x110b0 /* SSI1_TXD */
-                               MX6QDL_PAD_KEY_COL0__AUD5_TXC           0x130b0 /* SSI1_CLK */
-                               MX6QDL_PAD_KEY_COL1__AUD5_TXFS          0x130b0 /* SSI1_FS */
-                       >;
-               };
+       pinctrl_audmux: audmuxgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_ROW1__AUD5_RXD           0x130b0 /* SSI1_RXD */
+                       MX6QDL_PAD_KEY_ROW0__AUD5_TXD           0x110b0 /* SSI1_TXD */
+                       MX6QDL_PAD_KEY_COL0__AUD5_TXC           0x130b0 /* SSI1_CLK */
+                       MX6QDL_PAD_KEY_COL1__AUD5_TXFS          0x130b0 /* SSI1_FS */
+               >;
+       };
 
-               pinctrl_disp0_1: disp0grp-1 {
-                       fsl,pins = <
-                               MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x10
-                               MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15       0x10
-                               MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02        0x10
-                               MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03        0x10
-                               /* PAD DISP0_DAT0 is used for the Flexcan transceiver control */
-                               MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01   0x10
-                               MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02   0x10
-                               MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03   0x10
-                               MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04   0x10
-                               MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05   0x10
-                               MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06   0x10
-                               MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07   0x10
-                               MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08   0x10
-                               MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09   0x10
-                               MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10  0x10
-                               MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11  0x10
-                               MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12  0x10
-                               MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13  0x10
-                               MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14  0x10
-                               MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15  0x10
-                               MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16  0x10
-                               MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17  0x10
-                               MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18  0x10
-                               MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19  0x10
-                               MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20  0x10
-                               MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21  0x10
-                               MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22  0x10
-                               MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23  0x10
-                       >;
-               };
+       pinctrl_disp0_1: disp0grp-1 {
+               fsl,pins = <
+                       MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x10
+                       MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15       0x10
+                       MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02        0x10
+                       MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03        0x10
+                       /* PAD DISP0_DAT0 is used for the Flexcan transceiver control */
+                       MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01   0x10
+                       MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02   0x10
+                       MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03   0x10
+                       MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04   0x10
+                       MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05   0x10
+                       MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06   0x10
+                       MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07   0x10
+                       MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08   0x10
+                       MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09   0x10
+                       MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10  0x10
+                       MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11  0x10
+                       MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12  0x10
+                       MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13  0x10
+                       MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14  0x10
+                       MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15  0x10
+                       MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16  0x10
+                       MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17  0x10
+                       MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18  0x10
+                       MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19  0x10
+                       MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20  0x10
+                       MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21  0x10
+                       MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22  0x10
+                       MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23  0x10
+               >;
+       };
 
-               pinctrl_disp0_2: disp0grp-2 {
-                       fsl,pins = <
-                               MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x10
-                               MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15       0x10
-                               MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02        0x10
-                               MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03        0x10
-                               MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00   0x10
-                               MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01   0x10
-                               MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02   0x10
-                               MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03   0x10
-                               MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04   0x10
-                               MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05   0x10
-                               MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06   0x10
-                               MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07   0x10
-                               MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08   0x10
-                               MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09   0x10
-                               MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10  0x10
-                               MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11  0x10
-                               MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12  0x10
-                               MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13  0x10
-                               MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14  0x10
-                               MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15  0x10
-                               MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16  0x10
-                               MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17  0x10
-                               MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18  0x10
-                               MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19  0x10
-                               MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20  0x10
-                               MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21  0x10
-                               MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22  0x10
-                               MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23  0x10
-                       >;
-               };
+       pinctrl_disp0_2: disp0grp-2 {
+               fsl,pins = <
+                       MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x10
+                       MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15       0x10
+                       MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02        0x10
+                       MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03        0x10
+                       MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00   0x10
+                       MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01   0x10
+                       MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02   0x10
+                       MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03   0x10
+                       MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04   0x10
+                       MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05   0x10
+                       MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06   0x10
+                       MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07   0x10
+                       MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08   0x10
+                       MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09   0x10
+                       MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10  0x10
+                       MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11  0x10
+                       MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12  0x10
+                       MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13  0x10
+                       MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14  0x10
+                       MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15  0x10
+                       MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16  0x10
+                       MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17  0x10
+                       MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18  0x10
+                       MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19  0x10
+                       MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20  0x10
+                       MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21  0x10
+                       MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22  0x10
+                       MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23  0x10
+               >;
+       };
 
-               pinctrl_ecspi1: ecspi1grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_D18__ECSPI1_MOSI         0x0b0b0
-                               MX6QDL_PAD_EIM_D17__ECSPI1_MISO         0x0b0b0
-                               MX6QDL_PAD_EIM_D16__ECSPI1_SCLK         0x0b0b0
-                               MX6QDL_PAD_GPIO_19__ECSPI1_RDY          0x0b0b0
-                               MX6QDL_PAD_EIM_EB2__GPIO2_IO30          0x0b0b0 /* SPI CS0 */
-                               MX6QDL_PAD_EIM_D19__GPIO3_IO19          0x0b0b0 /* SPI CS1 */
-                       >;
-               };
+       pinctrl_ecspi1: ecspi1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D18__ECSPI1_MOSI         0x0b0b0
+                       MX6QDL_PAD_EIM_D17__ECSPI1_MISO         0x0b0b0
+                       MX6QDL_PAD_EIM_D16__ECSPI1_SCLK         0x0b0b0
+                       MX6QDL_PAD_GPIO_19__ECSPI1_RDY          0x0b0b0
+                       MX6QDL_PAD_EIM_EB2__GPIO2_IO30          0x0b0b0 /* SPI CS0 */
+                       MX6QDL_PAD_EIM_D19__GPIO3_IO19          0x0b0b0 /* SPI CS1 */
+               >;
+       };
 
-               pinctrl_edt_ft5x06: edt-ft5x06grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_NANDF_CS2__GPIO6_IO15        0x1b0b0 /* Interrupt */
-                               MX6QDL_PAD_EIM_A16__GPIO2_IO22          0x1b0b0 /* Reset */
-                               MX6QDL_PAD_EIM_A17__GPIO2_IO21          0x1b0b0 /* Wake */
-                       >;
-               };
+       pinctrl_edt_ft5x06: edt-ft5x06grp {
+               fsl,pins = <
+                       MX6QDL_PAD_NANDF_CS2__GPIO6_IO15        0x1b0b0 /* Interrupt */
+                       MX6QDL_PAD_EIM_A16__GPIO2_IO22          0x1b0b0 /* Reset */
+                       MX6QDL_PAD_EIM_A17__GPIO2_IO21          0x1b0b0 /* Wake */
+               >;
+       };
 
-               pinctrl_enet: enetgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_ENET_MDC__ENET_MDC           0x1b0b0
-                               MX6QDL_PAD_ENET_MDIO__ENET_MDIO         0x1b0b0
-                               MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0     0x1b0b0
-                               MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1     0x1b0b0
-                               MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER       0x1b0b0
-                               MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN       0x1b0b0
-                               MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0     0x1b0b0
-                               MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1     0x1b0b0
-                               MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN      0x1b0b0
-                       >;
-               };
+       pinctrl_enet: enetgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0     0x1b0b0
+                       MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1     0x1b0b0
+                       MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER       0x1b0b0
+                       MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN       0x1b0b0
+                       MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0     0x1b0b0
+                       MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1     0x1b0b0
+                       MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN      0x1b0b0
+               >;
+       };
 
-               pinctrl_etnphy_power: etnphy-pwrgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_D20__GPIO3_IO20          0x1b0b1 /* ETN PHY POWER */
-                       >;
-               };
+       pinctrl_enet_mdio: enet-mdiogrp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_MDC__ENET_MDC           0x1b0b0
+                       MX6QDL_PAD_ENET_MDIO__ENET_MDIO         0x1b0b0
+               >;
+       };
 
-               pinctrl_flexcan1: flexcan1grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_GPIO_7__FLEXCAN1_TX          0x1b0b0
-                               MX6QDL_PAD_GPIO_8__FLEXCAN1_RX          0x1b0b0
-                       >;
-               };
+       pinctrl_etnphy_power: etnphy-pwrgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D20__GPIO3_IO20          0x1b0b1 /* ETN PHY POWER */
+               >;
+       };
 
-               pinctrl_flexcan2: flexcan2grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX        0x1b0b0
-                               MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX        0x1b0b0
-                       >;
-               };
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_7__FLEXCAN1_TX          0x1b0b0
+                       MX6QDL_PAD_GPIO_8__FLEXCAN1_RX          0x1b0b0
+               >;
+       };
 
-               pinctrl_flexcan_xcvr: flexcan-xcvrgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_DISP0_DAT0__GPIO4_IO21       0x1b0b0 /* Flexcan XCVR enable */
-                       >;
-               };
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX        0x1b0b0
+                       MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX        0x1b0b0
+               >;
+       };
 
-               pinctrl_gpmi_nand: gpminandgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_NANDF_CLE__NAND_CLE          0x0b0b1
-                               MX6QDL_PAD_NANDF_ALE__NAND_ALE          0x0b0b1
-                               MX6QDL_PAD_NANDF_WP_B__NAND_WP_B        0x0b0b1
-                               MX6QDL_PAD_NANDF_RB0__NAND_READY_B      0x0b000
-                               MX6QDL_PAD_NANDF_CS0__NAND_CE0_B        0x0b0b1
-                               MX6QDL_PAD_SD4_CMD__NAND_RE_B           0x0b0b1
-                               MX6QDL_PAD_SD4_CLK__NAND_WE_B           0x0b0b1
-                               MX6QDL_PAD_NANDF_D0__NAND_DATA00        0x0b0b1
-                               MX6QDL_PAD_NANDF_D1__NAND_DATA01        0x0b0b1
-                               MX6QDL_PAD_NANDF_D2__NAND_DATA02        0x0b0b1
-                               MX6QDL_PAD_NANDF_D3__NAND_DATA03        0x0b0b1
-                               MX6QDL_PAD_NANDF_D4__NAND_DATA04        0x0b0b1
-                               MX6QDL_PAD_NANDF_D5__NAND_DATA05        0x0b0b1
-                               MX6QDL_PAD_NANDF_D6__NAND_DATA06        0x0b0b1
-                               MX6QDL_PAD_NANDF_D7__NAND_DATA07        0x0b0b1
-                       >;
-               };
+       pinctrl_flexcan_xcvr: flexcan-xcvrgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_DISP0_DAT0__GPIO4_IO21       0x1b0b0 /* Flexcan XCVR enable */
+               >;
+       };
 
-               pinctrl_i2c1: i2c1grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_D21__I2C1_SCL            0x4001b8b1
-                               MX6QDL_PAD_EIM_D28__I2C1_SDA            0x4001b8b1
-                       >;
-               };
+       pinctrl_gpmi_nand: gpminandgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_NANDF_CLE__NAND_CLE          0x0b0b1
+                       MX6QDL_PAD_NANDF_ALE__NAND_ALE          0x0b0b1
+                       MX6QDL_PAD_NANDF_WP_B__NAND_WP_B        0x0b0b1
+                       MX6QDL_PAD_NANDF_RB0__NAND_READY_B      0x0b000
+                       MX6QDL_PAD_NANDF_CS0__NAND_CE0_B        0x0b0b1
+                       MX6QDL_PAD_SD4_CMD__NAND_RE_B           0x0b0b1
+                       MX6QDL_PAD_SD4_CLK__NAND_WE_B           0x0b0b1
+                       MX6QDL_PAD_NANDF_D0__NAND_DATA00        0x0b0b1
+                       MX6QDL_PAD_NANDF_D1__NAND_DATA01        0x0b0b1
+                       MX6QDL_PAD_NANDF_D2__NAND_DATA02        0x0b0b1
+                       MX6QDL_PAD_NANDF_D3__NAND_DATA03        0x0b0b1
+                       MX6QDL_PAD_NANDF_D4__NAND_DATA04        0x0b0b1
+                       MX6QDL_PAD_NANDF_D5__NAND_DATA05        0x0b0b1
+                       MX6QDL_PAD_NANDF_D6__NAND_DATA06        0x0b0b1
+                       MX6QDL_PAD_NANDF_D7__NAND_DATA07        0x0b0b1
+               >;
+       };
 
-               pinctrl_i2c3: i2c3grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_GPIO_3__I2C3_SCL             0x4001b8b1
-                               MX6QDL_PAD_GPIO_6__I2C3_SDA             0x4001b8b1
-                       >;
-               };
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D21__I2C1_SCL            0x4001b8b1
+                       MX6QDL_PAD_EIM_D28__I2C1_SDA            0x4001b8b1
+               >;
+       };
 
-               pinctrl_kpp: kppgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_GPIO_9__KEY_COL6             0x1b0b1
-                               MX6QDL_PAD_GPIO_4__KEY_COL7             0x1b0b1
-                               MX6QDL_PAD_KEY_COL2__KEY_COL2           0x1b0b1
-                               MX6QDL_PAD_KEY_COL3__KEY_COL3           0x1b0b1
-                               MX6QDL_PAD_GPIO_2__KEY_ROW6             0x1b0b1
-                               MX6QDL_PAD_GPIO_5__KEY_ROW7             0x1b0b1
-                               MX6QDL_PAD_KEY_ROW2__KEY_ROW2           0x1b0b1
-                               MX6QDL_PAD_KEY_ROW3__KEY_ROW3           0x1b0b1
-                       >;
-               };
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_3__I2C3_SCL             0x4001b8b1
+                       MX6QDL_PAD_GPIO_6__I2C3_SDA             0x4001b8b1
+               >;
+       };
 
-               pinctrl_lcd0_pwr: lcd0-pwrgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_D29__GPIO3_IO29          0x1b0b1 /* LCD Reset */
-                       >;
-               };
+       pinctrl_kpp: kppgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_9__KEY_COL6             0x1b0b1
+                       MX6QDL_PAD_GPIO_4__KEY_COL7             0x1b0b1
+                       MX6QDL_PAD_KEY_COL2__KEY_COL2           0x1b0b1
+                       MX6QDL_PAD_KEY_COL3__KEY_COL3           0x1b0b1
+                       MX6QDL_PAD_GPIO_2__KEY_ROW6             0x1b0b1
+                       MX6QDL_PAD_GPIO_5__KEY_ROW7             0x1b0b1
+                       MX6QDL_PAD_KEY_ROW2__KEY_ROW2           0x1b0b1
+                       MX6QDL_PAD_KEY_ROW3__KEY_ROW3           0x1b0b1
+               >;
+       };
 
-               pinctrl_lcd1_pwr: lcd1-pwrgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_EB3__GPIO2_IO31          0x1b0b1 /* LCD Power Enable */
-                       >;
-               };
+       pinctrl_lcd0_pwr: lcd0-pwrgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D29__GPIO3_IO29          0x1b0b1 /* LCD Reset */
+               >;
+       };
 
-               pinctrl_pwm1: pwm1grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_GPIO_9__PWM1_OUT             0x1b0b1
-                       >;
-               };
+       pinctrl_lcd1_pwr: lcd-pwrgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_EB3__GPIO2_IO31          0x1b0b1 /* LCD Power Enable */
+               >;
+       };
 
-               pinctrl_pwm2: pwm2grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_GPIO_1__PWM2_OUT             0x1b0b1
-                       >;
-               };
+       pinctrl_pwm1: pwm1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_9__PWM1_OUT             0x1b0b1
+               >;
+       };
 
-               pinctrl_tsc2007: tsc2007grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_D26__GPIO3_IO26          0x1b0b0 /* Interrupt */
-                       >;
-               };
+       pinctrl_pwm2: pwm2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_1__PWM2_OUT             0x1b0b1
+               >;
+       };
 
-               pinctrl_uart1: uart1grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA      0x1b0b1
-                               MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA      0x1b0b1
-                       >;
-               };
+       pinctrl_tsc2007: tsc2007grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D26__GPIO3_IO26          0x1b0b0 /* Interrupt */
+               >;
+       };
 
-               pinctrl_uart1_rtscts: uart1_rtsctsgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD3_DAT1__UART1_RTS_B        0x1b0b1
-                               MX6QDL_PAD_SD3_DAT0__UART1_CTS_B        0x1b0b1
-                       >;
-               };
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA      0x1b0b1
+                       MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA      0x1b0b1
+               >;
+       };
 
-               pinctrl_uart2: uart2grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA      0x1b0b1
-                               MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA      0x1b0b1
-                       >;
-               };
+       pinctrl_uart1_rtscts: uart1_rtsctsgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_DAT1__UART1_RTS_B        0x1b0b1
+                       MX6QDL_PAD_SD3_DAT0__UART1_CTS_B        0x1b0b1
+               >;
+       };
 
-               pinctrl_uart2_rtscts: uart2_rtsctsgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD4_DAT5__UART2_RTS_B        0x1b0b1
-                               MX6QDL_PAD_SD4_DAT6__UART2_CTS_B        0x1b0b1
-                       >;
-               };
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA      0x1b0b1
+                       MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA      0x1b0b1
+               >;
+       };
 
-               pinctrl_uart3: uart3grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_D24__UART3_TX_DATA       0x1b0b1
-                               MX6QDL_PAD_EIM_D25__UART3_RX_DATA       0x1b0b1
-                       >;
-               };
+       pinctrl_uart2_rtscts: uart2_rtsctsgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_DAT5__UART2_RTS_B        0x1b0b1
+                       MX6QDL_PAD_SD4_DAT6__UART2_CTS_B        0x1b0b1
+               >;
+       };
 
-               pinctrl_uart3_rtscts: uart3_rtsctsgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD3_DAT3__UART3_CTS_B        0x1b0b1
-                               MX6QDL_PAD_SD3_RST__UART3_RTS_B         0x1b0b1
-                       >;
-               };
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D24__UART3_TX_DATA       0x1b0b1
+                       MX6QDL_PAD_EIM_D25__UART3_RX_DATA       0x1b0b1
+               >;
+       };
 
-               pinctrl_usbh1_vbus: usbh1-vbusgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_D31__GPIO3_IO31          0x1b0b0 /* USBH1_VBUSEN */
-                       >;
-               };
+       pinctrl_uart3_rtscts: uart3_rtsctsgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_DAT3__UART3_CTS_B        0x1b0b1
+                       MX6QDL_PAD_SD3_RST__UART3_RTS_B         0x1b0b1
+               >;
+       };
 
-               pinctrl_usbotg: usbotggrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_D23__GPIO3_IO23          0x17059
-                       >;
-               };
+       pinctrl_usbh1_vbus: usbh1-vbusgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D31__GPIO3_IO31          0x1b0b0 /* USBH1_VBUSEN */
+               >;
+       };
 
-               pinctrl_usbotg_vbus: usbotg-vbusgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_GPIO_7__GPIO1_IO07           0x1b0b0 /* USBOTG_VBUSEN */
-                       >;
-               };
+       pinctrl_usbotg: usbotggrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D23__GPIO3_IO23          0x17059
+               >;
+       };
 
-               pinctrl_usdhc1: usdhc1grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD1_CMD__SD1_CMD             0x070b1
-                               MX6QDL_PAD_SD1_CLK__SD1_CLK             0x070b1
-                               MX6QDL_PAD_SD1_DAT0__SD1_DATA0          0x070b1
-                               MX6QDL_PAD_SD1_DAT1__SD1_DATA1          0x070b1
-                               MX6QDL_PAD_SD1_DAT2__SD1_DATA2          0x070b1
-                               MX6QDL_PAD_SD1_DAT3__SD1_DATA3          0x070b1
-                               MX6QDL_PAD_SD3_CMD__GPIO7_IO02          0x170b0 /* SD1 CD */
-                       >;
-               };
+       pinctrl_usbotg_vbus: usbotg-vbusgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_7__GPIO1_IO07           0x1b0b0 /* USBOTG_VBUSEN */
+               >;
+       };
 
-               pinctrl_usdhc2: usdhc2grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD2_CMD__SD2_CMD             0x070b1
-                               MX6QDL_PAD_SD2_CLK__SD2_CLK             0x070b1
-                               MX6QDL_PAD_SD2_DAT0__SD2_DATA0          0x070b1
-                               MX6QDL_PAD_SD2_DAT1__SD2_DATA1          0x070b1
-                               MX6QDL_PAD_SD2_DAT2__SD2_DATA2          0x070b1
-                               MX6QDL_PAD_SD2_DAT3__SD2_DATA3          0x070b1
-                               MX6QDL_PAD_SD3_CLK__GPIO7_IO03          0x170b0 /* SD2 CD */
-                       >;
-               };
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_CMD__SD1_CMD             0x070b1
+                       MX6QDL_PAD_SD1_CLK__SD1_CLK             0x070b1
+                       MX6QDL_PAD_SD1_DAT0__SD1_DATA0          0x070b1
+                       MX6QDL_PAD_SD1_DAT1__SD1_DATA1          0x070b1
+                       MX6QDL_PAD_SD1_DAT2__SD1_DATA2          0x070b1
+                       MX6QDL_PAD_SD1_DAT3__SD1_DATA3          0x070b1
+                       MX6QDL_PAD_SD3_CMD__GPIO7_IO02          0x170b0 /* SD1 CD */
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD2_CMD__SD2_CMD             0x070b1
+                       MX6QDL_PAD_SD2_CLK__SD2_CLK             0x070b1
+                       MX6QDL_PAD_SD2_DAT0__SD2_DATA0          0x070b1
+                       MX6QDL_PAD_SD2_DAT1__SD2_DATA1          0x070b1
+                       MX6QDL_PAD_SD2_DAT2__SD2_DATA2          0x070b1
+                       MX6QDL_PAD_SD2_DAT3__SD2_DATA3          0x070b1
+                       MX6QDL_PAD_SD3_CLK__GPIO7_IO03          0x170b0 /* SD2 CD */
+               >;
        };
 };
 
index 2b6cc8bf3c5cce97349f2385e5dfba1009b5df0a..b98a41664855d9ffa6c891a4b5c71f9d32dbcaa4 100644 (file)
                                clocks = <&clks IMX6QDL_CLK_USBOH3>;
                                fsl,usbphy = <&usbphy1>;
                                fsl,usbmisc = <&usbmisc 0>;
+                               ahb-burst-config = <0x0>;
+                               tx-burst-size-dword = <0x10>;
+                               rx-burst-size-dword = <0x10>;
                                status = "disabled";
                        };
 
                                fsl,usbphy = <&usbphy2>;
                                fsl,usbmisc = <&usbmisc 1>;
                                dr_mode = "host";
+                               ahb-burst-config = <0x0>;
+                               tx-burst-size-dword = <0x10>;
+                               rx-burst-size-dword = <0x10>;
                                status = "disabled";
                        };
 
                                clocks = <&clks IMX6QDL_CLK_USBOH3>;
                                fsl,usbmisc = <&usbmisc 2>;
                                dr_mode = "host";
+                               ahb-burst-config = <0x0>;
+                               tx-burst-size-dword = <0x10>;
+                               rx-burst-size-dword = <0x10>;
                                status = "disabled";
                        };
 
                                clocks = <&clks IMX6QDL_CLK_USBOH3>;
                                fsl,usbmisc = <&usbmisc 3>;
                                dr_mode = "host";
+                               ahb-burst-config = <0x0>;
+                               tx-burst-size-dword = <0x10>;
+                               rx-burst-size-dword = <0x10>;
                                status = "disabled";
                        };
 
index d8ba99f1d87ba396b4e320ec52e63f903461d6bf..ebeae8f76436c58c2f04afc10339cb2998a85dda 100644 (file)
                                clocks = <&clks IMX6SL_CLK_USBOH3>;
                                fsl,usbphy = <&usbphy1>;
                                fsl,usbmisc = <&usbmisc 0>;
+                               ahb-burst-config = <0x0>;
+                               tx-burst-size-dword = <0x10>;
+                               rx-burst-size-dword = <0x10>;
                                status = "disabled";
                        };
 
                                clocks = <&clks IMX6SL_CLK_USBOH3>;
                                fsl,usbphy = <&usbphy2>;
                                fsl,usbmisc = <&usbmisc 1>;
+                               ahb-burst-config = <0x0>;
+                               tx-burst-size-dword = <0x10>;
+                               rx-burst-size-dword = <0x10>;
                                status = "disabled";
                        };
 
                                clocks = <&clks IMX6SL_CLK_USBOH3>;
                                fsl,usbmisc = <&usbmisc 2>;
                                dr_mode = "host";
+                               ahb-burst-config = <0x0>;
+                               tx-burst-size-dword = <0x10>;
+                               rx-burst-size-dword = <0x10>;
                                status = "disabled";
                        };
 
index 167f77b3bd43654c45d181e2a7f31965f6f1c946..64608e2299f1781fd163ae3e0d15bc9a6498f9b8 100644 (file)
                                fsl,usbphy = <&usbphy1>;
                                fsl,usbmisc = <&usbmisc 0>;
                                fsl,anatop = <&anatop>;
+                               ahb-burst-config = <0x0>;
+                               tx-burst-size-dword = <0x10>;
+                               rx-burst-size-dword = <0x10>;
                                status = "disabled";
                        };
 
                                clocks = <&clks IMX6SX_CLK_USBOH3>;
                                fsl,usbphy = <&usbphy2>;
                                fsl,usbmisc = <&usbmisc 1>;
+                               ahb-burst-config = <0x0>;
+                               tx-burst-size-dword = <0x10>;
+                               rx-burst-size-dword = <0x10>;
                                status = "disabled";
                        };
 
                                phy_type = "hsic";
                                fsl,anatop = <&anatop>;
                                dr_mode = "host";
+                               ahb-burst-config = <0x0>;
+                               tx-burst-size-dword = <0x10>;
+                               rx-burst-size-dword = <0x10>;
                                status = "disabled";
                        };
 
index 6aaa5ec3d846eae6019e4414d4c925a5ebc2adc5..a6f459a51c56d98f6c60a3c03e8e1a10392f303d 100644 (file)
@@ -8,7 +8,6 @@
 
 /dts-v1/;
 
-#include <dt-bindings/input/input.h>
 #include "imx6ul.dtsi"
 
 / {
diff --git a/arch/arm/boot/dts/imx6ul-tx6ul-0010.dts b/arch/arm/boot/dts/imx6ul-tx6ul-0010.dts
new file mode 100644 (file)
index 0000000..8c2f3df
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2015 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * 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
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "imx6ul.dtsi"
+#include "imx6ul-tx6ul.dtsi"
+
+/ {
+       model = "Ka-Ro electronics TXUL-0010 Module";
+       compatible = "karo,imx6ul-tx6ul", "fsl,imx6ul";
+
+       aliases {
+               /delete-property/ mmc1;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6ul-tx6ul-0011.dts b/arch/arm/boot/dts/imx6ul-tx6ul-0011.dts
new file mode 100644 (file)
index 0000000..d82698e
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2015 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * 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
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "imx6ul.dtsi"
+#include "imx6ul-tx6ul.dtsi"
+
+/ {
+       model = "Ka-Ro electronics TXUL-0011 Module";
+       compatible = "karo,imx6ul-tx6ul", "fsl,imx6ul";
+
+       aliases {
+               mmc0 = &usdhc2;
+               mmc1 = &usdhc1;
+       };
+};
+
+&gpmi {
+       status = "disabled";
+};
+
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       bus-width = <4>;
+       no-1-8-v;
+       non-removable;
+       fsl,wp-controller;
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/imx6ul-tx6ul-mainboard.dts b/arch/arm/boot/dts/imx6ul-tx6ul-mainboard.dts
new file mode 100644 (file)
index 0000000..2451cf3
--- /dev/null
@@ -0,0 +1,286 @@
+/*
+ * Copyright 2016 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * 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
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "imx6ul.dtsi"
+#include "imx6ul-tx6ul.dtsi"
+
+/ {
+       model = "Ka-Ro electronics TXUL-0011 Module on TXUL Mainboard";
+       compatible = "karo,imx6ul-tx6ul", "fsl,imx6ul";
+
+       aliases {
+               lcdif_24bit_pins_a = &pinctrl_disp0_3;
+               mmc0 = &usdhc2;
+               mmc1 = &usdhc1;
+               serial2 = &uart3;
+               serial4 = &uart5;
+       };
+
+       /delete-node/ sound;
+};
+
+&can1 {
+       xceiver-supply = <&reg_3v3>;
+};
+
+&can2 {
+       xceiver-supply = <&reg_3v3>;
+};
+
+&ds1339 {
+       status = "disabled";
+};
+
+&fec1 {
+       pinctrl-0 = <&pinctrl_enet1 &pinctrl_etnphy0_rst>;
+       /delete-node/ mdio;
+};
+
+&fec2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet2 &pinctrl_enet2_mdio &pinctrl_etnphy1_rst>;
+       phy-mode = "rmii";
+       phy-reset-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
+       phy-supply = <&reg_3v3_etn>;
+       phy-handle = <&etnphy1>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               etnphy0: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_etnphy0_int>;
+                       interrupt-parent = <&gpio5>;
+                       interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
+                       interrupts-extended = <&gpio5 5 IRQ_TYPE_EDGE_FALLING>;
+                       status = "okay";
+               };
+
+               etnphy1: ethernet-phy@2 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <2>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_etnphy1_int>;
+                       interrupt-parent = <&gpio4>;
+                       interrupts = <27 IRQ_TYPE_EDGE_FALLING>;
+                       interrupts-extended = <&gpio4 27 IRQ_TYPE_EDGE_FALLING>;
+                       status = "okay";
+               };
+       };
+};
+
+&gpmi {
+       status = "disabled";
+};
+
+&i2c_gpio {
+       status = "disabled";
+};
+
+&i2c2 {
+       /delete-node/ codec@0a;
+       /delete-node/ touchscreen@48;
+
+       rtc: mcp7940x@6f {
+               compatible = "microchip,mcp7940x";
+               reg = <0x6f>;
+       };
+};
+
+&kpp {
+       status = "disabled";
+};
+
+&lcdif {
+       pinctrl-0 = <&pinctrl_disp0_3>;
+};
+
+&reg_usbotg_vbus{
+       status = "disabled";
+};
+
+&usdhc1 {
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       non-removable;
+       /delete-property/ cd-gpios;
+       cap-sdio-irq;
+};
+
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       bus-width = <4>;
+       no-1-8-v;
+       non-removable;
+       fsl,wp-controller;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-0 = <&pinctrl_uart1>;
+       /delete-property/ fsl,uart-has-rtscts;
+};
+
+&uart2 {
+       pinctrl-0 = <&pinctrl_uart2>;
+       /delete-property/ fsl,uart-has-rtscts;
+       status = "okay";
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart3>;
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4>;
+       status = "okay";
+};
+
+&uart5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart5>;
+       status = "okay";
+};
+
+&uart6 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart6>;
+       status = "okay";
+};
+
+&uart7 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart7>;
+       status = "okay";
+};
+
+&uart8 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart8>;
+       status = "disabled"; /* conflicts with LCDIF */
+};
+
+&iomuxc {
+       hoggrp {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_DATA01__GPIO4_IO22        0x0b0b0 /* WLAN_RESET */
+               >;
+       };
+
+       pinctrl_disp0_3: disp0grp-3 {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_CLK__LCDIF_CLK            0x10 /* LSCLK */
+                       MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE      0x10 /* OE_ACD */
+                       MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC        0x10 /* HSYNC */
+                       MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC        0x10 /* VSYNC */
+                       MX6UL_PAD_LCD_DATA02__LCDIF_DATA02      0x10
+                       MX6UL_PAD_LCD_DATA03__LCDIF_DATA03      0x10
+                       MX6UL_PAD_LCD_DATA04__LCDIF_DATA04      0x10
+                       MX6UL_PAD_LCD_DATA05__LCDIF_DATA05      0x10
+                       MX6UL_PAD_LCD_DATA06__LCDIF_DATA06      0x10
+                       MX6UL_PAD_LCD_DATA07__LCDIF_DATA07      0x10
+                       /* LCD_DATA08..09 not wired */
+                       MX6UL_PAD_LCD_DATA10__LCDIF_DATA10      0x10
+                       MX6UL_PAD_LCD_DATA11__LCDIF_DATA11      0x10
+                       MX6UL_PAD_LCD_DATA12__LCDIF_DATA12      0x10
+                       MX6UL_PAD_LCD_DATA13__LCDIF_DATA13      0x10
+                       MX6UL_PAD_LCD_DATA14__LCDIF_DATA14      0x10
+                       MX6UL_PAD_LCD_DATA15__LCDIF_DATA15      0x10
+                       /* LCD_DATA16..17 not wired */
+                       MX6UL_PAD_LCD_DATA18__LCDIF_DATA18      0x10
+                       MX6UL_PAD_LCD_DATA19__LCDIF_DATA19      0x10
+                       MX6UL_PAD_LCD_DATA20__LCDIF_DATA20      0x10
+                       MX6UL_PAD_LCD_DATA21__LCDIF_DATA21      0x10
+                       MX6UL_PAD_LCD_DATA22__LCDIF_DATA22      0x10
+                       MX6UL_PAD_LCD_DATA23__LCDIF_DATA23      0x10
+               >;
+       };
+
+       pinctrl_enet2_mdio: enet2-mdiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO07__ENET2_MDC         0x0b0b0
+                       MX6UL_PAD_GPIO1_IO06__ENET2_MDIO        0x1b0b0
+               >;
+       };
+
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX   0x0b0b0
+                       MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX   0x0b0b0
+               >;
+       };
+
+       pinctrl_uart4: uart4grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX   0x0b0b0
+                       MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX   0x0b0b0
+               >;
+       };
+
+       pinctrl_uart6: uart6grp {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_MCLK__UART6_DCE_TX        0x0b0b0
+                       MX6UL_PAD_CSI_PIXCLK__UART6_DCE_RX      0x0b0b0
+               >;
+       };
+
+       pinctrl_uart7: uart7grp {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_DATA16__UART7_DCE_TX      0x0b0b0
+                       MX6UL_PAD_LCD_DATA17__UART7_DCE_RX      0x0b0b0
+               >;
+       };
+
+       pinctrl_uart8: uart8grp {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_DATA20__UART8_DCE_TX      0x0b0b0
+                       MX6UL_PAD_LCD_DATA21__UART8_DCE_RX      0x0b0b0
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6ul-tx6ul.dtsi b/arch/arm/boot/dts/imx6ul-tx6ul.dtsi
new file mode 100644 (file)
index 0000000..19fc33c
--- /dev/null
@@ -0,0 +1,973 @@
+/*
+ * Copyright 2015 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * 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
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pwm/pwm.h>
+
+/ {
+       aliases {
+               can0 = &can2;
+               can1 = &can1;
+               display = &display;
+               i2c0 = &i2c2;
+               i2c1 = &i2c_gpio;
+               i2c2 = &i2c1;
+               i2c3 = &i2c3;
+               i2c4 = &i2c4;
+               lcdif_23bit_pins_a = &pinctrl_disp0_1;
+               lcdif_24bit_pins_a = &pinctrl_disp0_2;
+               pwm0 = &pwm5;
+               reg_can_xcvr = &reg_can_xcvr;
+               serial2 = &uart5;
+               serial4 = &uart3;
+               spi0 = &ecspi2;
+               spi1 = &spi_gpio;
+               stk5led = &user_led;
+               usbh1 = &usbotg2;
+               usbotg = &usbotg1;
+       };
+
+       chosen {
+               stdout-path = &uart1;
+       };
+
+       memory {
+               reg = <0 0>; /* will be filled by U-Boot */
+       };
+
+       clocks {
+               mclk: mclk {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <26000000>;
+               };
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lcd_rst>;
+               enable-gpios = <&gpio3 4 GPIO_ACTIVE_HIGH>;
+               pwms = <&pwm5 0 500000 PWM_POLARITY_INVERTED>;
+               power-supply = <&reg_lcd_pwr>;
+               /*
+                * a poor man's way to create a 1:1 relationship between
+                * the PWM value and the actual duty cycle
+                */
+               brightness-levels = < 0  1  2  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>;
+               default-brightness-level = <50>;
+       };
+
+       i2c_gpio: i2c-gpio {
+               compatible = "i2c-gpio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c_gpio>;
+               gpios = <
+                       &gpio5 1 GPIO_ACTIVE_HIGH /* SDA */
+                       &gpio5 0 GPIO_ACTIVE_HIGH /* SCL */
+               >;
+               clock-frequency = <400000>;
+               status = "okay";
+
+               ds1339: rtc@68 {
+                       compatible = "dallas,ds1339";
+                       reg = <0x68>;
+                       status = "disabled";
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               user_led: user {
+                       label = "Heartbeat";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_led>;
+                       gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       reg_3v3_etn: regulator-3v3etn {
+               compatible = "regulator-fixed";
+               regulator-name = "3V3_ETN";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_etnphy_power>;
+               gpio = <&gpio5 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_2v5: regulator-2v5 {
+               compatible = "regulator-fixed";
+               regulator-name = "2V5";
+               regulator-min-microvolt = <2500000>;
+               regulator-max-microvolt = <2500000>;
+               regulator-always-on;
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_can_xcvr: regulator-canxcvr {
+               compatible = "regulator-fixed";
+               regulator-name = "CAN XCVR";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_flexcan_xcvr>;
+               gpio = <&gpio3 5 GPIO_ACTIVE_HIGH>;
+               enable-active-low;
+       };
+
+       reg_lcd_pwr: regulator-lcdpwr {
+               compatible = "regulator-fixed";
+               regulator-name = "LCD POWER";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lcd_pwr>;
+               gpio = <&gpio5 4 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_usbh1_vbus: regulator-usbh1vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usbh1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usbh1_vbus &pinctrl_usbh1_oc>;
+               gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_usbotg_vbus: regulator-usbotgvbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usbotg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usbotg_vbus &pinctrl_usbotg_oc>;
+               gpio = <&gpio1 26 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       spi_gpio: spi-gpio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "spi-gpio";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_spi_gpio>;
+               gpio-mosi = <&gpio1 30 GPIO_ACTIVE_HIGH>;
+               gpio-miso = <&gpio1 31 GPIO_ACTIVE_HIGH>;
+               gpio-sck = <&gpio1 28 GPIO_ACTIVE_HIGH>;
+               num-chipselects = <2>;
+               cs-gpios = <
+                       &gpio1 29 GPIO_ACTIVE_HIGH
+                       &gpio1 10 GPIO_ACTIVE_HIGH
+               >;
+               status = "disabled";
+
+               spi@0 {
+                       compatible = "spidev";
+                       reg = <0>;
+                       spi-max-frequency = <660000>;
+               };
+
+               spi@1 {
+                       compatible = "spidev";
+                       reg = <1>;
+                       spi-max-frequency = <660000>;
+               };
+       };
+
+       sound {
+               compatible = "karo,imx6ul-tx6ul-sgtl5000",
+                            "simple-audio-card";
+               simple-audio-card,name = "imx6ul-tx6ul-sgtl5000-audio";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&codec_dai>;
+               simple-audio-card,frame-master = <&codec_dai>;
+               simple-audio-card,widgets =
+                       "Microphone", "Mic Jack",
+                       "Line", "Line In",
+                       "Line", "Line Out",
+                       "Headphone", "Headphone Jack";
+               simple-audio-card,routing =
+                       "MIC_IN", "Mic Jack",
+                       "Mic Jack", "Mic Bias",
+                       "Headphone Jack", "HP_OUT";
+
+               cpu_dai: simple-audio-card,cpu {
+                       sound-dai = <&sai2>;
+               };
+
+               codec_dai: simple-audio-card,codec {
+                       sound-dai = <&sgtl5000>;
+               };
+       };
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       xceiver-supply = <&reg_can_xcvr>;
+       status = "okay";
+};
+
+&can2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       xceiver-supply = <&reg_can_xcvr>;
+       status = "okay";
+};
+
+&ecspi2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi2>;
+       fsl,spi-num-chipselects = <2>;
+       cs-gpios = <
+               &gpio1 29 GPIO_ACTIVE_HIGH
+               &gpio1 10 GPIO_ACTIVE_HIGH
+       >;
+       status = "disabled";
+
+       spidev0: spi@0 {
+               compatible = "spidev";
+               reg = <0>;
+               spi-max-frequency = <60000000>;
+       };
+
+       spidev1: spi@1 {
+               compatible = "spidev";
+               reg = <1>;
+               spi-max-frequency = <60000000>;
+       };
+};
+
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet1 &pinctrl_enet1_mdio &pinctrl_etnphy0_rst>;
+       phy-mode = "rmii";
+       phy-reset-gpios = <&gpio5 6 GPIO_ACTIVE_HIGH>;
+       phy-supply = <&reg_3v3_etn>;
+       phy-handle = <&etnphy0>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               etnphy0: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_etnphy0_int>;
+                       interrupt-parent = <&gpio5>;
+                       interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
+                       status = "okay";
+               };
+
+               etnphy1: ethernet-phy@2 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <2>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_etnphy1_int>;
+                       interrupt-parent = <&gpio4>;
+                       interrupts = <27 IRQ_TYPE_EDGE_FALLING>;
+                       status = "okay";
+               };
+       };
+};
+
+&fec2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet2 &pinctrl_etnphy1_rst>;
+       phy-mode = "rmii";
+       phy-reset-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
+       phy-supply = <&reg_3v3_etn>;
+       phy-handle = <&etnphy1>;
+       status = "disabled";
+};
+
+&gpmi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpmi_nand>;
+       nand-on-flash-bbt;
+       fsl,no-blockmark-swap;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       clock-frequency = <400000>;
+       status = "okay";
+
+       sgtl5000: codec@0a {
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               #sound-dai-cells = <0>;
+               VDDA-supply = <&reg_2v5>;
+               VDDIO-supply = <&reg_3v3>;
+               clocks = <&mclk>;
+       };
+
+       polytouch: polytouch@38 {
+               compatible = "edt,edt-ft5x06";
+               reg = <0x38>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_edt_ft5x06>;
+               interrupt-parent = <&gpio5>;
+               interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
+               reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
+               wake-gpios = <&gpio5 8 GPIO_ACTIVE_HIGH>;
+               wakeup-source;
+       };
+
+       touchscreen: touchscreen@48 {
+               compatible = "ti,tsc2007";
+               reg = <0x48>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_tsc2007>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <26 IRQ_TYPE_NONE>;
+               gpios = <&gpio3 26 GPIO_ACTIVE_LOW>;
+               ti,x-plate-ohms = <660>;
+               wakeup-source;
+       };
+};
+
+&kpp {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_kpp>;
+       /* sample keymap */
+       /* row/col 0..3 are mapped to KPP row/col 4..7 */
+       linux,keymap = <
+               MATRIX_KEY(4, 4, KEY_POWER)
+               MATRIX_KEY(4, 5, KEY_KP0)
+               MATRIX_KEY(4, 6, KEY_KP1)
+               MATRIX_KEY(4, 7, KEY_KP2)
+               MATRIX_KEY(5, 4, KEY_KP3)
+               MATRIX_KEY(5, 5, KEY_KP4)
+               MATRIX_KEY(5, 6, KEY_KP5)
+               MATRIX_KEY(5, 7, KEY_KP6)
+               MATRIX_KEY(6, 4, KEY_KP7)
+               MATRIX_KEY(6, 5, KEY_KP8)
+               MATRIX_KEY(6, 6, KEY_KP9)
+       >;
+       status = "okay";
+};
+
+&lcdif {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_disp0_1>;
+       lcd-supply = <&reg_lcd_pwr>;
+       display = <&display>;
+       status = "okay";
+
+       display: display@di0 {
+               bits-per-pixel = <32>;
+               bus-width = <24>;
+               status = "okay";
+
+               display-timings {
+                       VGA {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <48>;
+                               hsync-len = <96>;
+                               hfront-porch = <16>;
+                               vback-porch = <31>;
+                               vsync-len = <2>;
+                               vfront-porch = <12>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       ETV570 {
+                               clock-frequency = <25200000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <114>;
+                               hsync-len = <30>;
+                               hfront-porch = <16>;
+                               vback-porch = <32>;
+                               vsync-len = <3>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       ET0350 {
+                               clock-frequency = <6413760>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <34>;
+                               hsync-len = <34>;
+                               hfront-porch = <20>;
+                               vback-porch = <15>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       ET0430 {
+                               clock-frequency = <9009000>;
+                               hactive = <480>;
+                               vactive = <272>;
+                               hback-porch = <2>;
+                               hsync-len = <41>;
+                               hfront-porch = <2>;
+                               vback-porch = <2>;
+                               vsync-len = <10>;
+                               vfront-porch = <2>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+
+                       ET0500 {
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       ET0700 { /* same as ET0500 */
+                               clock-frequency = <33264000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       ETQ570 {
+                               clock-frequency = <6596040>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <38>;
+                               hsync-len = <30>;
+                               hfront-porch = <30>;
+                               vback-porch = <16>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+               };
+       };
+};
+
+&pwm5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm5>;
+       #pwm-cells = <3>;
+       status = "okay";
+};
+
+&sai2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai2>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1 &pinctrl_uart1_rtscts>;
+       fsl,uart-has-rtscts;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2 &pinctrl_uart2_rtscts>;
+       fsl,uart-has-rtscts;
+       status = "okay";
+};
+
+&uart5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart5 &pinctrl_uart5_rtscts>;
+       fsl,uart-has-rtscts;
+       status = "okay";
+};
+
+&usbotg1 {
+       vbus-supply = <&reg_usbotg_vbus>;
+       dr_mode = "peripheral";
+       disable-over-current;
+       status = "okay";
+};
+
+&usbotg2 {
+       vbus-supply = <&reg_usbh1_vbus>;
+       dr_mode = "host";
+       disable-over-current;
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1 &pinctrl_usdhc1_cd>;
+       bus-width = <4>;
+       no-1-8-v;
+       cd-gpios = <&gpio4 14 GPIO_ACTIVE_LOW>;
+       fsl,wp-controller;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       pinctrl_hog: hoggrp {
+       };
+
+       pinctrl_led: ledgrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER9__GPIO5_IO09      0x0b0b0 /* LED */
+               >;
+       };
+
+       pinctrl_disp0_1: disp0grp-1 {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_CLK__LCDIF_CLK            0x10 /* LSCLK */
+                       MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE      0x10 /* OE_ACD */
+                       MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC        0x10 /* HSYNC */
+                       MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC        0x10 /* VSYNC */
+                       /* PAD DISP0_DAT0 is used for the Flexcan transceiver control on STK5-v5 */
+                       MX6UL_PAD_LCD_DATA01__LCDIF_DATA01      0x10
+                       MX6UL_PAD_LCD_DATA02__LCDIF_DATA02      0x10
+                       MX6UL_PAD_LCD_DATA03__LCDIF_DATA03      0x10
+                       MX6UL_PAD_LCD_DATA04__LCDIF_DATA04      0x10
+                       MX6UL_PAD_LCD_DATA05__LCDIF_DATA05      0x10
+                       MX6UL_PAD_LCD_DATA06__LCDIF_DATA06      0x10
+                       MX6UL_PAD_LCD_DATA07__LCDIF_DATA07      0x10
+                       MX6UL_PAD_LCD_DATA08__LCDIF_DATA08      0x10
+                       MX6UL_PAD_LCD_DATA09__LCDIF_DATA09      0x10
+                       MX6UL_PAD_LCD_DATA10__LCDIF_DATA10      0x10
+                       MX6UL_PAD_LCD_DATA11__LCDIF_DATA11      0x10
+                       MX6UL_PAD_LCD_DATA12__LCDIF_DATA12      0x10
+                       MX6UL_PAD_LCD_DATA13__LCDIF_DATA13      0x10
+                       MX6UL_PAD_LCD_DATA14__LCDIF_DATA14      0x10
+                       MX6UL_PAD_LCD_DATA15__LCDIF_DATA15      0x10
+                       MX6UL_PAD_LCD_DATA16__LCDIF_DATA16      0x10
+                       MX6UL_PAD_LCD_DATA17__LCDIF_DATA17      0x10
+                       MX6UL_PAD_LCD_DATA18__LCDIF_DATA18      0x10
+                       MX6UL_PAD_LCD_DATA19__LCDIF_DATA19      0x10
+                       MX6UL_PAD_LCD_DATA20__LCDIF_DATA20      0x10
+                       MX6UL_PAD_LCD_DATA21__LCDIF_DATA21      0x10
+                       MX6UL_PAD_LCD_DATA22__LCDIF_DATA22      0x10
+                       MX6UL_PAD_LCD_DATA23__LCDIF_DATA23      0x10
+               >;
+       };
+
+       pinctrl_disp0_2: disp0grp-2 {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_CLK__LCDIF_CLK            0x10 /* LSCLK */
+                       MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE      0x10 /* OE_ACD */
+                       MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC        0x10 /* HSYNC */
+                       MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC        0x10 /* VSYNC */
+                       MX6UL_PAD_LCD_DATA00__LCDIF_DATA00      0x10
+                       MX6UL_PAD_LCD_DATA01__LCDIF_DATA01      0x10
+                       MX6UL_PAD_LCD_DATA02__LCDIF_DATA02      0x10
+                       MX6UL_PAD_LCD_DATA03__LCDIF_DATA03      0x10
+                       MX6UL_PAD_LCD_DATA04__LCDIF_DATA04      0x10
+                       MX6UL_PAD_LCD_DATA05__LCDIF_DATA05      0x10
+                       MX6UL_PAD_LCD_DATA06__LCDIF_DATA06      0x10
+                       MX6UL_PAD_LCD_DATA07__LCDIF_DATA07      0x10
+                       MX6UL_PAD_LCD_DATA08__LCDIF_DATA08      0x10
+                       MX6UL_PAD_LCD_DATA09__LCDIF_DATA09      0x10
+                       MX6UL_PAD_LCD_DATA10__LCDIF_DATA10      0x10
+                       MX6UL_PAD_LCD_DATA11__LCDIF_DATA11      0x10
+                       MX6UL_PAD_LCD_DATA12__LCDIF_DATA12      0x10
+                       MX6UL_PAD_LCD_DATA13__LCDIF_DATA13      0x10
+                       MX6UL_PAD_LCD_DATA14__LCDIF_DATA14      0x10
+                       MX6UL_PAD_LCD_DATA15__LCDIF_DATA15      0x10
+                       MX6UL_PAD_LCD_DATA16__LCDIF_DATA16      0x10
+                       MX6UL_PAD_LCD_DATA17__LCDIF_DATA17      0x10
+                       MX6UL_PAD_LCD_DATA18__LCDIF_DATA18      0x10
+                       MX6UL_PAD_LCD_DATA19__LCDIF_DATA19      0x10
+                       MX6UL_PAD_LCD_DATA20__LCDIF_DATA20      0x10
+                       MX6UL_PAD_LCD_DATA21__LCDIF_DATA21      0x10
+                       MX6UL_PAD_LCD_DATA22__LCDIF_DATA22      0x10
+                       MX6UL_PAD_LCD_DATA23__LCDIF_DATA23      0x10
+               >;
+       };
+
+       pinctrl_ecspi2: ecspi2grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART4_RX_DATA__GPIO1_IO29     0x0b0b0 /* CSPI_SS */
+                       MX6UL_PAD_JTAG_MOD__GPIO1_IO10          0x0b0b0 /* CSPI_SS */
+                       MX6UL_PAD_UART5_TX_DATA__ECSPI2_MOSI    0x0b0b0 /* CSPI_MOSI */
+                       MX6UL_PAD_UART5_RX_DATA__ECSPI2_MISO    0x0b0b0 /* CSPI_MISO */
+                       MX6UL_PAD_UART4_TX_DATA__ECSPI2_SCLK    0x0b0b0 /* CSPI_SCLK */
+               >;
+       };
+
+       pinctrl_edt_ft5x06: edt-ft5x06grp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02      0x1b0b0 /* Interrupt */
+                       MX6UL_PAD_SNVS_TAMPER3__GPIO5_IO03      0x1b0b0 /* Reset */
+                       MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08      0x1b0b0 /* Wake */
+               >;
+       };
+
+       pinctrl_enet1: enet1grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x000b0
+                       MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x000b0
+                       MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN      0x000b0
+                       MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER      0x000b0
+                       MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN      0x000b0
+                       MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x000b0
+                       MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x000b0
+                       MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  0x400000b1
+               >;
+       };
+
+       pinctrl_enet2: enet2grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x000b0
+                       MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x000b0
+                       MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN      0x000b0
+                       MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER      0x000b0
+                       MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN      0x000b0
+                       MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x000b0
+                       MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x000b0
+                       MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2  0x400000b1
+               >;
+       };
+
+       pinctrl_enet1_mdio: enet1-mdiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO07__ENET1_MDC         0x0b0b0
+                       MX6UL_PAD_GPIO1_IO06__ENET1_MDIO        0x1b0b0
+               >;
+       };
+
+       pinctrl_etnphy_power: etnphy-pwrgrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07      0x0b0b0 /* ETN PHY POWER */
+               >;
+       };
+
+       pinctrl_etnphy0_int: etnphy-intgrp-0 {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER5__GPIO5_IO05      0x0b0b0 /* ETN PHY INT */
+               >;
+       };
+
+       pinctrl_etnphy0_rst: etnphy-rstgrp-0 {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER6__GPIO5_IO06      0x0b0b0 /* ETN PHY RESET */
+               >;
+       };
+
+       pinctrl_etnphy1_int: etnphy-intgrp-1 {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_DATA06__GPIO4_IO27        0x0b0b0 /* ETN PHY INT */
+               >;
+       };
+
+       pinctrl_etnphy1_rst: etnphy-rstgrp-1 {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_DATA07__GPIO4_IO28        0x0b0b0 /* ETN PHY RESET */
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX      0x0b0b0
+                       MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX      0x0b0b0
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX      0x0b0b0
+                       MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX      0x0b0b0
+               >;
+       };
+
+       pinctrl_flexcan_xcvr: flexcan-xcvrgrp {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_DATA00__GPIO3_IO05        0x0b0b0 /* Flexcan XCVR enable */
+               >;
+       };
+
+       pinctrl_gpmi_nand: gpminandgrp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_CLE__RAWNAND_CLE         0x0b0b1
+                       MX6UL_PAD_NAND_ALE__RAWNAND_ALE         0x0b0b1
+                       MX6UL_PAD_NAND_WP_B__RAWNAND_WP_B       0x0b0b1
+                       MX6UL_PAD_NAND_READY_B__RAWNAND_READY_B 0x0b000
+                       MX6UL_PAD_NAND_CE0_B__RAWNAND_CE0_B     0x0b0b1
+                       MX6UL_PAD_NAND_RE_B__RAWNAND_RE_B       0x0b0b1
+                       MX6UL_PAD_NAND_WE_B__RAWNAND_WE_B       0x0b0b1
+                       MX6UL_PAD_NAND_DATA00__RAWNAND_DATA00   0x0b0b1
+                       MX6UL_PAD_NAND_DATA01__RAWNAND_DATA01   0x0b0b1
+                       MX6UL_PAD_NAND_DATA02__RAWNAND_DATA02   0x0b0b1
+                       MX6UL_PAD_NAND_DATA03__RAWNAND_DATA03   0x0b0b1
+                       MX6UL_PAD_NAND_DATA04__RAWNAND_DATA04   0x0b0b1
+                       MX6UL_PAD_NAND_DATA05__RAWNAND_DATA05   0x0b0b1
+                       MX6UL_PAD_NAND_DATA06__RAWNAND_DATA06   0x0b0b1
+                       MX6UL_PAD_NAND_DATA07__RAWNAND_DATA07   0x0b0b1
+               >;
+       };
+
+       pinctrl_i2c_gpio: i2c-gpiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER0__GPIO5_IO00      0x4001b8b1 /* I2C SCL */
+                       MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01      0x4001b8b1 /* I2C SDA */
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO00__I2C2_SCL          0x4001b8b1
+                       MX6UL_PAD_GPIO1_IO01__I2C2_SDA          0x4001b8b1
+               >;
+       };
+
+       pinctrl_kpp: kppgrp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET2_RX_DATA1__KPP_COL04     0x1b0b0
+                       MX6UL_PAD_ENET2_TX_DATA0__KPP_COL05     0x1b0b0
+                       MX6UL_PAD_ENET2_TX_EN__KPP_COL06        0x1b0b0
+                       MX6UL_PAD_ENET2_RX_ER__KPP_COL07        0x1b0b0
+                       MX6UL_PAD_ENET2_RX_DATA0__KPP_ROW04     0x1b0b0
+                       MX6UL_PAD_ENET2_RX_EN__KPP_ROW05        0x1b0b0
+                       MX6UL_PAD_ENET2_TX_DATA1__KPP_ROW06     0x1b0b0
+                       MX6UL_PAD_ENET2_TX_CLK__KPP_ROW07       0x1b0b0
+               >;
+       };
+
+       pinctrl_lcd_pwr: lcd-pwrgrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04      0x0b0b0 /* LCD Power Enable */
+               >;
+       };
+
+       pinctrl_lcd_rst: lcd-rstgrp {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_RESET__GPIO3_IO04 0x0b0b0 /* LCD Reset */
+               >;
+       };
+
+       pinctrl_pwm5: pwm5grp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_DQS__PWM5_OUT            0x0b0b0
+               >;
+       };
+
+       pinctrl_sai2: sai2grp {
+               fsl,pins = <
+                       MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA        0x0b0b0 /* SSI1_RXD */
+                       MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA     0x0b0b0 /* SSI1_TXD */
+                       MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK        0x0b0b0 /* SSI1_CLK */
+                       MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC        0x0b0b0 /* SSI1_FS */
+               >;
+       };
+
+       pinctrl_spi_gpio: spi-gpiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_UART4_RX_DATA__GPIO1_IO29     0x0b0b0 /* CSPI_SS */
+                       MX6UL_PAD_JTAG_MOD__GPIO1_IO10          0x0b0b0 /* CSPI_SS */
+                       MX6UL_PAD_UART5_TX_DATA__GPIO1_IO30     0x0b0b0 /* CSPI_MOSI */
+                       MX6UL_PAD_UART5_RX_DATA__GPIO1_IO31     0x0b0b0 /* CSPI_MISO */
+                       MX6UL_PAD_UART4_TX_DATA__GPIO1_IO28     0x0b0b0 /* CSPI_SCLK */
+               >;
+       };
+
+       pinctrl_tsc2007: tsc2007grp {
+               fsl,pins = <
+                       MX6UL_PAD_JTAG_TMS__GPIO1_IO11          0x1b0b0 /* Interrupt */
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x0b0b0
+                       MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX   0x0b0b0
+               >;
+       };
+
+       pinctrl_uart1_rtscts: uart1-rtsctsgrp {
+               fsl,pins = <
+                       MX6UL_PAD_UART1_RTS_B__UART1_DCE_RTS    0x0b0b0
+                       MX6UL_PAD_UART1_CTS_B__UART1_DCE_CTS    0x0b0b0
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX   0x0b0b0
+                       MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX   0x0b0b0
+               >;
+       };
+
+       pinctrl_uart2_rtscts: uart2-rtsctsgrp {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_RX_DATA__UART2_DCE_RTS  0x0b0b0
+                       MX6UL_PAD_UART3_TX_DATA__UART2_DCE_CTS  0x0b0b0
+               >;
+       };
+
+       pinctrl_uart5: uart5grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO04__UART5_DCE_TX      0x0b0b0
+                       MX6UL_PAD_GPIO1_IO05__UART5_DCE_RX      0x0b0b0
+               >;
+       };
+
+       pinctrl_uart5_rtscts: uart5-rtsctsgrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO08__UART5_DCE_RTS     0x0b0b0
+                       MX6UL_PAD_GPIO1_IO09__UART5_DCE_CTS     0x0b0b0
+               >;
+       };
+
+       pinctrl_usbh1_oc: usbh1-ocgrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO03__GPIO1_IO03        0x17059 /* USBH1_OC */
+               >;
+       };
+
+       pinctrl_usbh1_vbus: usbh1-vbusgrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO02__GPIO1_IO02        0x0b0b0 /* USBH1_VBUSEN */
+               >;
+       };
+
+       pinctrl_usbotg_oc: usbotg-ocgrp {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_RTS_B__GPIO1_IO27       0x17059 /* USBOTG_OC */
+               >;
+       };
+
+       pinctrl_usbotg_vbus: usbotg-vbusgrp {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_CTS_B__GPIO1_IO26       0x1b0b0 /* USBOTG_VBUSEN */
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x070b1
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x070b1
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x070b1
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x070b1
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x070b1
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x070b1
+               >;
+       };
+
+       pinctrl_usdhc1_cd: usdhc1cdgrp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_CE1_B__GPIO4_IO14        0x170b0 /* SD1 CD */
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_WE_B__USDHC2_CMD         0x070b1
+                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK         0x070b1
+                       MX6UL_PAD_NAND_DATA00__USDHC2_DATA0     0x070b1
+                       MX6UL_PAD_NAND_DATA01__USDHC2_DATA1     0x070b1
+                       MX6UL_PAD_NAND_DATA02__USDHC2_DATA2     0x070b1
+                       MX6UL_PAD_NAND_DATA03__USDHC2_DATA3     0x070b1
+                       /* eMMC RESET */
+                       MX6UL_PAD_NAND_ALE__USDHC2_RESET_B      0x170b0
+               >;
+       };
+};
index d00e994bdbd296e8c6c3ba1db019121de9e11cf3..71778992f03d907b75c7936115df07ef82ee06c8 100644 (file)
@@ -8,6 +8,7 @@
 
 #include <dt-bindings/clock/imx6ul-clock.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include "imx6ul-pinfunc.h"
 #include "skeleton.dtsi"
                        reg = <0x00900000 0x20000>;
                };
 
+               dma_apbh: dma-apbh@01804000 {
+                       compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh";
+                       reg = <0x01804000 0x2000>;
+                       interrupts = <0 13 IRQ_TYPE_LEVEL_HIGH>,
+                                    <0 13 IRQ_TYPE_LEVEL_HIGH>,
+                                    <0 13 IRQ_TYPE_LEVEL_HIGH>,
+                                    <0 13 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "gpmi0", "gpmi1", "gpmi2", "gpmi3";
+                       #dma-cells = <1>;
+                       dma-channels = <4>;
+                       clocks = <&clks IMX6UL_CLK_APBHDMA>;
+               };
+
+               gpmi: gpmi-nand@01806000         {
+                       compatible = "fsl,imx6q-gpmi-nand";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       reg = <0x01806000 0x2000>, <0x01808000 0x2000>;
+                       reg-names = "gpmi-nand", "bch";
+                       interrupts = <0 15 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "bch";
+                       clocks = <&clks IMX6UL_CLK_GPMI_IO>,
+                                <&clks IMX6UL_CLK_GPMI_APB>,
+                                <&clks IMX6UL_CLK_GPMI_BCH>,
+                                <&clks IMX6UL_CLK_GPMI_BCH_APB>,
+                                <&clks IMX6UL_CLK_PER_BCH>;
+                       clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch",
+                                     "gpmi_bch_apb", "per1_bch";
+                       dmas = <&dma_apbh 0>;
+                       dma-names = "rx-tx";
+                       status = "disabled";
+               };
+
                aips1: aips-bus@02000000 {
                        compatible = "fsl,aips-bus", "simple-bus";
                        #address-cells = <1>;
                                        clock-names = "ipg", "per";
                                        status = "disabled";
                                };
+
+                               sai1: sai@02028000 {
+                                       #sound-dai-cells = <0>;
+                                       compatible = "fsl,imx6ul-sai", "fsl,imx6sx-sai";
+                                       reg = <0x02028000 0x4000>;
+                                       interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&clks IMX6UL_CLK_SAI1_IPG>,
+                                                <&clks IMX6UL_CLK_SAI1>,
+                                                <&clks IMX6UL_CLK_DUMMY>, <&clks IMX6UL_CLK_DUMMY>;
+                                       clock-names = "bus", "mclk1", "mclk2", "mclk3";
+                                       dmas = <&sdma 35 24 0>,
+                                              <&sdma 36 24 0>;
+                                       dma-names = "rx", "tx";
+                                       status = "disabled";
+                               };
+
+                               sai2: sai@0202c000 {
+                                       #sound-dai-cells = <0>;
+                                       compatible = "fsl,imx6ul-sai", "fsl,imx6sx-sai";
+                                       reg = <0x0202c000 0x4000>;
+                                       interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&clks IMX6UL_CLK_SAI2_IPG>,
+                                                <&clks IMX6UL_CLK_SAI2>,
+                                                <&clks IMX6UL_CLK_DUMMY>, <&clks IMX6UL_CLK_DUMMY>;
+                                       clock-names = "bus", "mclk1", "mclk2", "mclk3";
+                                       dmas = <&sdma 37 24 0>,
+                                              <&sdma 38 24 0>;
+                                       dma-names = "rx", "tx";
+                                       status = "disabled";
+                               };
+
+                               sai3: sai@02030000 {
+                                       #sound-dai-cells = <0>;
+                                       compatible = "fsl,imx6ul-sai", "fsl,imx6sx-sai";
+                                       reg = <0x02030000 0x4000>;
+                                       interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&clks IMX6UL_CLK_SAI3_IPG>,
+                                                <&clks IMX6UL_CLK_SAI3>,
+                                                <&clks IMX6UL_CLK_DUMMY>, <&clks IMX6UL_CLK_DUMMY>;
+                                       clock-names = "bus", "mclk1", "mclk2", "mclk3";
+                                       dmas = <&sdma 39 24 0>,
+                                              <&sdma 40 24 0>;
+                                       dma-names = "rx", "tx";
+                                       status = "disabled";
+                               };
+                       };
+
+                       tsc: tsc@02040000 {
+                               compatible = "fsl,imx6ul-tsc";
+                               reg = <0x02040000 0x4000>, <0x0219c000 0x4000>;
+                               interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_IPG>,
+                                        <&clks IMX6UL_CLK_ADC2>;
+                               clock-names = "tsc", "adc";
+                               status = "disabled";
+                       };
+
+                       pwm1: pwm@02080000 {
+                               compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
+                               reg = <0x02080000 0x4000>;
+                               interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_PWM1>,
+                                        <&clks IMX6UL_CLK_PWM1>;
+                               clock-names = "ipg", "per";
+                               #pwm-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       pwm2: pwm@02084000 {
+                               compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
+                               reg = <0x02084000 0x4000>;
+                               interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_PWM2>,
+                                        <&clks IMX6UL_CLK_PWM2>;
+                               clock-names = "ipg", "per";
+                               #pwm-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       pwm3: pwm@02088000 {
+                               compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
+                               reg = <0x02088000 0x4000>;
+                               interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_PWM3>,
+                                        <&clks IMX6UL_CLK_PWM3>;
+                               clock-names = "ipg", "per";
+                               #pwm-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       pwm4: pwm@0208c000 {
+                               compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
+                               reg = <0x0208c000 0x4000>;
+                               interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_PWM4>,
+                                        <&clks IMX6UL_CLK_PWM4>;
+                               clock-names = "ipg", "per";
+                               #pwm-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       can1: flexcan@02090000 {
+                               compatible = "fsl,imx6ul-flexcan", "fsl,imx6q-flexcan";
+                               reg = <0x02090000 0x4000>;
+                               interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_CAN1_IPG>,
+                                        <&clks IMX6UL_CLK_CAN1_SERIAL>;
+                               clock-names = "ipg", "per";
+                               status = "disabled";
+                       };
+
+                       can2: flexcan@02094000 {
+                               compatible = "fsl,imx6ul-flexcan", "fsl,imx6q-flexcan";
+                               reg = <0x02094000 0x4000>;
+                               interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_CAN2_IPG>,
+                                        <&clks IMX6UL_CLK_CAN2_SERIAL>;
+                               clock-names = "ipg", "per";
+                               status = "disabled";
                        };
 
                        gpt1: gpt@02098000 {
                                status = "disabled";
                        };
 
+                       kpp: kpp@020b8000 {
+                               compatible = "fsl,imx6ul-kpp", "fsl,imx6q-kpp", "fsl,imx21-kpp";
+                               reg = <0x020b8000 0x4000>;
+                               interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_KPP>;
+                               status = "disabled";
+                       };
+
                        wdog1: wdog@020bc000 {
                                compatible = "fsl,imx6ul-wdt", "fsl,imx21-wdt";
                                reg = <0x020bc000 0x4000>;
                                compatible = "fsl,imx6ul-gpt", "fsl,imx6sx-gpt";
                                reg = <0x020e8000 0x4000>;
                                interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
-                               clocks = <&clks IMX6UL_CLK_DUMMY>,
-                                        <&clks IMX6UL_CLK_DUMMY>;
+                               clocks = <&clks IMX6UL_CLK_GPT2_BUS>,
+                                        <&clks IMX6UL_CLK_GPT2_SERIAL>;
                                clock-names = "ipg", "per";
                        };
 
+                       sdma: sdma@020ec000 {
+                               compatible = "fsl,imx6ul-sdma", "fsl,imx6q-sdma",
+                                            "fsl,imx35-sdma";
+                               reg = <0x020ec000 0x4000>;
+                               interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_SDMA>,
+                                        <&clks IMX6UL_CLK_SDMA>;
+                               clock-names = "ipg", "ahb";
+                               #dma-cells = <3>;
+                               fsl,sdma-ram-script-name = "imx/sdma/sdma-imx6q.bin";
+                       };
+
                        pwm5: pwm@020f0000 {
                                compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
                                reg = <0x020f0000 0x4000>;
                                interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
-                               clocks = <&clks IMX6UL_CLK_DUMMY>,
-                                        <&clks IMX6UL_CLK_DUMMY>;
+                               clocks = <&clks IMX6UL_CLK_PWM5>,
+                                        <&clks IMX6UL_CLK_PWM5>;
                                clock-names = "ipg", "per";
                                #pwm-cells = <2>;
+                               status = "disabled";
                        };
 
                        pwm6: pwm@020f4000 {
                                compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
                                reg = <0x020f4000 0x4000>;
                                interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
-                               clocks = <&clks IMX6UL_CLK_DUMMY>,
-                                        <&clks IMX6UL_CLK_DUMMY>;
+                               clocks = <&clks IMX6UL_CLK_PWM6>,
+                                        <&clks IMX6UL_CLK_PWM6>;
                                clock-names = "ipg", "per";
                                #pwm-cells = <2>;
+                               status = "disabled";
                        };
 
                        pwm7: pwm@020f8000 {
                                compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
                                reg = <0x020f8000 0x4000>;
                                interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
-                               clocks = <&clks IMX6UL_CLK_DUMMY>,
-                                        <&clks IMX6UL_CLK_DUMMY>;
+                               clocks = <&clks IMX6UL_CLK_PWM7>,
+                                        <&clks IMX6UL_CLK_PWM7>;
                                clock-names = "ipg", "per";
                                #pwm-cells = <2>;
+                               status = "disabled";
                        };
 
                        pwm8: pwm@020fc000 {
                                compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
                                reg = <0x020fc000 0x4000>;
                                interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
-                               clocks = <&clks IMX6UL_CLK_DUMMY>,
-                                        <&clks IMX6UL_CLK_DUMMY>;
+                               clocks = <&clks IMX6UL_CLK_PWM8>,
+                                        <&clks IMX6UL_CLK_PWM8>;
                                clock-names = "ipg", "per";
                                #pwm-cells = <2>;
+                               status = "disabled";
                        };
                };
 
                                fsl,usbphy = <&usbphy1>;
                                fsl,usbmisc = <&usbmisc 0>;
                                fsl,anatop = <&anatop>;
+                               ahb-burst-config = <0x0>;
+                               tx-burst-size-dword = <0x10>;
+                               rx-burst-size-dword = <0x10>;
                                status = "disabled";
                        };
 
                                clocks = <&clks IMX6UL_CLK_USBOH3>;
                                fsl,usbphy = <&usbphy2>;
                                fsl,usbmisc = <&usbmisc 1>;
+                               ahb-burst-config = <0x0>;
+                               tx-burst-size-dword = <0x10>;
+                               rx-burst-size-dword = <0x10>;
                                status = "disabled";
                        };
 
                                status = "disabled";
                        };
 
-                       tsc: tsc@02040000 {
-                               compatible = "fsl,imx6ul-tsc";
-                               reg = <0x02040000 0x4000>, <0x0219c000 0x4000>;
-                               interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
-                                            <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
-                               clocks = <&clks IMX6UL_CLK_IPG>,
-                                        <&clks IMX6UL_CLK_ADC2>;
-                               clock-names = "tsc", "adc";
-                               status = "disabled";
-                       };
-
                        usdhc1: usdhc@02190000 {
                                compatible = "fsl,imx6ul-usdhc", "fsl,imx6sx-usdhc";
                                reg = <0x02190000 0x4000>;
                                status = "disabled";
                        };
 
+                       adc1: adc@02198000 {
+                               compatible = "fsl,imx6ul-adc", "fsl,vf610-adc";
+                               reg = <0x02198000 0x4000>;
+                               interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_ADC1>;
+                               num-channels = <2>;
+                               clock-names = "adc";
+                               fsl,adck-max-frequency = <30000000>, <40000000>,
+                                                        <20000000>;
+                               status = "disabled";
+                       };
+
                        i2c1: i2c@021a0000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                reg = <0x021b0000 0x4000>;
                        };
 
+                       lcdif: lcdif@021c8000 {
+                               compatible = "fsl,imx6ul-lcdif", "fsl,imx28-lcdif";
+                               reg = <0x021c8000 0x4000>;
+                               interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_LCDIF_PIX>,
+                                        <&clks IMX6UL_CLK_LCDIF_APB>,
+                                        <&clks IMX6UL_CLK_DUMMY>;
+                               clock-names = "pix", "axi", "disp_axi";
+                               status = "disabled";
+                       };
+
                        qspi: qspi@021e0000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
diff --git a/arch/arm/configs/tx28_defconfig b/arch/arm/configs/tx28_defconfig
new file mode 100644 (file)
index 0000000..5819fdf
--- /dev/null
@@ -0,0 +1,293 @@
+CONFIG_LOCALVERSION="-karo"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_USELIB is not set
+CONFIG_IRQ_DOMAIN_DEBUG=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_RELAY=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_EMBEDDED=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+CONFIG_JUMP_LABEL=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_EFI_PARTITION is not set
+CONFIG_CMDLINE_PARTITION=y
+# CONFIG_ARCH_MULTI_V7 is not set
+CONFIG_ARCH_MXS=y
+CONFIG_PREEMPT=y
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+CONFIG_KSM=y
+CONFIG_CLEANCACHE=y
+CONFIG_FRONTSWAP=y
+CONFIG_CMA=y
+CONFIG_UACCESS_WITH_MEMCPY=y
+CONFIG_CMDLINE="init=/linuxrc root=/dev/nfs nfsroot=192.168.1.225:/tftpboot/KARO/imx28 ip=bootp ro debug panic=1 console=ttymxc0,115200"
+CONFIG_CPU_FREQ=y
+# CONFIG_CPU_FREQ_STAT is not set
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_IDLE=y
+CONFIG_FPE_NWFPE=y
+# CONFIG_SUSPEND is not set
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_IPV6 is not set
+CONFIG_CAN=y
+# CONFIG_CAN_GW is not set
+CONFIG_CAN_VCAN=y
+CONFIG_CAN_FLEXCAN=y
+# CONFIG_WIRELESS is not set
+CONFIG_UEVENT_HELPER_PATH="/sbin/mdev"
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_FW_LOADER is not set
+CONFIG_DMA_CMA=y
+CONFIG_MTD=y
+CONFIG_MTD_TESTS=m
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=16384
+CONFIG_SRAM=y
+CONFIG_EEPROM_AT24=m
+CONFIG_SCSI=m
+CONFIG_BLK_DEV_SD=m
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_ARC is not set
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_HISILICON is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_SAMSUNG is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_VIA is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_SMSC_PHY=y
+# CONFIG_WLAN is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+# CONFIG_KEYBOARD_ATKBD is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_MATRIX=y
+# CONFIG_INPUT_MOUSE is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_EDT_FT5X06=y
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=y
+# CONFIG_TOUCHSCREEN_USB_PANJIT is not set
+# CONFIG_TOUCHSCREEN_USB_3M is not set
+# CONFIG_TOUCHSCREEN_USB_ITM is not set
+# CONFIG_TOUCHSCREEN_USB_ETURBO is not set
+# CONFIG_TOUCHSCREEN_USB_GUNZE is not set
+# CONFIG_TOUCHSCREEN_USB_DMC_TSC10 is not set
+# CONFIG_TOUCHSCREEN_USB_IRTOUCH is not set
+# CONFIG_TOUCHSCREEN_USB_IDEALTEK is not set
+# CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH is not set
+# CONFIG_TOUCHSCREEN_USB_GOTOP is not set
+# CONFIG_TOUCHSCREEN_USB_JASTEC is not set
+# CONFIG_TOUCHSCREEN_USB_ELO is not set
+# CONFIG_TOUCHSCREEN_USB_E2I is not set
+# CONFIG_TOUCHSCREEN_USB_ZYTRONIC is not set
+# CONFIG_TOUCHSCREEN_USB_ETT_TC45USB is not set
+# CONFIG_TOUCHSCREEN_USB_NEXIO is not set
+# CONFIG_TOUCHSCREEN_USB_EASYTOUCH is not set
+CONFIG_TOUCHSCREEN_TSC2007=y
+# CONFIG_SERIO is not set
+CONFIG_LEGACY_PTY_COUNT=16
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_MXS_AUART=y
+CONFIG_SERIAL_MXS_AUART_CONSOLE=y
+# CONFIG_HW_RANDOM is not set
+CONFIG_I2C=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I2C_GPIO=y
+CONFIG_I2C_MXS=y
+CONFIG_SPI=y
+CONFIG_SPI_GPIO=y
+CONFIG_SPI_MXS=y
+CONFIG_SPI_SPIDEV=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_PCA953X_IRQ=y
+CONFIG_W1=y
+CONFIG_W1_MASTER_GPIO=y
+CONFIG_W1_SLAVE_SMEM=y
+CONFIG_W1_SLAVE_DS2431=y
+CONFIG_W1_SLAVE_DS2433=y
+CONFIG_W1_SLAVE_DS2433_CRC=y
+# CONFIG_HWMON is not set
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+CONFIG_STMP3XXX_RTC_WATCHDOG=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_FB=y
+CONFIG_FB_TILEBLITTING=y
+CONFIG_FB_MXS=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GENERIC is not set
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_HRTIMER=y
+CONFIG_SND_DYNAMIC_MINORS=y
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_DEBUG=y
+CONFIG_SND_PCM_XRUN_DEBUG=y
+# CONFIG_SND_DRIVERS is not set
+# CONFIG_SND_ARM is not set
+# CONFIG_SND_SPI is not set
+# CONFIG_SND_USB is not set
+CONFIG_SND_SOC=y
+CONFIG_SND_SOC_FSL_SSI=y
+CONFIG_SND_MXS_SOC=y
+CONFIG_SND_SOC_MXS_SGTL5000=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+CONFIG_USB_DYNAMIC_MINORS=y
+CONFIG_USB_MON=m
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=m
+CONFIG_USB_STORAGE_REALTEK=m
+CONFIG_USB_STORAGE_SDDR09=m
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_BELKIN=y
+CONFIG_USB_SERIAL_FTDI_SIO=y
+CONFIG_USB_TEST=m
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_DEBUG_FS=y
+CONFIG_USB_GADGET_VBUS_DRAW=300
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FUNCTIONFS=m
+CONFIG_USB_FUNCTIONFS_ETH=y
+CONFIG_USB_FUNCTIONFS_RNDIS=y
+CONFIG_USB_FUNCTIONFS_GENERIC=y
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_MMC=y
+CONFIG_MMC_CLKGATE=y
+# CONFIG_MMC_BLOCK_BOUNCE is not set
+CONFIG_MMC_TEST=m
+CONFIG_MMC_MXS=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_PWM=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_GPIO=m
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_STMP=y
+CONFIG_DMADEVICES=y
+CONFIG_MXS_DMA=y
+CONFIG_ASYNC_TX_DMA=y
+CONFIG_STAGING=y
+CONFIG_MXS_LRADC=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_IIO=y
+CONFIG_PWM=y
+CONFIG_PWM_MXS=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_FANOTIFY=y
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+CONFIG_TMPFS=y
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_850=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_NLS_UTF8=y
+CONFIG_DEFAULT_MESSAGE_LOGLEVEL=7
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_DEBUG_FS=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_SHIRQ=y
+CONFIG_PANIC_ON_OOPS=y
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_RCU_CPU_STALL_VERBOSE is not set
+# CONFIG_FTRACE is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_LL=y
+CONFIG_DEBUG_IMX28_UART=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_DEBUG_SET_MODULE_RONX=y
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_HW is not set
diff --git a/arch/arm/configs/tx48_defconfig b/arch/arm/configs/tx48_defconfig
new file mode 100644 (file)
index 0000000..c952837
--- /dev/null
@@ -0,0 +1,336 @@
+CONFIG_LOCALVERSION="-karo"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_USELIB is not set
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_RELAY=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_EMBEDDED=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_SOC_AM33XX=y
+# CONFIG_ARCH_OMAP2PLUS_TYPICAL is not set
+CONFIG_SOC_HAS_OMAP2_SDRC=y
+# CONFIG_CACHE_L2X0 is not set
+CONFIG_ARM_ERRATA_754322=y
+CONFIG_ARM_ERRATA_775420=y
+CONFIG_VMSPLIT_2G=y
+CONFIG_PREEMPT=y
+CONFIG_AEABI=y
+CONFIG_KSM=y
+CONFIG_CLEANCACHE=y
+CONFIG_FRONTSWAP=y
+CONFIG_CMA=y
+CONFIG_CMA_DEBUG=y
+CONFIG_UACCESS_WITH_MEMCPY=y
+CONFIG_DEPRECATED_PARAM_STRUCT=y
+CONFIG_ARM_APPENDED_DTB=y
+CONFIG_ARM_ATAG_DTB_COMPAT=y
+CONFIG_CMDLINE="init=/linuxrc console=ttyO0,115200 ubi.mtd=rootfs root=ubi0.rootfs rootfstype=ubifs ro panic=1 debug"
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_IDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_PM_AUTOSLEEP=y
+CONFIG_PM_WAKELOCKS=y
+CONFIG_PM_RUNTIME=y
+CONFIG_PM_DEBUG=y
+CONFIG_APM_EMULATION=y
+CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_IPV6 is not set
+CONFIG_NETLINK_MMAP=y
+CONFIG_CAN=y
+# CONFIG_CAN_GW is not set
+CONFIG_CAN_VCAN=y
+CONFIG_CAN_C_CAN=y
+CONFIG_CAN_C_CAN_PLATFORM=y
+# CONFIG_WIRELESS is not set
+CONFIG_UEVENT_HELPER_PATH="/sbin/mdev"
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_DMA_CMA=y
+CONFIG_OMAP_INTERCONNECT=y
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_TESTS=m
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_OMAP2=y
+CONFIG_MTD_NAND_OMAP_BCH=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_SRAM=y
+CONFIG_EEPROM_AT24=y
+CONFIG_SCSI=y
+CONFIG_BLK_DEV_SD=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_ARC is not set
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_HISILICON is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_SAMSUNG is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+CONFIG_TI_CPSW=y
+# CONFIG_NET_VENDOR_VIA is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_SMSC_PHY=y
+# CONFIG_WLAN is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+# CONFIG_KEYBOARD_ATKBD is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_MATRIX=y
+# CONFIG_INPUT_MOUSE is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_EDT_FT5X06=y
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=y
+# CONFIG_TOUCHSCREEN_USB_PANJIT is not set
+# CONFIG_TOUCHSCREEN_USB_3M is not set
+# CONFIG_TOUCHSCREEN_USB_ITM is not set
+# CONFIG_TOUCHSCREEN_USB_ETURBO is not set
+# CONFIG_TOUCHSCREEN_USB_GUNZE is not set
+# CONFIG_TOUCHSCREEN_USB_DMC_TSC10 is not set
+# CONFIG_TOUCHSCREEN_USB_IRTOUCH is not set
+# CONFIG_TOUCHSCREEN_USB_IDEALTEK is not set
+# CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH is not set
+# CONFIG_TOUCHSCREEN_USB_GOTOP is not set
+# CONFIG_TOUCHSCREEN_USB_JASTEC is not set
+# CONFIG_TOUCHSCREEN_USB_ELO is not set
+# CONFIG_TOUCHSCREEN_USB_E2I is not set
+# CONFIG_TOUCHSCREEN_USB_ZYTRONIC is not set
+# CONFIG_TOUCHSCREEN_USB_ETT_TC45USB is not set
+# CONFIG_TOUCHSCREEN_USB_NEXIO is not set
+# CONFIG_TOUCHSCREEN_USB_EASYTOUCH is not set
+CONFIG_TOUCHSCREEN_TSC2007=y
+# CONFIG_SERIO is not set
+CONFIG_LEGACY_PTY_COUNT=16
+CONFIG_SERIAL_OMAP=y
+CONFIG_SERIAL_OMAP_CONSOLE=y
+# CONFIG_HW_RANDOM is not set
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I2C_GPIO=y
+CONFIG_I2C_OMAP=y
+CONFIG_SPI=y
+CONFIG_SPI_DEBUG=y
+CONFIG_SPI_GPIO=y
+CONFIG_SPI_OMAP24XX=y
+CONFIG_SPI_SPIDEV=y
+CONFIG_PTP_1588_CLOCK=y
+CONFIG_DEBUG_PINCTRL=y
+CONFIG_PINCTRL_SINGLE=y
+CONFIG_DEBUG_GPIO=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC_PLATFORM=y
+CONFIG_W1=y
+CONFIG_W1_MASTER_GPIO=y
+CONFIG_HDQ_MASTER_OMAP=y
+CONFIG_W1_SLAVE_DS2433=y
+CONFIG_W1_SLAVE_DS2433_CRC=y
+# CONFIG_HWMON is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_CPU_THERMAL=y
+CONFIG_THERMAL_EMULATION=y
+CONFIG_TI_SOC_THERMAL=m
+CONFIG_TI_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+CONFIG_OMAP_WATCHDOG=y
+CONFIG_MFD_SYSCON=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_DEBUG=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_LTC3589=y
+CONFIG_DRM=y
+# CONFIG_DRM_I2C_NXP_TDA998X is not set
+CONFIG_DRM_OMAP=y
+CONFIG_DRM_OMAP_NUM_CRTCS=1
+CONFIG_DRM_TILCDC=y
+CONFIG_FB_TILEBLITTING=y
+CONFIG_FB_DA8XX=y
+CONFIG_OMAP2_DSS=y
+# CONFIG_OMAP2_DSS_DPI is not set
+# CONFIG_OMAP2_DSS_VENC is not set
+# CONFIG_OMAP4_DSS_HDMI is not set
+CONFIG_DISPLAY_PANEL_DPI=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+# CONFIG_BACKLIGHT_GENERIC is not set
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_HRTIMER=y
+CONFIG_SND_DYNAMIC_MINORS=y
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_DEBUG=y
+CONFIG_SND_PCM_XRUN_DEBUG=y
+# CONFIG_SND_DRIVERS is not set
+# CONFIG_SND_ARM is not set
+# CONFIG_SND_SPI is not set
+# CONFIG_SND_USB is not set
+CONFIG_SND_SOC=y
+CONFIG_SND_DAVINCI_SOC=y
+CONFIG_SND_AM335X_SOC_TX48=y
+CONFIG_UHID=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+CONFIG_USB_DYNAMIC_MINORS=y
+CONFIG_USB_MON=m
+CONFIG_USB_STORAGE=y
+CONFIG_USB_STORAGE_REALTEK=y
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_MUSB_HDRC=y
+CONFIG_USB_MUSB_DSPS=y
+CONFIG_USB_TI_CPPI41_DMA=y
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_BELKIN=y
+CONFIG_USB_SERIAL_FTDI_SIO=y
+CONFIG_AM335X_PHY_USB=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_DEBUG_FS=y
+CONFIG_USB_GADGET_VBUS_DRAW=500
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_EEM=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FUNCTIONFS=m
+CONFIG_USB_FUNCTIONFS_ETH=y
+CONFIG_USB_FUNCTIONFS_RNDIS=y
+CONFIG_USB_FUNCTIONFS_GENERIC=y
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_CDC_COMPOSITE=m
+CONFIG_USB_G_ACM_MS=m
+CONFIG_USB_G_HID=m
+CONFIG_MMC=y
+CONFIG_MMC_CLKGATE=y
+# CONFIG_MMC_BLOCK_BOUNCE is not set
+CONFIG_MMC_TEST=m
+CONFIG_MMC_OMAP_HS=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc1"
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_OMAP=y
+CONFIG_DMADEVICES=y
+CONFIG_TI_EDMA=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_PM_DEVFREQ=y
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
+CONFIG_DEVFREQ_GOV_USERSPACE=y
+CONFIG_IIO=y
+CONFIG_PWM=y
+CONFIG_PWM_TIECAP=y
+CONFIG_PWM_TIEHRPWM=y
+CONFIG_GENERIC_PHY=y
+CONFIG_OMAP_CONTROL_PHY=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_FUSE_FS=y
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_UBIFS_FS=y
+CONFIG_CRAMFS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_NLS_UTF8=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_DEBUG_FS=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_PANIC_ON_OOPS=y
+CONFIG_PANIC_TIMEOUT=1
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_RCU_CPU_STALL_VERBOSE is not set
+CONFIG_DEBUG_BLOCK_EXT_DEVT=y
+# CONFIG_FTRACE is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_LL=y
+CONFIG_DEBUG_AM33XXUART1=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_DEBUG_SET_MODULE_RONX=y
+CONFIG_CRYPTO_ANSI_CPRNG=y
+# CONFIG_CRYPTO_HW is not set
diff --git a/arch/arm/configs/tx53_defconfig b/arch/arm/configs/tx53_defconfig
new file mode 100644 (file)
index 0000000..b4a6179
--- /dev/null
@@ -0,0 +1,329 @@
+CONFIG_LOCALVERSION="-karo"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_USELIB is not set
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_RELAY=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_EMBEDDED=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_BLK_CMDLINE_PARSER=y
+CONFIG_ARCH_MXC=y
+CONFIG_SOC_IMX53=y
+CONFIG_SWP_EMULATE=y
+CONFIG_PL310_ERRATA_588369=y
+CONFIG_PL310_ERRATA_727915=y
+CONFIG_PL310_ERRATA_753970=y
+CONFIG_PL310_ERRATA_769419=y
+CONFIG_ARM_ERRATA_720789=y
+CONFIG_ARM_ERRATA_754322=y
+CONFIG_ARM_ERRATA_775420=y
+CONFIG_PREEMPT_VOLUNTARY=y
+CONFIG_AEABI=y
+CONFIG_HIGHMEM=y
+# CONFIG_BOUNCE is not set
+CONFIG_CLEANCACHE=y
+CONFIG_CMA=y
+CONFIG_UACCESS_WITH_MEMCPY=y
+CONFIG_CMDLINE="init=/linuxrc ubi.mtd=3 root=ubi0:rootfs rootfstype=ubifs ro console=ttymxc0,115200 debug panic=1"
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_GENERIC_CPUFREQ_CPU0=y
+CONFIG_CPU_IDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_PM_AUTOSLEEP=y
+CONFIG_PM_WAKELOCKS=y
+CONFIG_PM_WAKELOCKS_LIMIT=0
+CONFIG_PM_RUNTIME=y
+CONFIG_APM_EMULATION=y
+CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_IPV6 is not set
+CONFIG_NETLINK_MMAP=y
+CONFIG_CAN=y
+CONFIG_CAN_VCAN=y
+CONFIG_CAN_FLEXCAN=y
+CONFIG_CFG80211=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=y
+CONFIG_UEVENT_HELPER_PATH="/sbin/mdev"
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_DMA_CMA=y
+CONFIG_IMX_WEIM=y
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_TESTS=m
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_MXC=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_EEPROM_AT24=y
+CONFIG_BLK_DEV_SD=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_ATA=y
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_AHCI_IMX=y
+# CONFIG_ATA_SFF is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_ARC is not set
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_VIA is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_SMSC_PHY=y
+CONFIG_ATH_CARDS=y
+CONFIG_ATH6KL=m
+CONFIG_ATH6KL_SDIO=m
+# CONFIG_RTL_CARDS is not set
+CONFIG_INPUT_SPARSEKMAP=y
+# CONFIG_INPUT_MOUSEDEV is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+# CONFIG_KEYBOARD_ATKBD is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_MATRIX=y
+CONFIG_KEYBOARD_IMX=y
+# CONFIG_INPUT_MOUSE is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_EGALAX=y
+CONFIG_TOUCHSCREEN_EDT_FT5X06=y
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=y
+# CONFIG_TOUCHSCREEN_USB_PANJIT is not set
+# CONFIG_TOUCHSCREEN_USB_3M is not set
+# CONFIG_TOUCHSCREEN_USB_ITM is not set
+# CONFIG_TOUCHSCREEN_USB_ETURBO is not set
+# CONFIG_TOUCHSCREEN_USB_GUNZE is not set
+# CONFIG_TOUCHSCREEN_USB_DMC_TSC10 is not set
+# CONFIG_TOUCHSCREEN_USB_IRTOUCH is not set
+# CONFIG_TOUCHSCREEN_USB_IDEALTEK is not set
+# CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH is not set
+# CONFIG_TOUCHSCREEN_USB_GOTOP is not set
+# CONFIG_TOUCHSCREEN_USB_JASTEC is not set
+# CONFIG_TOUCHSCREEN_USB_ELO is not set
+# CONFIG_TOUCHSCREEN_USB_E2I is not set
+# CONFIG_TOUCHSCREEN_USB_ZYTRONIC is not set
+# CONFIG_TOUCHSCREEN_USB_ETT_TC45USB is not set
+# CONFIG_TOUCHSCREEN_USB_NEXIO is not set
+# CONFIG_TOUCHSCREEN_USB_EASYTOUCH is not set
+CONFIG_TOUCHSCREEN_TSC2007=y
+# CONFIG_SERIO is not set
+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
+CONFIG_LEGACY_PTY_COUNT=16
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+# CONFIG_HW_RANDOM is not set
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I2C_GPIO=y
+CONFIG_I2C_IMX=y
+CONFIG_SPI=y
+CONFIG_SPI_GPIO=y
+CONFIG_SPI_IMX=y
+CONFIG_SPI_SPIDEV=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_W1=y
+# CONFIG_W1_CON is not set
+CONFIG_W1_MASTER_MXC=y
+CONFIG_W1_MASTER_GPIO=y
+CONFIG_W1_SLAVE_THERM=y
+CONFIG_W1_SLAVE_SMEM=y
+CONFIG_W1_SLAVE_DS2431=y
+CONFIG_W1_SLAVE_DS2433=y
+CONFIG_W1_SLAVE_DS2433_CRC=y
+# CONFIG_HWMON is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE=y
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_CPU_THERMAL=y
+CONFIG_IMX_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+CONFIG_IMX2_WDT=y
+CONFIG_MFD_SYSCON=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_SOC_CAMERA=y
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_VIDEO_CODA=y
+CONFIG_SOC_CAMERA_OV2640=y
+CONFIG_IMX_IPUV3_CORE=y
+CONFIG_DRM=y
+CONFIG_DRM_PANEL_SIMPLE=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GENERIC is not set
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_HRTIMER=y
+CONFIG_SND_DYNAMIC_MINORS=y
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_DEBUG=y
+CONFIG_SND_PCM_XRUN_DEBUG=y
+# CONFIG_SND_DRIVERS is not set
+# CONFIG_SND_ARM is not set
+# CONFIG_SND_SPI is not set
+# CONFIG_SND_USB is not set
+CONFIG_SND_SOC=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_IMX_SGTL5000=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+CONFIG_USB_DYNAMIC_MINORS=y
+CONFIG_USB_MON=m
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_STORAGE_REALTEK=y
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_CONSOLE=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_BELKIN=y
+CONFIG_USB_TEST=m
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_DEBUG_FS=y
+CONFIG_USB_GADGET_VBUS_DRAW=500
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_EEM=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FUNCTIONFS=m
+CONFIG_USB_FUNCTIONFS_ETH=y
+CONFIG_USB_FUNCTIONFS_RNDIS=y
+CONFIG_USB_FUNCTIONFS_GENERIC=y
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_CDC_COMPOSITE=m
+CONFIG_USB_G_ACM_MS=m
+CONFIG_USB_G_HID=m
+CONFIG_MMC=y
+CONFIG_MMC_CLKGATE=y
+# CONFIG_MMC_BLOCK_BOUNCE is not set
+CONFIG_MMC_TEST=m
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_DMADEVICES=y
+# CONFIG_MX3_IPU is not set
+CONFIG_IMX_SDMA=y
+CONFIG_STAGING=y
+CONFIG_DRM_IMX=y
+CONFIG_DRM_IMX_FB_HELPER=y
+CONFIG_DRM_IMX_PARALLEL_DISPLAY=y
+CONFIG_DRM_IMX_LDB=y
+CONFIG_DRM_IMX_IPUV3=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_PWM=y
+CONFIG_PWM_IMX=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_CRAMFS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_NLS_UTF8=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_DEBUG_FS=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_SHIRQ=y
+# CONFIG_SCHED_DEBUG is not set
+CONFIG_DEBUG_BLOCK_EXT_DEVT=y
+# CONFIG_FTRACE is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_LL=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_DEBUG_SET_MODULE_RONX=y
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
diff --git a/arch/arm/configs/tx6_defconfig b/arch/arm/configs/tx6_defconfig
new file mode 100644 (file)
index 0000000..c5393fd
--- /dev/null
@@ -0,0 +1,399 @@
+CONFIG_SYSVIPC=y
+# CONFIG_CROSS_MEMORY_ATTACH is not set
+# CONFIG_USELIB is not set
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_RELAY=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_USERFAULTFD=y
+CONFIG_EMBEDDED=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_SLUB_CPU_PARTIAL is not set
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_BLK_CMDLINE_PARSER=y
+CONFIG_ARCH_MXC=y
+CONFIG_SOC_IMX6Q=y
+CONFIG_PL310_ERRATA_588369=y
+CONFIG_PL310_ERRATA_727915=y
+# CONFIG_ARM_ERRATA_643719 is not set
+CONFIG_PCI=y
+CONFIG_PCI_DEBUG=y
+CONFIG_PCI_IMX6=y
+CONFIG_PCIE_ECRC=y
+CONFIG_PCIEASPM_DEBUG=y
+CONFIG_PCIEASPM_POWERSAVE=y
+CONFIG_SMP=y
+CONFIG_VMSPLIT_2G=y
+CONFIG_PREEMPT=y
+CONFIG_AEABI=y
+CONFIG_HIGHMEM=y
+# CONFIG_HIGHPTE is not set
+# CONFIG_BOUNCE is not set
+CONFIG_CMA=y
+CONFIG_CMA_DEBUGFS=y
+CONFIG_FORCE_MAX_ZONEORDER=14
+CONFIG_CMDLINE="noinitrd console=ttymxc0,115200"
+CONFIG_CPU_FREQ=y
+# CONFIG_CPU_FREQ_STAT is not set
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPUFREQ_DT=y
+CONFIG_ARM_IMX6Q_CPUFREQ=y
+CONFIG_CPU_IDLE=y
+CONFIG_ARM_CPUIDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_PM_AUTOSLEEP=y
+CONFIG_PM_WAKELOCKS=y
+CONFIG_PM_DEBUG=y
+CONFIG_PM_ADVANCED_DEBUG=y
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_APM_EMULATION=y
+CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_IPV6 is not set
+CONFIG_CAN=y
+# CONFIG_CAN_GW is not set
+CONFIG_CAN_VCAN=y
+CONFIG_CAN_FLEXCAN=y
+CONFIG_CFG80211=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
+CONFIG_DMA_CMA=y
+CONFIG_CMA_SIZE_MBYTES=320
+CONFIG_IMX_WEIM=y
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_TESTS=m
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_FASTMAP=y
+CONFIG_MTD_UBI_GLUEBI=y
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_EEPROM_AT24=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_ATA=y
+# CONFIG_SATA_PMP is not set
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_AHCI_IMX=y
+# CONFIG_ATA_SFF is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_NET_VENDOR_ADAPTEC is not set
+# CONFIG_NET_VENDOR_AGERE is not set
+# CONFIG_NET_VENDOR_ALTEON is not set
+# CONFIG_NET_VENDOR_AMD is not set
+# CONFIG_NET_VENDOR_ARC is not set
+# CONFIG_NET_VENDOR_ATHEROS is not set
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_BROCADE is not set
+# CONFIG_NET_VENDOR_CAVIUM is not set
+# CONFIG_NET_VENDOR_CHELSIO is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_NET_VENDOR_CISCO is not set
+# CONFIG_NET_VENDOR_DEC is not set
+# CONFIG_NET_VENDOR_DLINK is not set
+# CONFIG_NET_VENDOR_EMULEX is not set
+# CONFIG_NET_VENDOR_EZCHIP is not set
+# CONFIG_NET_VENDOR_EXAR is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_HISILICON is not set
+# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MELLANOX is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_MYRI is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_NVIDIA is not set
+# CONFIG_NET_VENDOR_OKI is not set
+# CONFIG_NET_PACKET_ENGINE is not set
+# CONFIG_NET_VENDOR_QLOGIC is not set
+# CONFIG_NET_VENDOR_QUALCOMM is not set
+# CONFIG_NET_VENDOR_REALTEK is not set
+# CONFIG_NET_VENDOR_RENESAS is not set
+# CONFIG_NET_VENDOR_RDC is not set
+# CONFIG_NET_VENDOR_ROCKER is not set
+# CONFIG_NET_VENDOR_SAMSUNG is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SILAN is not set
+# CONFIG_NET_VENDOR_SIS is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_SUN is not set
+# CONFIG_NET_VENDOR_SYNOPSYS is not set
+# CONFIG_NET_VENDOR_TEHUTI is not set
+# CONFIG_NET_VENDOR_TI is not set
+# CONFIG_NET_VENDOR_VIA is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_SMSC_PHY=y
+# CONFIG_USB_NET_DRIVERS is not set
+CONFIG_ATH_CARDS=y
+CONFIG_ATH6KL=m
+CONFIG_ATH6KL_SDIO=m
+CONFIG_BRCMFMAC=y
+CONFIG_BRCMDBG=y
+# CONFIG_RTL_CARDS is not set
+# CONFIG_INPUT_LEDS is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+# CONFIG_KEYBOARD_ATKBD is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_MATRIX=y
+CONFIG_KEYBOARD_IMX=y
+# CONFIG_INPUT_MOUSE is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_EGALAX=y
+CONFIG_TOUCHSCREEN_EDT_FT5X06=y
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=y
+# CONFIG_TOUCHSCREEN_USB_PANJIT is not set
+# CONFIG_TOUCHSCREEN_USB_3M is not set
+# CONFIG_TOUCHSCREEN_USB_ITM is not set
+# CONFIG_TOUCHSCREEN_USB_ETURBO is not set
+# CONFIG_TOUCHSCREEN_USB_GUNZE is not set
+# CONFIG_TOUCHSCREEN_USB_DMC_TSC10 is not set
+# CONFIG_TOUCHSCREEN_USB_IRTOUCH is not set
+# CONFIG_TOUCHSCREEN_USB_IDEALTEK is not set
+# CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH is not set
+# CONFIG_TOUCHSCREEN_USB_GOTOP is not set
+# CONFIG_TOUCHSCREEN_USB_JASTEC is not set
+# CONFIG_TOUCHSCREEN_USB_ELO is not set
+# CONFIG_TOUCHSCREEN_USB_E2I is not set
+# CONFIG_TOUCHSCREEN_USB_ZYTRONIC is not set
+# CONFIG_TOUCHSCREEN_USB_ETT_TC45USB is not set
+# CONFIG_TOUCHSCREEN_USB_NEXIO is not set
+# CONFIG_TOUCHSCREEN_USB_EASYTOUCH is not set
+CONFIG_TOUCHSCREEN_TSC2007=y
+# CONFIG_SERIO is not set
+CONFIG_LEGACY_PTY_COUNT=16
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_HW_RANDOM=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I2C_GPIO=y
+CONFIG_I2C_IMX=y
+CONFIG_SPI=y
+CONFIG_SPI_IMX=y
+CONFIG_SPI_SPIDEV=y
+CONFIG_GPIO_SYSFS=y
+# CONFIG_HWMON is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_CPU_THERMAL=y
+CONFIG_CLOCK_THERMAL=y
+CONFIG_DEVFREQ_THERMAL=y
+CONFIG_THERMAL_EMULATION=y
+CONFIG_IMX_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+CONFIG_IMX2_WDT=y
+CONFIG_MFD_RN5T618=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_ANATOP=y
+CONFIG_REGULATOR_RN5T618=y
+# CONFIG_VGA_ARB is not set
+CONFIG_IMX_IPUV3_CORE=y
+CONFIG_DRM=y
+CONFIG_DRM_IMX=y
+CONFIG_DRM_IMX_FB_HELPER=y
+CONFIG_DRM_IMX_PARALLEL_DISPLAY=y
+CONFIG_DRM_IMX_LDB=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GENERIC is not set
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_HRTIMER=y
+CONFIG_SND_DYNAMIC_MINORS=y
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+CONFIG_SND_DEBUG_VERBOSE=y
+CONFIG_SND_PCM_XRUN_DEBUG=y
+# CONFIG_SND_DRIVERS is not set
+# CONFIG_SND_PCI is not set
+# CONFIG_SND_ARM is not set
+# CONFIG_SND_SPI is not set
+# CONFIG_SND_USB is not set
+CONFIG_SND_SOC=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_IMX_SGTL5000=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+CONFIG_USB_DYNAMIC_MINORS=y
+CONFIG_USB_OTG=y
+CONFIG_USB_MON=m
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_STORAGE_REALTEK=y
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_TEST=m
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_DEBUG_FS=y
+CONFIG_USB_GADGET_VBUS_DRAW=500
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_EEM=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FUNCTIONFS=m
+CONFIG_USB_FUNCTIONFS_ETH=y
+CONFIG_USB_FUNCTIONFS_RNDIS=y
+CONFIG_USB_FUNCTIONFS_GENERIC=y
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_CDC_COMPOSITE=m
+CONFIG_USB_G_ACM_MS=m
+CONFIG_USB_G_HID=m
+CONFIG_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_DMADEVICES=y
+CONFIG_IMX_SDMA=y
+CONFIG_MXS_DMA=y
+# CONFIG_MX3_IPU is not set
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_PM_DEVFREQ=y
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
+CONFIG_DEVFREQ_GOV_USERSPACE=y
+CONFIG_PWM=y
+CONFIG_PWM_IMX=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_FUSE_FS=y
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_CRAMFS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_NLS_UTF8=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_DEBUG_FS=y
+# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_SHIRQ=y
+CONFIG_LOCKUP_DETECTOR=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
+CONFIG_PANIC_ON_OOPS=y
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_PREEMPT is not set
+CONFIG_DEBUG_BLOCK_EXT_DEVT=y
+# CONFIG_FTRACE is not set
+CONFIG_DEBUG_LL=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_DEBUG_SET_MODULE_RONX=y
+# CONFIG_CRYPTO_ECHAINIV is not set
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_CRCT10DIF=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_RMD128=y
+CONFIG_CRYPTO_RMD160=y
+CONFIG_CRYPTO_RMD256=y
+CONFIG_CRYPTO_RMD320=y
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_TGR192=y
+CONFIG_CRYPTO_WP512=y
+CONFIG_CRYPTO_BLOWFISH=y
+CONFIG_CRYPTO_CAMELLIA=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_TWOFISH=y
+CONFIG_CRYPTO_DEV_SAHARA=y
diff --git a/arch/arm/configs/txul_defconfig b/arch/arm/configs/txul_defconfig
new file mode 100644 (file)
index 0000000..4b837e9
--- /dev/null
@@ -0,0 +1,366 @@
+CONFIG_SYSVIPC=y
+# CONFIG_CROSS_MEMORY_ATTACH is not set
+# CONFIG_USELIB is not set
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_RELAY=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_USERFAULTFD=y
+CONFIG_EMBEDDED=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_SLUB_CPU_PARTIAL is not set
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_BLK_CMDLINE_PARSER=y
+CONFIG_ARCH_MXC=y
+CONFIG_SOC_IMX6UL=y
+CONFIG_PL310_ERRATA_588369=y
+CONFIG_PL310_ERRATA_727915=y
+# CONFIG_ARM_ERRATA_643719 is not set
+CONFIG_ARM_ERRATA_764369=y
+CONFIG_SMP=y
+CONFIG_VMSPLIT_2G=y
+CONFIG_PREEMPT=y
+CONFIG_AEABI=y
+CONFIG_HIGHMEM=y
+# CONFIG_HIGHPTE is not set
+CONFIG_CMA=y
+CONFIG_CMA_DEBUGFS=y
+CONFIG_FORCE_MAX_ZONEORDER=14
+CONFIG_CMDLINE="noinitrd console=ttymxc0,115200"
+CONFIG_CPU_FREQ=y
+# CONFIG_CPU_FREQ_STAT is not set
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPUFREQ_DT=y
+CONFIG_ARM_IMX6Q_CPUFREQ=y
+CONFIG_CPU_IDLE=y
+CONFIG_ARM_CPUIDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_PM_AUTOSLEEP=y
+CONFIG_PM_WAKELOCKS=y
+CONFIG_PM_DEBUG=y
+CONFIG_PM_ADVANCED_DEBUG=y
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_APM_EMULATION=y
+CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_IPV6 is not set
+CONFIG_CAN=y
+# CONFIG_CAN_GW is not set
+CONFIG_CAN_VCAN=y
+CONFIG_CAN_FLEXCAN=y
+CONFIG_CFG80211=y
+CONFIG_CFG80211_INTERNAL_REGDB=y
+# CONFIG_CFG80211_CRDA_SUPPORT is not set
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
+CONFIG_DMA_CMA=y
+CONFIG_CMA_SIZE_MBYTES=320
+CONFIG_IMX_WEIM=y
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_TESTS=m
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_FASTMAP=y
+CONFIG_MTD_UBI_GLUEBI=y
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_EEPROM_AT24=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_ATA=y
+# CONFIG_SATA_PMP is not set
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_AHCI_IMX=y
+# CONFIG_ATA_SFF is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_ARC is not set
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_NET_VENDOR_EZCHIP is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_HISILICON is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_QUALCOMM is not set
+# CONFIG_NET_VENDOR_RENESAS is not set
+# CONFIG_NET_VENDOR_ROCKER is not set
+# CONFIG_NET_VENDOR_SAMSUNG is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_SYNOPSYS is not set
+# CONFIG_NET_VENDOR_VIA is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_SMSC_PHY=y
+# CONFIG_USB_NET_DRIVERS is not set
+CONFIG_HOSTAP=y
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+# CONFIG_RTL_CARDS is not set
+# CONFIG_INPUT_LEDS is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+# CONFIG_KEYBOARD_ATKBD is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_MATRIX=y
+CONFIG_KEYBOARD_IMX=y
+# CONFIG_INPUT_MOUSE is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_EGALAX=y
+CONFIG_TOUCHSCREEN_EDT_FT5X06=y
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=y
+# CONFIG_TOUCHSCREEN_USB_PANJIT is not set
+# CONFIG_TOUCHSCREEN_USB_3M is not set
+# CONFIG_TOUCHSCREEN_USB_ITM is not set
+# CONFIG_TOUCHSCREEN_USB_ETURBO is not set
+# CONFIG_TOUCHSCREEN_USB_GUNZE is not set
+# CONFIG_TOUCHSCREEN_USB_DMC_TSC10 is not set
+# CONFIG_TOUCHSCREEN_USB_IRTOUCH is not set
+# CONFIG_TOUCHSCREEN_USB_IDEALTEK is not set
+# CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH is not set
+# CONFIG_TOUCHSCREEN_USB_GOTOP is not set
+# CONFIG_TOUCHSCREEN_USB_JASTEC is not set
+# CONFIG_TOUCHSCREEN_USB_ELO is not set
+# CONFIG_TOUCHSCREEN_USB_E2I is not set
+# CONFIG_TOUCHSCREEN_USB_ZYTRONIC is not set
+# CONFIG_TOUCHSCREEN_USB_ETT_TC45USB is not set
+# CONFIG_TOUCHSCREEN_USB_NEXIO is not set
+# CONFIG_TOUCHSCREEN_USB_EASYTOUCH is not set
+CONFIG_TOUCHSCREEN_TSC2007=y
+# CONFIG_SERIO is not set
+CONFIG_LEGACY_PTY_COUNT=16
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_HW_RANDOM=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I2C_GPIO=y
+CONFIG_I2C_IMX=y
+CONFIG_SPI=y
+CONFIG_SPI_IMX=y
+CONFIG_SPI_SPIDEV=y
+CONFIG_GPIO_SYSFS=y
+# CONFIG_HWMON is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_CPU_THERMAL=y
+CONFIG_CLOCK_THERMAL=y
+CONFIG_DEVFREQ_THERMAL=y
+CONFIG_THERMAL_EMULATION=y
+CONFIG_IMX_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_IMX2_WDT=y
+CONFIG_MFD_RN5T618=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_ANATOP=y
+CONFIG_REGULATOR_RN5T618=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_SOC_CAMERA=y
+# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
+# CONFIG_DVB_AU8522_V4L is not set
+# CONFIG_DVB_TUNER_DIB0070 is not set
+# CONFIG_DVB_TUNER_DIB0090 is not set
+CONFIG_DRM=y
+CONFIG_FB_TILEBLITTING=y
+CONFIG_FB_MXS=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GENERIC is not set
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_HRTIMER=y
+CONFIG_SND_DYNAMIC_MINORS=y
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+CONFIG_SND_DEBUG_VERBOSE=y
+CONFIG_SND_PCM_XRUN_DEBUG=y
+# CONFIG_SND_DRIVERS is not set
+# CONFIG_SND_ARM is not set
+# CONFIG_SND_SPI is not set
+# CONFIG_SND_USB is not set
+CONFIG_SND_SOC=y
+CONFIG_SND_SOC_FSL_SAI=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_SGTL5000=y
+CONFIG_SND_SIMPLE_CARD=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+CONFIG_USB_DYNAMIC_MINORS=y
+CONFIG_USB_OTG=y
+CONFIG_USB_MON=m
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_STORAGE_REALTEK=y
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_TEST=m
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_DEBUG_FS=y
+CONFIG_USB_GADGET_VBUS_DRAW=500
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_EEM=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FUNCTIONFS=m
+CONFIG_USB_FUNCTIONFS_ETH=y
+CONFIG_USB_FUNCTIONFS_RNDIS=y
+CONFIG_USB_FUNCTIONFS_GENERIC=y
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_CDC_COMPOSITE=m
+CONFIG_USB_G_ACM_MS=m
+CONFIG_USB_G_HID=m
+CONFIG_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_DMADEVICES=y
+CONFIG_IMX_SDMA=y
+CONFIG_MXS_DMA=y
+# CONFIG_MX3_IPU is not set
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_PM_DEVFREQ=y
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
+CONFIG_DEVFREQ_GOV_USERSPACE=y
+CONFIG_PWM=y
+CONFIG_PWM_IMX=y
+CONFIG_RAS=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_FUSE_FS=y
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_CRAMFS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_NLS_UTF8=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_DEBUG_FS=y
+# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_SHIRQ=y
+CONFIG_LOCKUP_DETECTOR=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
+CONFIG_PANIC_ON_OOPS=y
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_PREEMPT is not set
+CONFIG_DEBUG_BLOCK_EXT_DEVT=y
+# CONFIG_FTRACE is not set
+CONFIG_DEBUG_LL=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_DEBUG_SET_MODULE_RONX=y
+# CONFIG_CRYPTO_ECHAINIV is not set
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_CRCT10DIF=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_RMD128=y
+CONFIG_CRYPTO_RMD160=y
+CONFIG_CRYPTO_RMD256=y
+CONFIG_CRYPTO_RMD320=y
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_TGR192=y
+CONFIG_CRYPTO_WP512=y
+CONFIG_CRYPTO_BLOWFISH=y
+CONFIG_CRYPTO_CAMELLIA=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_TWOFISH=y
+CONFIG_CRYPTO_DEV_SAHARA=y
index c1935081d34aee3403d0ee5d6904b117bd5dfa12..098b1eade21882d80d739189f79f90f994226926 100644 (file)
@@ -34,7 +34,9 @@ static const char *periph2_sels[]     = { "periph2_pre", "periph2_clk2", };
 static const char *axi_sels[]          = { "periph", "pll2_pfd2_396m", "periph", "pll3_pfd1_540m", };
 static const char *audio_sels[]        = { "pll4_audio_div", "pll3_pfd2_508m", "pll3_pfd3_454m", "pll3_usb_otg", };
 static const char *gpu_axi_sels[]      = { "axi", "ahb", };
+static const char *pre_axi_sels[]      = { "axi", "ahb", };
 static const char *gpu2d_core_sels[]   = { "axi", "pll3_usb_otg", "pll2_pfd0_352m", "pll2_pfd2_396m", };
+static const char *gpu2d_core_sels_2[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll3_pfd0_720m",};
 static const char *gpu3d_core_sels[]   = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd2_396m", };
 static const char *gpu3d_shader_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll3_pfd0_720m", };
 static const char *ipu_sels[]          = { "mmdc_ch0_axi", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", };
@@ -44,15 +46,24 @@ static const char *ipu1_di0_sels[]  = { "ipu1_di0_pre", "dummy", "dummy", "ldb_di
 static const char *ipu1_di1_sels[]     = { "ipu1_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
 static const char *ipu2_di0_sels[]     = { "ipu2_di0_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
 static const char *ipu2_di1_sels[]     = { "ipu2_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
+static const char *ipu1_di0_sels_2[]   = { "ipu1_di0_pre", "dummy", "dummy", "ldb_di0_podf", "ldb_di1_podf", };
+static const char *ipu1_di1_sels_2[]   = { "ipu1_di1_pre", "dummy", "dummy", "ldb_di0_podf", "ldb_di1_podf", };
+static const char *ipu2_di0_sels_2[]   = { "ipu2_di0_pre", "dummy", "dummy", "ldb_di0_podf", "ldb_di1_podf", };
+static const char *ipu2_di1_sels_2[]   = { "ipu2_di1_pre", "dummy", "dummy", "ldb_di0_podf", "ldb_di1_podf", };
 static const char *hsi_tx_sels[]       = { "pll3_120m", "pll2_pfd2_396m", };
 static const char *pcie_axi_sels[]     = { "axi", "ahb", };
 static const char *ssi_sels[]          = { "pll3_pfd2_508m", "pll3_pfd3_454m", "pll4_audio_div", };
 static const char *usdhc_sels[]        = { "pll2_pfd2_396m", "pll2_pfd0_352m", };
 static const char *enfc_sels[] = { "pll2_pfd0_352m", "pll2_bus", "pll3_usb_otg", "pll2_pfd2_396m", };
+static const char *enfc_sels_2[] = {"pll2_pfd0_352m", "pll2_bus", "pll3_usb_otg", "pll2_pfd2_396m", "pll3_pfd3_454m", "dummy", };
 static const char *eim_sels[]          = { "pll2_pfd2_396m", "pll3_usb_otg", "axi", "pll2_pfd0_352m", };
 static const char *eim_slow_sels[]      = { "axi", "pll3_usb_otg", "pll2_pfd2_396m", "pll2_pfd0_352m", };
 static const char *vdo_axi_sels[]      = { "axi", "ahb", };
 static const char *vpu_axi_sels[]      = { "axi", "pll2_pfd2_396m", "pll2_pfd0_352m", };
+static const char *uart_sels[] = { "pll3_80m", "osc", };
+static const char *ipg_per_sels[] = { "ipg", "osc", };
+static const char *ecspi_sels[] = { "pll3_60m", "osc", };
+static const char *can_sels[] = { "pll3_60m", "osc", "pll3_80m", };
 static const char *cko1_sels[] = { "pll3_usb_otg", "pll2_bus", "pll1_sys", "pll5_video_div",
                                    "dummy", "axi", "enfc", "ipu1_di0", "ipu1_di1", "ipu2_di0",
                                    "ipu2_di1", "ahb", "ipg", "ipg_per", "ckil", "pll4_audio_div", };
@@ -120,12 +131,19 @@ static unsigned int share_count_ssi2;
 static unsigned int share_count_ssi3;
 static unsigned int share_count_mipi_core_cfg;
 static unsigned int share_count_spdif;
+static unsigned int share_count_prg0;
+static unsigned int share_count_prg1;
 
 static inline int clk_on_imx6q(void)
 {
        return of_machine_is_compatible("fsl,imx6q");
 }
 
+static inline int clk_on_imx6qp(void)
+{
+       return of_machine_is_compatible("fsl,imx6qp");
+}
+
 static inline int clk_on_imx6dl(void)
 {
        return of_machine_is_compatible("fsl,imx6dl");
@@ -264,7 +282,7 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
        clk[IMX6QDL_CLK_TWD]       = imx_clk_fixed_factor("twd",       "arm",            1, 2);
        clk[IMX6QDL_CLK_GPT_3M]    = imx_clk_fixed_factor("gpt_3m",    "osc",            1, 8);
        clk[IMX6QDL_CLK_VIDEO_27M] = imx_clk_fixed_factor("video_27m", "pll3_pfd1_540m", 1, 20);
-       if (clk_on_imx6dl()) {
+       if (clk_on_imx6dl() || clk_on_imx6qp()) {
                clk[IMX6QDL_CLK_GPU2D_AXI] = imx_clk_fixed_factor("gpu2d_axi", "mmdc_ch0_axi_podf", 1, 1);
                clk[IMX6QDL_CLK_GPU3D_AXI] = imx_clk_fixed_factor("gpu3d_axi", "mmdc_ch0_axi_podf", 1, 1);
        }
@@ -293,7 +311,15 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
                clk[IMX6QDL_CLK_GPU2D_AXI]        = imx_clk_mux("gpu2d_axi",        base + 0x18, 0,  1, gpu_axi_sels,      ARRAY_SIZE(gpu_axi_sels));
                clk[IMX6QDL_CLK_GPU3D_AXI]        = imx_clk_mux("gpu3d_axi",        base + 0x18, 1,  1, gpu_axi_sels,      ARRAY_SIZE(gpu_axi_sels));
        }
-       clk[IMX6QDL_CLK_GPU2D_CORE_SEL]   = imx_clk_mux("gpu2d_core_sel",   base + 0x18, 16, 2, gpu2d_core_sels,   ARRAY_SIZE(gpu2d_core_sels));
+       if (clk_on_imx6qp()) {
+               clk[IMX6QDL_CLK_CAN_SEL]   = imx_clk_mux("can_sel",     base + 0x20, 8,  2, can_sels, ARRAY_SIZE(can_sels));
+               clk[IMX6QDL_CLK_ECSPI_SEL] = imx_clk_mux("ecspi_sel",   base + 0x38, 18, 1, ecspi_sels,  ARRAY_SIZE(ecspi_sels));
+               clk[IMX6QDL_CLK_IPG_PER_SEL] = imx_clk_mux("ipg_per_sel", base + 0x1c, 6, 1, ipg_per_sels, ARRAY_SIZE(ipg_per_sels));
+               clk[IMX6QDL_CLK_UART_SEL] = imx_clk_mux("uart_sel", base + 0x24, 6, 1, uart_sels, ARRAY_SIZE(uart_sels));
+               clk[IMX6QDL_CLK_GPU2D_CORE_SEL] = imx_clk_mux("gpu2d_core_sel", base + 0x18, 16, 2, gpu2d_core_sels_2, ARRAY_SIZE(gpu2d_core_sels_2));
+       } else {
+               clk[IMX6QDL_CLK_GPU2D_CORE_SEL] = imx_clk_mux("gpu2d_core_sel",   base + 0x18, 16, 2, gpu2d_core_sels,   ARRAY_SIZE(gpu2d_core_sels));
+       }
        clk[IMX6QDL_CLK_GPU3D_CORE_SEL]   = imx_clk_mux("gpu3d_core_sel",   base + 0x18, 4,  2, gpu3d_core_sels,   ARRAY_SIZE(gpu3d_core_sels));
        clk[IMX6QDL_CLK_GPU3D_SHADER_SEL] = imx_clk_mux("gpu3d_shader_sel", base + 0x18, 8,  2, gpu3d_shader_sels, ARRAY_SIZE(gpu3d_shader_sels));
        clk[IMX6QDL_CLK_IPU1_SEL]         = imx_clk_mux("ipu1_sel",         base + 0x3c, 9,  2, ipu_sels,          ARRAY_SIZE(ipu_sels));
@@ -304,22 +330,40 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
        clk[IMX6QDL_CLK_IPU1_DI1_PRE_SEL] = imx_clk_mux_flags("ipu1_di1_pre_sel", base + 0x34, 15, 3, ipu_di_pre_sels,   ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT);
        clk[IMX6QDL_CLK_IPU2_DI0_PRE_SEL] = imx_clk_mux_flags("ipu2_di0_pre_sel", base + 0x38, 6,  3, ipu_di_pre_sels,   ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT);
        clk[IMX6QDL_CLK_IPU2_DI1_PRE_SEL] = imx_clk_mux_flags("ipu2_di1_pre_sel", base + 0x38, 15, 3, ipu_di_pre_sels,   ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT);
-       clk[IMX6QDL_CLK_IPU1_DI0_SEL]     = imx_clk_mux_flags("ipu1_di0_sel",     base + 0x34, 0,  3, ipu1_di0_sels,     ARRAY_SIZE(ipu1_di0_sels), CLK_SET_RATE_PARENT);
-       clk[IMX6QDL_CLK_IPU1_DI1_SEL]     = imx_clk_mux_flags("ipu1_di1_sel",     base + 0x34, 9,  3, ipu1_di1_sels,     ARRAY_SIZE(ipu1_di1_sels), CLK_SET_RATE_PARENT);
-       clk[IMX6QDL_CLK_IPU2_DI0_SEL]     = imx_clk_mux_flags("ipu2_di0_sel",     base + 0x38, 0,  3, ipu2_di0_sels,     ARRAY_SIZE(ipu2_di0_sels), CLK_SET_RATE_PARENT);
-       clk[IMX6QDL_CLK_IPU2_DI1_SEL]     = imx_clk_mux_flags("ipu2_di1_sel",     base + 0x38, 9,  3, ipu2_di1_sels,     ARRAY_SIZE(ipu2_di1_sels), CLK_SET_RATE_PARENT);
        clk[IMX6QDL_CLK_HSI_TX_SEL]       = imx_clk_mux("hsi_tx_sel",       base + 0x30, 28, 1, hsi_tx_sels,       ARRAY_SIZE(hsi_tx_sels));
        clk[IMX6QDL_CLK_PCIE_AXI_SEL]     = imx_clk_mux("pcie_axi_sel",     base + 0x18, 10, 1, pcie_axi_sels,     ARRAY_SIZE(pcie_axi_sels));
-       clk[IMX6QDL_CLK_SSI1_SEL]         = imx_clk_fixup_mux("ssi1_sel",   base + 0x1c, 10, 2, ssi_sels,          ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
-       clk[IMX6QDL_CLK_SSI2_SEL]         = imx_clk_fixup_mux("ssi2_sel",   base + 0x1c, 12, 2, ssi_sels,          ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
-       clk[IMX6QDL_CLK_SSI3_SEL]         = imx_clk_fixup_mux("ssi3_sel",   base + 0x1c, 14, 2, ssi_sels,          ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
-       clk[IMX6QDL_CLK_USDHC1_SEL]       = imx_clk_fixup_mux("usdhc1_sel", base + 0x1c, 16, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
-       clk[IMX6QDL_CLK_USDHC2_SEL]       = imx_clk_fixup_mux("usdhc2_sel", base + 0x1c, 17, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
-       clk[IMX6QDL_CLK_USDHC3_SEL]       = imx_clk_fixup_mux("usdhc3_sel", base + 0x1c, 18, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
-       clk[IMX6QDL_CLK_USDHC4_SEL]       = imx_clk_fixup_mux("usdhc4_sel", base + 0x1c, 19, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
-       clk[IMX6QDL_CLK_ENFC_SEL]         = imx_clk_mux("enfc_sel",         base + 0x2c, 16, 2, enfc_sels,         ARRAY_SIZE(enfc_sels));
-       clk[IMX6QDL_CLK_EIM_SEL]          = imx_clk_fixup_mux("eim_sel",      base + 0x1c, 27, 2, eim_sels,        ARRAY_SIZE(eim_sels), imx_cscmr1_fixup);
-       clk[IMX6QDL_CLK_EIM_SLOW_SEL]     = imx_clk_fixup_mux("eim_slow_sel", base + 0x1c, 29, 2, eim_slow_sels,   ARRAY_SIZE(eim_slow_sels), imx_cscmr1_fixup);
+       if (clk_on_imx6qp()) {
+               clk[IMX6QDL_CLK_IPU1_DI0_SEL]     = imx_clk_mux_flags("ipu1_di0_sel",     base + 0x34, 0,  3, ipu1_di0_sels_2,     ARRAY_SIZE(ipu1_di0_sels_2), CLK_SET_RATE_PARENT);
+               clk[IMX6QDL_CLK_IPU1_DI1_SEL]     = imx_clk_mux_flags("ipu1_di1_sel",     base + 0x34, 9,  3, ipu1_di1_sels_2,     ARRAY_SIZE(ipu1_di1_sels_2), CLK_SET_RATE_PARENT);
+               clk[IMX6QDL_CLK_IPU2_DI0_SEL]     = imx_clk_mux_flags("ipu2_di0_sel",     base + 0x38, 0,  3, ipu2_di0_sels_2,     ARRAY_SIZE(ipu2_di0_sels_2), CLK_SET_RATE_PARENT);
+               clk[IMX6QDL_CLK_IPU2_DI1_SEL]     = imx_clk_mux_flags("ipu2_di1_sel",     base + 0x38, 9,  3, ipu2_di1_sels_2,     ARRAY_SIZE(ipu2_di1_sels_2), CLK_SET_RATE_PARENT);
+               clk[IMX6QDL_CLK_SSI1_SEL]         = imx_clk_mux("ssi1_sel",   base + 0x1c, 10, 2, ssi_sels,          ARRAY_SIZE(ssi_sels));
+               clk[IMX6QDL_CLK_SSI2_SEL]         = imx_clk_mux("ssi2_sel",   base + 0x1c, 12, 2, ssi_sels,          ARRAY_SIZE(ssi_sels));
+               clk[IMX6QDL_CLK_SSI3_SEL]         = imx_clk_mux("ssi3_sel",   base + 0x1c, 14, 2, ssi_sels,          ARRAY_SIZE(ssi_sels));
+               clk[IMX6QDL_CLK_USDHC1_SEL]       = imx_clk_mux("usdhc1_sel", base + 0x1c, 16, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels));
+               clk[IMX6QDL_CLK_USDHC2_SEL]       = imx_clk_mux("usdhc2_sel", base + 0x1c, 17, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels));
+               clk[IMX6QDL_CLK_USDHC3_SEL]       = imx_clk_mux("usdhc3_sel", base + 0x1c, 18, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels));
+               clk[IMX6QDL_CLK_USDHC4_SEL]       = imx_clk_mux("usdhc4_sel", base + 0x1c, 19, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels));
+               clk[IMX6QDL_CLK_ENFC_SEL]         = imx_clk_mux("enfc_sel",         base + 0x2c, 15, 3, enfc_sels_2,         ARRAY_SIZE(enfc_sels_2));
+               clk[IMX6QDL_CLK_EIM_SEL]          = imx_clk_mux("eim_sel",      base + 0x1c, 27, 2, eim_sels,        ARRAY_SIZE(eim_sels));
+               clk[IMX6QDL_CLK_EIM_SLOW_SEL]     = imx_clk_mux("eim_slow_sel", base + 0x1c, 29, 2, eim_slow_sels,   ARRAY_SIZE(eim_slow_sels));
+               clk[IMX6QDL_CLK_PRE_AXI]          = imx_clk_mux("pre_axi",      base + 0x18, 1,  1, pre_axi_sels,    ARRAY_SIZE(pre_axi_sels));
+       } else {
+               clk[IMX6QDL_CLK_IPU1_DI0_SEL]     = imx_clk_mux_flags("ipu1_di0_sel",     base + 0x34, 0,  3, ipu1_di0_sels,     ARRAY_SIZE(ipu1_di0_sels), CLK_SET_RATE_PARENT);
+               clk[IMX6QDL_CLK_IPU1_DI1_SEL]     = imx_clk_mux_flags("ipu1_di1_sel",     base + 0x34, 9,  3, ipu1_di1_sels,     ARRAY_SIZE(ipu1_di1_sels), CLK_SET_RATE_PARENT);
+               clk[IMX6QDL_CLK_IPU2_DI0_SEL]     = imx_clk_mux_flags("ipu2_di0_sel",     base + 0x38, 0,  3, ipu2_di0_sels,     ARRAY_SIZE(ipu2_di0_sels), CLK_SET_RATE_PARENT);
+               clk[IMX6QDL_CLK_IPU2_DI1_SEL]     = imx_clk_mux_flags("ipu2_di1_sel",     base + 0x38, 9,  3, ipu2_di1_sels,     ARRAY_SIZE(ipu2_di1_sels), CLK_SET_RATE_PARENT);
+               clk[IMX6QDL_CLK_SSI1_SEL]         = imx_clk_fixup_mux("ssi1_sel",   base + 0x1c, 10, 2, ssi_sels,          ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
+               clk[IMX6QDL_CLK_SSI2_SEL]         = imx_clk_fixup_mux("ssi2_sel",   base + 0x1c, 12, 2, ssi_sels,          ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
+               clk[IMX6QDL_CLK_SSI3_SEL]         = imx_clk_fixup_mux("ssi3_sel",   base + 0x1c, 14, 2, ssi_sels,          ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
+               clk[IMX6QDL_CLK_USDHC1_SEL]       = imx_clk_fixup_mux("usdhc1_sel", base + 0x1c, 16, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
+               clk[IMX6QDL_CLK_USDHC2_SEL]       = imx_clk_fixup_mux("usdhc2_sel", base + 0x1c, 17, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
+               clk[IMX6QDL_CLK_USDHC3_SEL]       = imx_clk_fixup_mux("usdhc3_sel", base + 0x1c, 18, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
+               clk[IMX6QDL_CLK_USDHC4_SEL]       = imx_clk_fixup_mux("usdhc4_sel", base + 0x1c, 19, 1, usdhc_sels,        ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
+               clk[IMX6QDL_CLK_ENFC_SEL]         = imx_clk_mux("enfc_sel",         base + 0x2c, 16, 2, enfc_sels,         ARRAY_SIZE(enfc_sels));
+               clk[IMX6QDL_CLK_EIM_SEL]          = imx_clk_fixup_mux("eim_sel",      base + 0x1c, 27, 2, eim_sels,        ARRAY_SIZE(eim_sels), imx_cscmr1_fixup);
+               clk[IMX6QDL_CLK_EIM_SLOW_SEL]     = imx_clk_fixup_mux("eim_slow_sel", base + 0x1c, 29, 2, eim_slow_sels,   ARRAY_SIZE(eim_slow_sels), imx_cscmr1_fixup);
+       }
        clk[IMX6QDL_CLK_VDO_AXI_SEL]      = imx_clk_mux("vdo_axi_sel",      base + 0x18, 11, 1, vdo_axi_sels,      ARRAY_SIZE(vdo_axi_sels));
        clk[IMX6QDL_CLK_VPU_AXI_SEL]      = imx_clk_mux("vpu_axi_sel",      base + 0x18, 14, 2, vpu_axi_sels,      ARRAY_SIZE(vpu_axi_sels));
        clk[IMX6QDL_CLK_CKO1_SEL]         = imx_clk_mux("cko1_sel",         base + 0x60, 0,  4, cko1_sels,         ARRAY_SIZE(cko1_sels));
@@ -334,23 +378,33 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
        clk[IMX6QDL_CLK_PERIPH_CLK2]      = imx_clk_divider("periph_clk2",      "periph_clk2_sel",   base + 0x14, 27, 3);
        clk[IMX6QDL_CLK_PERIPH2_CLK2]     = imx_clk_divider("periph2_clk2",     "periph2_clk2_sel",  base + 0x14, 0,  3);
        clk[IMX6QDL_CLK_IPG]              = imx_clk_divider("ipg",              "ahb",               base + 0x14, 8,  2);
-       clk[IMX6QDL_CLK_IPG_PER]          = imx_clk_fixup_divider("ipg_per",    "ipg",               base + 0x1c, 0,  6, imx_cscmr1_fixup);
        clk[IMX6QDL_CLK_ESAI_PRED]        = imx_clk_divider("esai_pred",        "esai_sel",          base + 0x28, 9,  3);
        clk[IMX6QDL_CLK_ESAI_PODF]        = imx_clk_divider("esai_podf",        "esai_pred",         base + 0x28, 25, 3);
        clk[IMX6QDL_CLK_ASRC_PRED]        = imx_clk_divider("asrc_pred",        "asrc_sel",          base + 0x30, 12, 3);
        clk[IMX6QDL_CLK_ASRC_PODF]        = imx_clk_divider("asrc_podf",        "asrc_pred",         base + 0x30, 9,  3);
        clk[IMX6QDL_CLK_SPDIF_PRED]       = imx_clk_divider("spdif_pred",       "spdif_sel",         base + 0x30, 25, 3);
        clk[IMX6QDL_CLK_SPDIF_PODF]       = imx_clk_divider("spdif_podf",       "spdif_pred",        base + 0x30, 22, 3);
-       clk[IMX6QDL_CLK_CAN_ROOT]         = imx_clk_divider("can_root",         "pll3_60m",          base + 0x20, 2,  6);
-       clk[IMX6QDL_CLK_ECSPI_ROOT]       = imx_clk_divider("ecspi_root",       "pll3_60m",          base + 0x38, 19, 6);
+       if (clk_on_imx6qp()) {
+               clk[IMX6QDL_CLK_IPG_PER] = imx_clk_divider("ipg_per", "ipg_per_sel", base + 0x1c, 0, 6);
+               clk[IMX6QDL_CLK_ECSPI_ROOT] = imx_clk_divider("ecspi_root", "ecspi_sel", base + 0x38, 19, 6);
+               clk[IMX6QDL_CLK_CAN_ROOT] = imx_clk_divider("can_root", "can_sel", base + 0x20, 2, 6);
+               clk[IMX6QDL_CLK_UART_SERIAL_PODF] = imx_clk_divider("uart_serial_podf", "uart_sel", base + 0x24, 0, 6);
+               clk[IMX6QDL_CLK_LDB_DI0_DIV_3_5] = imx_clk_fixed_factor("ldb_di0_div_3_5", "ldb_di0", 2, 7);
+               clk[IMX6QDL_CLK_LDB_DI1_DIV_3_5] = imx_clk_fixed_factor("ldb_di1_div_3_5", "ldb_di1", 2, 7);
+       } else {
+               clk[IMX6QDL_CLK_ECSPI_ROOT] = imx_clk_divider("ecspi_root", "pll3_60m", base + 0x38, 19, 6);
+               clk[IMX6QDL_CLK_CAN_ROOT] = imx_clk_divider("can_root", "pll3_60m", base + 0x20, 2, 6);
+               clk[IMX6QDL_CLK_IPG_PER] = imx_clk_fixup_divider("ipg_per", "ipg", base + 0x1c, 0, 6, imx_cscmr1_fixup);
+               clk[IMX6QDL_CLK_UART_SERIAL_PODF] = imx_clk_divider("uart_serial_podf", "pll3_80m",          base + 0x24, 0,  6);
+               clk[IMX6QDL_CLK_LDB_DI0_DIV_3_5] = imx_clk_fixed_factor("ldb_di0_div_3_5", "ldb_di0_sel", 2, 7);
+               clk[IMX6QDL_CLK_LDB_DI1_DIV_3_5] = imx_clk_fixed_factor("ldb_di1_div_3_5", "ldb_di1_sel", 2, 7);
+       }
        clk[IMX6QDL_CLK_GPU2D_CORE_PODF]  = imx_clk_divider("gpu2d_core_podf",  "gpu2d_core_sel",    base + 0x18, 23, 3);
        clk[IMX6QDL_CLK_GPU3D_CORE_PODF]  = imx_clk_divider("gpu3d_core_podf",  "gpu3d_core_sel",    base + 0x18, 26, 3);
        clk[IMX6QDL_CLK_GPU3D_SHADER]     = imx_clk_divider("gpu3d_shader",     "gpu3d_shader_sel",  base + 0x18, 29, 3);
        clk[IMX6QDL_CLK_IPU1_PODF]        = imx_clk_divider("ipu1_podf",        "ipu1_sel",          base + 0x3c, 11, 3);
        clk[IMX6QDL_CLK_IPU2_PODF]        = imx_clk_divider("ipu2_podf",        "ipu2_sel",          base + 0x3c, 16, 3);
-       clk[IMX6QDL_CLK_LDB_DI0_DIV_3_5]  = imx_clk_fixed_factor("ldb_di0_div_3_5", "ldb_di0_sel", 2, 7);
        clk[IMX6QDL_CLK_LDB_DI0_PODF]     = imx_clk_divider_flags("ldb_di0_podf", "ldb_di0_div_3_5", base + 0x20, 10, 1, 0);
-       clk[IMX6QDL_CLK_LDB_DI1_DIV_3_5]  = imx_clk_fixed_factor("ldb_di1_div_3_5", "ldb_di1_sel", 2, 7);
        clk[IMX6QDL_CLK_LDB_DI1_PODF]     = imx_clk_divider_flags("ldb_di1_podf", "ldb_di1_div_3_5", base + 0x20, 11, 1, 0);
        clk[IMX6QDL_CLK_IPU1_DI0_PRE]     = imx_clk_divider("ipu1_di0_pre",     "ipu1_di0_pre_sel",  base + 0x34, 3,  3);
        clk[IMX6QDL_CLK_IPU1_DI1_PRE]     = imx_clk_divider("ipu1_di1_pre",     "ipu1_di1_pre_sel",  base + 0x34, 12, 3);
@@ -363,15 +417,19 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
        clk[IMX6QDL_CLK_SSI2_PODF]        = imx_clk_divider("ssi2_podf",        "ssi2_pred",         base + 0x2c, 0,  6);
        clk[IMX6QDL_CLK_SSI3_PRED]        = imx_clk_divider("ssi3_pred",        "ssi3_sel",          base + 0x28, 22, 3);
        clk[IMX6QDL_CLK_SSI3_PODF]        = imx_clk_divider("ssi3_podf",        "ssi3_pred",         base + 0x28, 16, 6);
-       clk[IMX6QDL_CLK_UART_SERIAL_PODF] = imx_clk_divider("uart_serial_podf", "pll3_80m",          base + 0x24, 0,  6);
        clk[IMX6QDL_CLK_USDHC1_PODF]      = imx_clk_divider("usdhc1_podf",      "usdhc1_sel",        base + 0x24, 11, 3);
        clk[IMX6QDL_CLK_USDHC2_PODF]      = imx_clk_divider("usdhc2_podf",      "usdhc2_sel",        base + 0x24, 16, 3);
        clk[IMX6QDL_CLK_USDHC3_PODF]      = imx_clk_divider("usdhc3_podf",      "usdhc3_sel",        base + 0x24, 19, 3);
        clk[IMX6QDL_CLK_USDHC4_PODF]      = imx_clk_divider("usdhc4_podf",      "usdhc4_sel",        base + 0x24, 22, 3);
        clk[IMX6QDL_CLK_ENFC_PRED]        = imx_clk_divider("enfc_pred",        "enfc_sel",          base + 0x2c, 18, 3);
        clk[IMX6QDL_CLK_ENFC_PODF]        = imx_clk_divider("enfc_podf",        "enfc_pred",         base + 0x2c, 21, 6);
-       clk[IMX6QDL_CLK_EIM_PODF]         = imx_clk_fixup_divider("eim_podf",   "eim_sel",           base + 0x1c, 20, 3, imx_cscmr1_fixup);
-       clk[IMX6QDL_CLK_EIM_SLOW_PODF]    = imx_clk_fixup_divider("eim_slow_podf", "eim_slow_sel",   base + 0x1c, 23, 3, imx_cscmr1_fixup);
+       if (clk_on_imx6qp()) {
+               clk[IMX6QDL_CLK_EIM_PODF]         = imx_clk_divider("eim_podf",   "eim_sel",           base + 0x1c, 20, 3);
+               clk[IMX6QDL_CLK_EIM_SLOW_PODF]    = imx_clk_divider("eim_slow_podf", "eim_slow_sel",   base + 0x1c, 23, 3);
+       } else {
+               clk[IMX6QDL_CLK_EIM_PODF]         = imx_clk_fixup_divider("eim_podf",   "eim_sel",           base + 0x1c, 20, 3, imx_cscmr1_fixup);
+               clk[IMX6QDL_CLK_EIM_SLOW_PODF]    = imx_clk_fixup_divider("eim_slow_podf", "eim_slow_sel",   base + 0x1c, 23, 3, imx_cscmr1_fixup);
+       }
        clk[IMX6QDL_CLK_VPU_AXI_PODF]     = imx_clk_divider("vpu_axi_podf",     "vpu_axi_sel",       base + 0x24, 25, 3);
        clk[IMX6QDL_CLK_CKO1_PODF]        = imx_clk_divider("cko1_podf",        "cko1_sel",          base + 0x60, 4,  3);
        clk[IMX6QDL_CLK_CKO2_PODF]        = imx_clk_divider("cko2_podf",        "cko2_sel",          base + 0x60, 21, 3);
@@ -379,7 +437,12 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
        /*                                                        name                 parent_name    reg        shift width busy: reg, shift */
        clk[IMX6QDL_CLK_AXI]               = imx_clk_busy_divider("axi",               "axi_sel",     base + 0x14, 16,  3,   base + 0x48, 0);
        clk[IMX6QDL_CLK_MMDC_CH0_AXI_PODF] = imx_clk_busy_divider("mmdc_ch0_axi_podf", "periph",      base + 0x14, 19,  3,   base + 0x48, 4);
-       clk[IMX6QDL_CLK_MMDC_CH1_AXI_PODF] = imx_clk_busy_divider("mmdc_ch1_axi_podf", "periph2",     base + 0x14, 3,   3,   base + 0x48, 2);
+       if (clk_on_imx6qp()) {
+               clk[IMX6QDL_CLK_MMDC_CH1_AXI_CG] = imx_clk_gate("mmdc_ch1_axi_cg", "periph2", base + 0x4, 18);
+               clk[IMX6QDL_CLK_MMDC_CH1_AXI_PODF] = imx_clk_busy_divider("mmdc_ch1_axi_podf", "mmdc_ch1_axi_cg", base + 0x14, 3, 3, base + 0x48, 2);
+       } else {
+               clk[IMX6QDL_CLK_MMDC_CH1_AXI_PODF] = imx_clk_busy_divider("mmdc_ch1_axi_podf", "periph2",     base + 0x14, 3,   3,   base + 0x48, 2);
+       }
        clk[IMX6QDL_CLK_ARM]               = imx_clk_busy_divider("arm",               "pll1_sw",     base + 0x10, 0,   3,   base + 0x48, 16);
        clk[IMX6QDL_CLK_AHB]               = imx_clk_busy_divider("ahb",               "periph",      base + 0x14, 10,  3,   base + 0x48, 1);
 
@@ -431,8 +494,13 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
        clk[IMX6QDL_CLK_IPU1_DI1]     = imx_clk_gate2("ipu1_di1",      "ipu1_di1_sel",      base + 0x74, 4);
        clk[IMX6QDL_CLK_IPU2]         = imx_clk_gate2("ipu2",          "ipu2_podf",         base + 0x74, 6);
        clk[IMX6QDL_CLK_IPU2_DI0]     = imx_clk_gate2("ipu2_di0",      "ipu2_di0_sel",      base + 0x74, 8);
-       clk[IMX6QDL_CLK_LDB_DI0]      = imx_clk_gate2("ldb_di0",       "ldb_di0_podf",      base + 0x74, 12);
-       clk[IMX6QDL_CLK_LDB_DI1]      = imx_clk_gate2("ldb_di1",       "ldb_di1_podf",      base + 0x74, 14);
+       if (clk_on_imx6qp()) {
+               clk[IMX6QDL_CLK_LDB_DI0]      = imx_clk_gate2("ldb_di0",       "ldb_di0_sel",      base + 0x74, 12);
+               clk[IMX6QDL_CLK_LDB_DI1]      = imx_clk_gate2("ldb_di1",       "ldb_di1_sel",      base + 0x74, 14);
+       } else {
+               clk[IMX6QDL_CLK_LDB_DI0]      = imx_clk_gate2("ldb_di0",       "ldb_di0_podf",      base + 0x74, 12);
+               clk[IMX6QDL_CLK_LDB_DI1]      = imx_clk_gate2("ldb_di1",       "ldb_di1_podf",      base + 0x74, 14);
+       }
        clk[IMX6QDL_CLK_IPU2_DI1]     = imx_clk_gate2("ipu2_di1",      "ipu2_di1_sel",      base + 0x74, 10);
        clk[IMX6QDL_CLK_HSI_TX]       = imx_clk_gate2_shared("hsi_tx", "hsi_tx_podf",       base + 0x74, 16, &share_count_mipi_core_cfg);
        clk[IMX6QDL_CLK_MIPI_CORE_CFG] = imx_clk_gate2_shared("mipi_core_cfg", "video_27m", base + 0x74, 16, &share_count_mipi_core_cfg);
@@ -481,6 +549,16 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
        clk[IMX6QDL_CLK_EIM_SLOW]     = imx_clk_gate2("eim_slow",      "eim_slow_podf",     base + 0x80, 10);
        clk[IMX6QDL_CLK_VDO_AXI]      = imx_clk_gate2("vdo_axi",       "vdo_axi_sel",       base + 0x80, 12);
        clk[IMX6QDL_CLK_VPU_AXI]      = imx_clk_gate2("vpu_axi",       "vpu_axi_podf",      base + 0x80, 14);
+       if (clk_on_imx6qp()) {
+               clk[IMX6QDL_CLK_PRE0] = imx_clk_gate2("pre0",          "pre_axi",           base + 0x80, 16);
+               clk[IMX6QDL_CLK_PRE1] = imx_clk_gate2("pre1",          "pre_axi",           base + 0x80, 18);
+               clk[IMX6QDL_CLK_PRE2] = imx_clk_gate2("pre2",          "pre_axi",         base + 0x80, 20);
+               clk[IMX6QDL_CLK_PRE3] = imx_clk_gate2("pre3",          "pre_axi",           base + 0x80, 22);
+               clk[IMX6QDL_CLK_PRG0_AXI] = imx_clk_gate2_shared("prg0_axi",  "ipu1_podf",  base + 0x80, 24, &share_count_prg0);
+               clk[IMX6QDL_CLK_PRG1_AXI] = imx_clk_gate2_shared("prg1_axi",  "ipu2_podf",  base + 0x80, 26, &share_count_prg1);
+               clk[IMX6QDL_CLK_PRG0_APB] = imx_clk_gate2_shared("prg0_apb",  "ipg",        base + 0x80, 24, &share_count_prg0);
+               clk[IMX6QDL_CLK_PRG1_APB] = imx_clk_gate2_shared("prg1_apb",  "ipg",        base + 0x80, 26, &share_count_prg1);
+       }
        clk[IMX6QDL_CLK_CKO1]         = imx_clk_gate("cko1",           "cko1_podf",         base + 0x60, 7);
        clk[IMX6QDL_CLK_CKO2]         = imx_clk_gate("cko2",           "cko2_podf",         base + 0x60, 24);
 
index 01718d05e95221eaf8a96e4b69bb994275ad82da..1a33a88f68de2a29cd530639fd05bcb8d5b5dedb 100644 (file)
@@ -157,9 +157,9 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
        clk_set_parent(clks[IMX6UL_PLL7_BYPASS], clks[IMX6UL_CLK_PLL7]);
 
        clks[IMX6UL_CLK_PLL1_SYS]       = imx_clk_fixed_factor("pll1_sys",      "pll1_bypass", 1, 1);
-       clks[IMX6UL_CLK_PLL2_BUS]       = imx_clk_gate("pll2_bus",      "pll2_bypass", base + 0x30, 13);
-       clks[IMX6UL_CLK_PLL3_USB_OTG]   = imx_clk_gate("pll3_usb_otg",  "pll3_bypass", base + 0x10, 13);
-       clks[IMX6UL_CLK_PLL4_AUDIO]     = imx_clk_gate("pll4_audio",    "pll4_bypass", base + 0x70, 13);
+       clks[IMX6UL_CLK_PLL2_BUS]       = imx_clk_gate("pll2_bus",      "pll2_bypass", base + 0x30, 13);
+       clks[IMX6UL_CLK_PLL3_USB_OTG]   = imx_clk_gate("pll3_usb_otg",  "pll3_bypass", base + 0x10, 13);
+       clks[IMX6UL_CLK_PLL4_AUDIO]     = imx_clk_gate("pll4_audio",    "pll4_bypass", base + 0x70, 13);
        clks[IMX6UL_CLK_PLL5_VIDEO]     = imx_clk_gate("pll5_video",    "pll5_bypass", base + 0xa0, 13);
        clks[IMX6UL_CLK_PLL6_ENET]      = imx_clk_gate("pll6_enet",     "pll6_bypass", base + 0xe0, 13);
        clks[IMX6UL_CLK_PLL7_USB_HOST]  = imx_clk_gate("pll7_usb_host", "pll7_bypass", base + 0x20, 13);
@@ -196,8 +196,8 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
                        base + 0xe0, 2, 2, 0, clk_enet_ref_table, &imx_ccm_lock);
 
        clks[IMX6UL_CLK_ENET2_REF_125M] = imx_clk_gate("enet_ref_125m", "enet2_ref", base + 0xe0, 20);
-       clks[IMX6UL_CLK_ENET_PTP_REF]   = imx_clk_fixed_factor("enet_ptp_ref", "pll6_enet", 1, 20);
-       clks[IMX6UL_CLK_ENET_PTP]       = imx_clk_gate("enet_ptp", "enet_ptp_ref", base + 0xe0, 21);
+       clks[IMX6UL_CLK_ENET_PTP_REF]   = imx_clk_fixed_factor("enet_ptp_ref", "pll6_enet", 1, 20);
+       clks[IMX6UL_CLK_ENET_PTP]       = imx_clk_gate("enet_ptp", "enet_ptp_ref", base + 0xe0, 21);
 
        clks[IMX6UL_CLK_PLL4_POST_DIV]  = clk_register_divider_table(NULL, "pll4_post_div", "pll4_audio",
                 CLK_SET_RATE_PARENT | CLK_SET_RATE_GATE, base + 0x70, 19, 2, 0, post_div_table, &imx_ccm_lock);
@@ -210,8 +210,8 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
 
        /*                                                 name         parent_name      mult  div */
        clks[IMX6UL_CLK_PLL2_198M] = imx_clk_fixed_factor("pll2_198m", "pll2_pfd2_396m", 1,     2);
-       clks[IMX6UL_CLK_PLL3_80M]  = imx_clk_fixed_factor("pll3_80m",  "pll3_usb_otg",   1,     6);
-       clks[IMX6UL_CLK_PLL3_60M]  = imx_clk_fixed_factor("pll3_60m",  "pll3_usb_otg",   1,     8);
+       clks[IMX6UL_CLK_PLL3_80M]  = imx_clk_fixed_factor("pll3_80m",  "pll3_usb_otg",   1,     6);
+       clks[IMX6UL_CLK_PLL3_60M]  = imx_clk_fixed_factor("pll3_60m",  "pll3_usb_otg",   1,     8);
        clks[IMX6UL_CLK_GPT_3M]    = imx_clk_fixed_factor("gpt_3m",     "osc",           1,     8);
 
        np = ccm_node;
@@ -219,34 +219,34 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
        WARN_ON(!base);
 
        clks[IMX6UL_CA7_SECONDARY_SEL]    = imx_clk_mux("ca7_secondary_sel", base + 0xc, 3, 1, ca7_secondary_sels, ARRAY_SIZE(ca7_secondary_sels));
-       clks[IMX6UL_CLK_STEP]             = imx_clk_mux("step", base + 0x0c, 8, 1, step_sels, ARRAY_SIZE(step_sels));
-       clks[IMX6UL_CLK_PLL1_SW]          = imx_clk_mux_flags("pll1_sw",   base + 0x0c, 2,  1, pll1_sw_sels, ARRAY_SIZE(pll1_sw_sels), 0);
+       clks[IMX6UL_CLK_STEP]             = imx_clk_mux("step", base + 0x0c, 8, 1, step_sels, ARRAY_SIZE(step_sels));
+       clks[IMX6UL_CLK_PLL1_SW]          = imx_clk_mux_flags("pll1_sw",   base + 0x0c, 2,  1, pll1_sw_sels, ARRAY_SIZE(pll1_sw_sels), 0);
        clks[IMX6UL_CLK_AXI_ALT_SEL]      = imx_clk_mux("axi_alt_sel",          base + 0x14, 7,  1, axi_alt_sels, ARRAY_SIZE(axi_alt_sels));
-       clks[IMX6UL_CLK_AXI_SEL]          = imx_clk_mux_flags("axi_sel",        base + 0x14, 6,  1, axi_sels, ARRAY_SIZE(axi_sels), 0);
-       clks[IMX6UL_CLK_PERIPH_PRE]       = imx_clk_mux("periph_pre",       base + 0x18, 18, 2, periph_pre_sels, ARRAY_SIZE(periph_pre_sels));
-       clks[IMX6UL_CLK_PERIPH2_PRE]      = imx_clk_mux("periph2_pre",      base + 0x18, 21, 2, periph2_pre_sels, ARRAY_SIZE(periph2_pre_sels));
+       clks[IMX6UL_CLK_AXI_SEL]          = imx_clk_mux_flags("axi_sel",        base + 0x14, 6,  1, axi_sels, ARRAY_SIZE(axi_sels), 0);
+       clks[IMX6UL_CLK_PERIPH_PRE]       = imx_clk_mux("periph_pre",       base + 0x18, 18, 2, periph_pre_sels, ARRAY_SIZE(periph_pre_sels));
+       clks[IMX6UL_CLK_PERIPH2_PRE]      = imx_clk_mux("periph2_pre",      base + 0x18, 21, 2, periph2_pre_sels, ARRAY_SIZE(periph2_pre_sels));
        clks[IMX6UL_CLK_PERIPH_CLK2_SEL]  = imx_clk_mux("periph_clk2_sel",  base + 0x18, 12, 2, periph_clk2_sels, ARRAY_SIZE(periph_clk2_sels));
        clks[IMX6UL_CLK_PERIPH2_CLK2_SEL] = imx_clk_mux("periph2_clk2_sel", base + 0x18, 20, 1, periph2_clk2_sels, ARRAY_SIZE(periph2_clk2_sels));
-       clks[IMX6UL_CLK_EIM_SLOW_SEL]     = imx_clk_mux("eim_slow_sel", base + 0x1c, 29, 2, eim_slow_sels, ARRAY_SIZE(eim_slow_sels));
+       clks[IMX6UL_CLK_EIM_SLOW_SEL]     = imx_clk_mux("eim_slow_sel", base + 0x1c, 29, 2, eim_slow_sels, ARRAY_SIZE(eim_slow_sels));
        clks[IMX6UL_CLK_GPMI_SEL]         = imx_clk_mux("gpmi_sel",     base + 0x1c, 19, 1, gpmi_sels, ARRAY_SIZE(gpmi_sels));
-       clks[IMX6UL_CLK_BCH_SEL]          = imx_clk_mux("bch_sel",      base + 0x1c, 18, 1, bch_sels, ARRAY_SIZE(bch_sels));
+       clks[IMX6UL_CLK_BCH_SEL]          = imx_clk_mux("bch_sel",      base + 0x1c, 18, 1, bch_sels, ARRAY_SIZE(bch_sels));
        clks[IMX6UL_CLK_USDHC2_SEL]       = imx_clk_mux("usdhc2_sel",   base + 0x1c, 17, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels));
        clks[IMX6UL_CLK_USDHC1_SEL]       = imx_clk_mux("usdhc1_sel",   base + 0x1c, 16, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels));
-       clks[IMX6UL_CLK_SAI3_SEL]         = imx_clk_mux("sai3_sel",     base + 0x1c, 14, 2, sai_sels, ARRAY_SIZE(sai_sels));
+       clks[IMX6UL_CLK_SAI3_SEL]         = imx_clk_mux("sai3_sel",     base + 0x1c, 14, 2, sai_sels, ARRAY_SIZE(sai_sels));
        clks[IMX6UL_CLK_SAI2_SEL]         = imx_clk_mux("sai2_sel",     base + 0x1c, 12, 2, sai_sels, ARRAY_SIZE(sai_sels));
-       clks[IMX6UL_CLK_SAI1_SEL]         = imx_clk_mux("sai1_sel",     base + 0x1c, 10, 2, sai_sels, ARRAY_SIZE(sai_sels));
-       clks[IMX6UL_CLK_QSPI1_SEL]        = imx_clk_mux("qspi1_sel",    base + 0x1c, 7,  3, qspi1_sels, ARRAY_SIZE(qspi1_sels));
-       clks[IMX6UL_CLK_PERCLK_SEL]       = imx_clk_mux("perclk_sel",   base + 0x1c, 6,  1, perclk_sels, ARRAY_SIZE(perclk_sels));
-       clks[IMX6UL_CLK_CAN_SEL]          = imx_clk_mux("can_sel",      base + 0x20, 8,  2, can_sels, ARRAY_SIZE(can_sels));
+       clks[IMX6UL_CLK_SAI1_SEL]         = imx_clk_mux("sai1_sel",     base + 0x1c, 10, 2, sai_sels, ARRAY_SIZE(sai_sels));
+       clks[IMX6UL_CLK_QSPI1_SEL]        = imx_clk_mux("qspi1_sel",    base + 0x1c, 7,  3, qspi1_sels, ARRAY_SIZE(qspi1_sels));
+       clks[IMX6UL_CLK_PERCLK_SEL]       = imx_clk_mux("perclk_sel",   base + 0x1c, 6,  1, perclk_sels, ARRAY_SIZE(perclk_sels));
+       clks[IMX6UL_CLK_CAN_SEL]          = imx_clk_mux("can_sel",      base + 0x20, 8,  2, can_sels, ARRAY_SIZE(can_sels));
        clks[IMX6UL_CLK_UART_SEL]         = imx_clk_mux("uart_sel",     base + 0x24, 6,  1, uart_sels, ARRAY_SIZE(uart_sels));
        clks[IMX6UL_CLK_ENFC_SEL]         = imx_clk_mux("enfc_sel",     base + 0x2c, 15, 3, enfc_sels, ARRAY_SIZE(enfc_sels));
        clks[IMX6UL_CLK_LDB_DI0_SEL]      = imx_clk_mux("ldb_di0_sel",  base + 0x2c, 9,  3, ldb_di0_sels, ARRAY_SIZE(ldb_di0_sels));
        clks[IMX6UL_CLK_SPDIF_SEL]        = imx_clk_mux("spdif_sel",    base + 0x30, 20, 2, spdif_sels, ARRAY_SIZE(spdif_sels));
-       clks[IMX6UL_CLK_SIM_PRE_SEL]      = imx_clk_mux("sim_pre_sel",  base + 0x34, 15, 3, sim_pre_sels, ARRAY_SIZE(sim_pre_sels));
-       clks[IMX6UL_CLK_SIM_SEL]          = imx_clk_mux("sim_sel",      base + 0x34, 9, 3, sim_sels, ARRAY_SIZE(sim_sels));
+       clks[IMX6UL_CLK_SIM_PRE_SEL]      = imx_clk_mux("sim_pre_sel",  base + 0x34, 15, 3, sim_pre_sels, ARRAY_SIZE(sim_pre_sels));
+       clks[IMX6UL_CLK_SIM_SEL]          = imx_clk_mux("sim_sel",      base + 0x34, 9, 3, sim_sels, ARRAY_SIZE(sim_sels));
        clks[IMX6UL_CLK_ECSPI_SEL]        = imx_clk_mux("ecspi_sel",    base + 0x38, 18, 1, ecspi_sels, ARRAY_SIZE(ecspi_sels));
        clks[IMX6UL_CLK_LCDIF_PRE_SEL]    = imx_clk_mux("lcdif_pre_sel", base + 0x38, 15, 3, lcdif_pre_sels, ARRAY_SIZE(lcdif_pre_sels));
-       clks[IMX6UL_CLK_LCDIF_SEL]        = imx_clk_mux("lcdif_sel",    base + 0x38, 9, 3, lcdif_sels, ARRAY_SIZE(lcdif_sels));
+       clks[IMX6UL_CLK_LCDIF_SEL]        = imx_clk_mux("lcdif_sel",    base + 0x38, 9, 3, lcdif_sels, ARRAY_SIZE(lcdif_sels));
 
        clks[IMX6UL_CLK_LDB_DI0_DIV_SEL]  = imx_clk_mux("ldb_di0", base + 0x20, 10, 1, ldb_di0_div_sels, ARRAY_SIZE(ldb_di0_div_sels));
        clks[IMX6UL_CLK_LDB_DI1_DIV_SEL]  = imx_clk_mux("ldb_di1", base + 0x20, 11, 1, ldb_di1_div_sels, ARRAY_SIZE(ldb_di1_div_sels));
@@ -259,11 +259,11 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
        clks[IMX6UL_CLK_PERIPH]  = imx_clk_busy_mux("periph",  base + 0x14, 25, 1, base + 0x48, 5, periph_sels, ARRAY_SIZE(periph_sels));
        clks[IMX6UL_CLK_PERIPH2] = imx_clk_busy_mux("periph2", base + 0x14, 26, 1, base + 0x48, 3, periph2_sels, ARRAY_SIZE(periph2_sels));
 
-       clks[IMX6UL_CLK_PERIPH_CLK2]    = imx_clk_divider("periph_clk2",   "periph_clk2_sel",   base + 0x14, 27, 3);
-       clks[IMX6UL_CLK_PERIPH2_CLK2]   = imx_clk_divider("periph2_clk2",  "periph2_clk2_sel",  base + 0x14, 0,  3);
+       clks[IMX6UL_CLK_PERIPH_CLK2]    = imx_clk_divider("periph_clk2",   "periph_clk2_sel",   base + 0x14, 27, 3);
+       clks[IMX6UL_CLK_PERIPH2_CLK2]   = imx_clk_divider("periph2_clk2",  "periph2_clk2_sel",  base + 0x14, 0,  3);
        clks[IMX6UL_CLK_IPG]            = imx_clk_divider("ipg",           "ahb",               base + 0x14, 8,  2);
        clks[IMX6UL_CLK_LCDIF_PODF]     = imx_clk_divider("lcdif_podf",    "lcdif_pred",        base + 0x18, 23, 3);
-       clks[IMX6UL_CLK_QSPI1_PDOF]     = imx_clk_divider("qspi1_podf",    "qspi1_sel",         base + 0x1c, 26, 3);
+       clks[IMX6UL_CLK_QSPI1_PDOF]     = imx_clk_divider("qspi1_podf",    "qspi1_sel",         base + 0x1c, 26, 3);
        clks[IMX6UL_CLK_EIM_SLOW_PODF]  = imx_clk_divider("eim_slow_podf", "eim_slow_sel",      base + 0x1c, 23, 3);
        clks[IMX6UL_CLK_PERCLK]         = imx_clk_divider("perclk",        "perclk_sel",        base + 0x1c, 0,  6);
        clks[IMX6UL_CLK_CAN_PODF]       = imx_clk_divider("can_podf",      "can_sel",           base + 0x20, 2,  6);
@@ -287,14 +287,14 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
        clks[IMX6UL_CLK_LCDIF_PRED]     = imx_clk_divider("lcdif_pred",    "lcdif_pre_sel",     base + 0x38, 12, 3);
        clks[IMX6UL_CLK_CSI_PODF]       = imx_clk_divider("csi_podf",      "csi_sel",           base + 0x3c, 11, 3);
 
-       clks[IMX6UL_CLK_ARM]            = imx_clk_busy_divider("arm",       "pll1_sw",  base +  0x10, 0,  3,  base + 0x48, 16);
+       clks[IMX6UL_CLK_ARM]            = imx_clk_busy_divider("arm",       "pll1_sw",  base +  0x10, 0,  3,  base + 0x48, 16);
        clks[IMX6UL_CLK_MMDC_PODF]      = imx_clk_busy_divider("mmdc_podf", "periph2",  base +  0x14, 3,  3,  base + 0x48, 2);
        clks[IMX6UL_CLK_AXI_PODF]       = imx_clk_busy_divider("axi_podf",  "axi_sel",  base +  0x14, 16, 3,  base + 0x48, 0);
        clks[IMX6UL_CLK_AHB]            = imx_clk_busy_divider("ahb",       "periph",   base +  0x14, 10, 3,  base + 0x48, 1);
 
        /* CCGR0 */
-       clks[IMX6UL_CLK_AIPSTZ1]        = imx_clk_gate2("aips_tz1",     "ahb",          base + 0x68,    0);
-       clks[IMX6UL_CLK_AIPSTZ2]        = imx_clk_gate2("aips_tz2",     "ahb",          base + 0x68,    2);
+       clks[IMX6UL_CLK_AIPSTZ1]        = imx_clk_gate2("aips_tz1",     "ahb",          base + 0x68,    0);
+       clks[IMX6UL_CLK_AIPSTZ2]        = imx_clk_gate2("aips_tz2",     "ahb",          base + 0x68,    2);
        clks[IMX6UL_CLK_APBHDMA]        = imx_clk_gate2("apbh_dma",     "bch_podf",     base + 0x68,    4);
        clks[IMX6UL_CLK_ASRC_IPG]       = imx_clk_gate2_shared("asrc_ipg",      "ahb",  base + 0x68,    6, &share_count_asrc);
        clks[IMX6UL_CLK_ASRC_MEM]       = imx_clk_gate2_shared("asrc_mem",      "ahb",  base + 0x68,    6, &share_count_asrc);
@@ -302,7 +302,7 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
        clks[IMX6UL_CLK_CAAM_ACLK]      = imx_clk_gate2("caam_aclk",    "ahb",          base + 0x68,    10);
        clks[IMX6UL_CLK_CAAM_IPG]       = imx_clk_gate2("caam_ipg",     "ipg",          base + 0x68,    12);
        clks[IMX6UL_CLK_CAN1_IPG]       = imx_clk_gate2("can1_ipg",     "ipg",          base + 0x68,    14);
-       clks[IMX6UL_CLK_CAN1_SERIAL]    = imx_clk_gate2("can1_serial",  "can_podf",     base + 0x68,    16);
+       clks[IMX6UL_CLK_CAN1_SERIAL]    = imx_clk_gate2("can1_serial",  "can_podf",     base + 0x68,    16);
        clks[IMX6UL_CLK_CAN2_IPG]       = imx_clk_gate2("can2_ipg",     "ipg",          base + 0x68,    18);
        clks[IMX6UL_CLK_CAN2_SERIAL]    = imx_clk_gate2("can2_serial",  "can_podf",     base + 0x68,    20);
        clks[IMX6UL_CLK_GPT2_BUS]       = imx_clk_gate2("gpt_bus",      "perclk",       base + 0x68,    24);
@@ -331,7 +331,7 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
        clks[IMX6UL_CLK_CSI]            = imx_clk_gate2("csi",          "csi_podf",             base + 0x70,    2);
        clks[IMX6UL_CLK_I2C1]           = imx_clk_gate2("i2c1",         "perclk",       base + 0x70,    6);
        clks[IMX6UL_CLK_I2C2]           = imx_clk_gate2("i2c2",         "perclk",       base + 0x70,    8);
-       clks[IMX6UL_CLK_I2C3]           = imx_clk_gate2("i2c3",         "perclk",       base + 0x70,    10);
+       clks[IMX6UL_CLK_I2C3]           = imx_clk_gate2("i2c3",         "perclk",       base + 0x70,    10);
        clks[IMX6UL_CLK_OCOTP]          = imx_clk_gate2("ocotp",        "ipg",          base + 0x70,    12);
        clks[IMX6UL_CLK_IOMUXC]         = imx_clk_gate2("iomuxc",       "lcdif_podf",   base + 0x70,    14);
        clks[IMX6UL_CLK_LCDIF_APB]      = imx_clk_gate2("lcdif_apb",    "axi",          base + 0x70,    28);
@@ -365,6 +365,7 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
        /* CCGR5 */
        clks[IMX6UL_CLK_ROM]            = imx_clk_gate2("rom",          "ahb",          base + 0x7c,    0);
        clks[IMX6UL_CLK_SDMA]           = imx_clk_gate2("sdma",         "ahb",          base + 0x7c,    6);
+       clks[IMX6UL_CLK_KPP]            = imx_clk_gate2("kpp",          "ipg",          base + 0x7c,    8);
        clks[IMX6UL_CLK_WDOG2]          = imx_clk_gate2("wdog2",        "ipg",          base + 0x7c,    10);
        clks[IMX6UL_CLK_SPBA]           = imx_clk_gate2("spba",         "ipg",          base + 0x7c,    12);
        clks[IMX6UL_CLK_SPDIF]          = imx_clk_gate2_shared("spdif",         "spdif_podf",   base + 0x7c,    14, &share_count_audio);
@@ -391,10 +392,10 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
        clks[IMX6UL_CLK_UART8_IPG]      = imx_clk_gate2("uart8_ipg",    "ipg",           base + 0x80,   14);
        clks[IMX6UL_CLK_UART8_SERIAL]   = imx_clk_gate2("uart8_serial", "uart_podf",     base + 0x80,   14);
        clks[IMX6UL_CLK_WDOG3]          = imx_clk_gate2("wdog3",        "ipg",           base + 0x80,   20);
-       clks[IMX6UL_CLK_I2C4]           = imx_clk_gate2("i2c4",         "perclk",        base + 0x80,   24);
+       clks[IMX6UL_CLK_I2C4]           = imx_clk_gate2("i2c4",         "perclk",        base + 0x80,   24);
        clks[IMX6UL_CLK_PWM5]           = imx_clk_gate2("pwm5",         "perclk",        base + 0x80,   26);
        clks[IMX6UL_CLK_PWM6]           = imx_clk_gate2("pwm6",         "perclk",        base + 0x80,   28);
-       clks[IMX6UL_CLK_PWM7]           = imx_clk_gate2("Pwm7",         "perclk",        base + 0x80,   30);
+       clks[IMX6UL_CLK_PWM7]           = imx_clk_gate2("pwm7",         "perclk",        base + 0x80,   30);
 
        /* mask handshake of mmdc */
        writel_relaxed(BM_CCM_CCDR_MMDC_CH0_MASK, base + CCDR);
index b5bcd77e8d0f5e31b3887ebdd3a4f441c7909a46..b96e14550b8a13eaab87004cede8ebb5e3649e0e 100644 (file)
@@ -119,6 +119,7 @@ void __init ti_dt_clocks_register(struct ti_dt_clk oclks[])
                                c->node_name);
                }
        }
+       of_clk_init(NULL);
 }
 
 struct clk_init_item {
index e6cd1a32025a916cec7d219d4693c7c71e4c09a9..12b7e0b98029c918586fccda45d8e5c4761ca174 100644 (file)
@@ -341,12 +341,13 @@ config MV_XOR
 
 config MXS_DMA
        bool "MXS DMA support"
-       depends on SOC_IMX23 || SOC_IMX28 || SOC_IMX6Q
+       depends on SOC_IMX23 || SOC_IMX28 || SOC_IMX6Q || SOC_IMX6UL
        select STMP_DEVICE
        select DMA_ENGINE
        help
          Support the MXS DMA engine. This engine including APBH-DMA
-         and APBX-DMA is integrated into Freescale i.MX23/28/MX6Q/MX6DL chips.
+         and APBX-DMA is integrated into Freescale
+         i.MX23/28/MX6Q/MX6DL/MX6UL chips.
 
 config MX3_IPU
        bool "MX3x Image Processing Unit support"
index 4cc7040746c66584e8c0c348aa8f1e33dd882c9e..00b1020efca57fc00b2ab7dbd0b53e9d75d3433b 100644 (file)
@@ -161,10 +161,10 @@ static ssize_t gpio_trig_gpio_store(struct device *dev,
                return n;
        }
 
-       ret = request_irq(gpio_to_irq(gpio), gpio_trig_irq,
+       ret = request_any_context_irq(gpio_to_irq(gpio), gpio_trig_irq,
                        IRQF_SHARED | IRQF_TRIGGER_RISING
                        | IRQF_TRIGGER_FALLING, "ledtrig-gpio", led);
-       if (ret) {
+       if (ret < 0) {
                dev_err(dev, "request_irq failed with error %d\n", ret);
        } else {
                if (gpio_data->gpio != 0)
@@ -172,7 +172,7 @@ static ssize_t gpio_trig_gpio_store(struct device *dev,
                gpio_data->gpio = gpio;
        }
 
-       return ret ? ret : n;
+       return ret < 0 ? ret : n;
 }
 static DEVICE_ATTR(gpio, 0644, gpio_trig_gpio_show, gpio_trig_gpio_store);
 
index e4e4b22eebc91cc33145ad233e46c3afdb4b3345..06e2b6c2c9ca7944950d629e644676e484426ac1 100644 (file)
@@ -140,8 +140,8 @@ static      int ti_tscadc_probe(struct platform_device *pdev)
        struct clk              *clk;
        struct device_node      *node = pdev->dev.of_node;
        struct mfd_cell         *cell;
-       struct property         *prop;
-       const __be32            *cur;
+       struct property         *prop;
+       const __be32            *cur;
        u32                     val;
        int                     err, ctrl;
        int                     clock_rate;
@@ -282,8 +282,11 @@ static     int ti_tscadc_probe(struct platform_device *pdev)
 
        err = mfd_add_devices(&pdev->dev, pdev->id, tscadc->cells,
                        tscadc->used_cells, NULL, 0, NULL);
-       if (err < 0)
+       if (err < 0) {
+               dev_err(&pdev->dev, "Failed to add MFD devices\n");
                goto err_disable_clk;
+       }
+       dev_info(&pdev->dev, "TI Touchscreen/ADC driver initialized\n");
 
        device_init_wakeup(&pdev->dev, true);
        platform_set_drvdata(pdev, tscadc);
index 99d33e2d35e6c2c219fbd06f34546619a01a586d..c952d654e25265a4628a49fddf90e138f0e7200a 100644 (file)
@@ -519,6 +519,8 @@ struct fec_enet_private {
        int     pause_flag;
        int     wol_flag;
        u32     quirks;
+       int     phy_reset_gpio;
+       int     phy_reset_duration;
 
        struct  napi_struct napi;
        int     csum_flags;
index f6147ffc7fbca76f4f6f512caa9e9612a32cf00a..68012c0a311cf972131a35814759e1520ec12d1e 100644 (file)
@@ -66,6 +66,7 @@
 
 static void set_multicast_list(struct net_device *ndev);
 static void fec_enet_itr_coal_init(struct net_device *ndev);
+static void fec_reset_phy(struct platform_device *pdev);
 
 #define DRIVER_NAME    "fec"
 
@@ -1867,6 +1868,8 @@ static int fec_enet_clk_enable(struct net_device *ndev, bool enable)
                        ret = clk_prepare_enable(fep->clk_enet_out);
                        if (ret)
                                goto failed_clk_enet_out;
+
+                       fec_reset_phy(fep->pdev);
                }
                if (fep->clk_ptp) {
                        mutex_lock(&fep->ptp_clk_mutex);
@@ -1879,35 +1882,30 @@ static int fec_enet_clk_enable(struct net_device *ndev, bool enable)
                        }
                        mutex_unlock(&fep->ptp_clk_mutex);
                }
-               if (fep->clk_ref) {
-                       ret = clk_prepare_enable(fep->clk_ref);
-                       if (ret)
-                               goto failed_clk_ref;
-               }
+
+               ret = clk_prepare_enable(fep->clk_ref);
+               if (ret)
+                       goto failed_clk_ref;
        } else {
                clk_disable_unprepare(fep->clk_ahb);
-               if (fep->clk_enet_out)
-                       clk_disable_unprepare(fep->clk_enet_out);
+               clk_disable_unprepare(fep->clk_enet_out);
                if (fep->clk_ptp) {
                        mutex_lock(&fep->ptp_clk_mutex);
                        clk_disable_unprepare(fep->clk_ptp);
                        fep->ptp_clk_on = false;
                        mutex_unlock(&fep->ptp_clk_mutex);
                }
-               if (fep->clk_ref)
-                       clk_disable_unprepare(fep->clk_ref);
+               clk_disable_unprepare(fep->clk_ref);
        }
 
        return 0;
 
 failed_clk_ref:
-       if (fep->clk_ref)
-               clk_disable_unprepare(fep->clk_ref);
+       clk_disable_unprepare(fep->clk_ref);
 failed_clk_ptp:
-       if (fep->clk_enet_out)
-               clk_disable_unprepare(fep->clk_enet_out);
+       clk_disable_unprepare(fep->clk_enet_out);
 failed_clk_enet_out:
-               clk_disable_unprepare(fep->clk_ahb);
+       clk_disable_unprepare(fep->clk_ahb);
 
        return ret;
 }
@@ -3244,30 +3242,43 @@ static int fec_enet_init(struct net_device *ndev)
 #ifdef CONFIG_OF
 static void fec_reset_phy(struct platform_device *pdev)
 {
-       int err, phy_reset;
-       int msec = 1;
-       struct device_node *np = pdev->dev.of_node;
+       struct net_device *ndev = platform_get_drvdata(pdev);
+       struct fec_enet_private *fep = netdev_priv(ndev);
 
-       if (!np)
+       if (!gpio_is_valid(fep->phy_reset_gpio))
                return;
 
-       of_property_read_u32(np, "phy-reset-duration", &msec);
-       /* A sane reset duration should not be longer than 1s */
-       if (msec > 1000)
-               msec = 1;
+       gpio_set_value_cansleep(fep->phy_reset_gpio, 0);
+       msleep(fep->phy_reset_duration);
+       gpio_set_value_cansleep(fep->phy_reset_gpio, 1);
+}
+
+static int fec_get_reset_gpio(struct platform_device *pdev)
+{
+       int err, phy_reset;
+       int msec = 1;
+       struct device_node *np = pdev->dev.of_node;
+       struct net_device *ndev = platform_get_drvdata(pdev);
+       struct fec_enet_private *fep = netdev_priv(ndev);
 
        phy_reset = of_get_named_gpio(np, "phy-reset-gpios", 0);
        if (!gpio_is_valid(phy_reset))
-               return;
+               return phy_reset;
 
        err = devm_gpio_request_one(&pdev->dev, phy_reset,
                                    GPIOF_OUT_INIT_LOW, "phy-reset");
        if (err) {
                dev_err(&pdev->dev, "failed to get phy-reset-gpios: %d\n", err);
-               return;
+               return err;
        }
-       msleep(msec);
-       gpio_set_value_cansleep(phy_reset, 1);
+
+       of_property_read_u32(np, "phy-reset-duration", &msec);
+       /* A sane reset duration should not be longer than 1s */
+       if (msec > 1000)
+               msec = 1;
+       fep->phy_reset_duration = msec;
+
+       return phy_reset;
 }
 #else /* CONFIG_OF */
 static void fec_reset_phy(struct platform_device *pdev)
@@ -3277,6 +3288,11 @@ static void fec_reset_phy(struct platform_device *pdev)
         * by machine code.
         */
 }
+
+static inline int fec_get_reset_gpio(struct platform_device *pdev)
+{
+       return -EINVAL;
+}
 #endif /* CONFIG_OF */
 
 static void
@@ -3372,6 +3388,11 @@ fec_probe(struct platform_device *pdev)
 
        platform_set_drvdata(pdev, ndev);
 
+       ret = fec_get_reset_gpio(pdev);
+       if (ret == -EPROBE_DEFER)
+               goto gpio_defer;
+       fep->phy_reset_gpio = ret;
+
        if (of_get_property(np, "fsl,magic-packet", NULL))
                fep->wol_flag |= FEC_WOL_HAS_MAGIC_PACKET;
 
@@ -3526,6 +3547,7 @@ failed_clk_ipg:
 failed_clk:
 failed_phy:
        of_node_put(phy_node);
+gpio_defer:
 failed_ioremap:
        free_netdev(ndev);
 
index d24ca5f281b4bbd98e5ce86e8f454c270d86fe10..29d7c947db0503c5d7eebe02eb0c124854eca94e 100644 (file)
@@ -136,7 +136,7 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc, const struct of_phandle_args *args)
 {
        struct pwm_device *pwm;
 
-       if (pc->of_pwm_n_cells < 3)
+       if (args->args_count != 3)
                return ERR_PTR(-EINVAL);
 
        if (args->args[0] >= pc->npwm)
@@ -162,12 +162,15 @@ of_pwm_simple_xlate(struct pwm_chip *pc, const struct of_phandle_args *args)
 {
        struct pwm_device *pwm;
 
-       if (pc->of_pwm_n_cells < 2)
+       if (args->args_count < 2)
                return ERR_PTR(-EINVAL);
 
        if (args->args[0] >= pc->npwm)
                return ERR_PTR(-EINVAL);
 
+       if (args->args_count > 2)
+               return of_pwm_xlate_with_flags(pc, args);
+
        pwm = pwm_request_from_chip(pc, args->args[0], NULL);
        if (IS_ERR(pwm))
                return pwm;
@@ -182,10 +185,8 @@ static void of_pwmchip_add(struct pwm_chip *chip)
        if (!chip->dev || !chip->dev->of_node)
                return;
 
-       if (!chip->of_xlate) {
+       if (!chip->of_xlate)
                chip->of_xlate = of_pwm_simple_xlate;
-               chip->of_pwm_n_cells = 2;
-       }
 
        of_node_get(chip->dev->of_node);
 }
@@ -584,24 +585,17 @@ struct pwm_device *of_pwm_get(struct device_node *np, const char *con_id)
        err = of_parse_phandle_with_args(np, "pwms", "#pwm-cells", index,
                                         &args);
        if (err) {
-               pr_debug("%s(): can't parse \"pwms\" property\n", __func__);
+               pr_err("%s(): can't parse \"pwms\" property\n", __func__);
                return ERR_PTR(err);
        }
 
        pc = of_node_to_pwmchip(args.np);
        if (IS_ERR(pc)) {
-               pr_debug("%s(): PWM chip not found\n", __func__);
+               pr_err("%s(): PWM chip not found\n", __func__);
                pwm = ERR_CAST(pc);
                goto put;
        }
 
-       if (args.args_count != pc->of_pwm_n_cells) {
-               pr_debug("%s: wrong #pwm-cells for %s\n", np->full_name,
-                        args.np->full_name);
-               pwm = ERR_PTR(-EINVAL);
-               goto put;
-       }
-
        pwm = pc->of_xlate(pc, &args);
        if (IS_ERR(pwm))
                goto put;
index 75db585a2a9486e354c08cf971b46507f014c3d4..77b2ecf2239f1dfafea86dd5838423de2efaae23 100644 (file)
@@ -395,7 +395,6 @@ static int atmel_tcb_pwm_probe(struct platform_device *pdev)
        tcbpwm->chip.dev = &pdev->dev;
        tcbpwm->chip.ops = &atmel_tcb_pwm_ops;
        tcbpwm->chip.of_xlate = of_pwm_xlate_with_flags;
-       tcbpwm->chip.of_pwm_n_cells = 3;
        tcbpwm->chip.base = -1;
        tcbpwm->chip.npwm = NPWM;
        tcbpwm->tc = tc;
index 0e4bd4e8e5823727c03b7701ad893b4cae1f7e7e..73d3ee4ab1277f298df53a23d6bb631502d66928 100644 (file)
@@ -374,10 +374,8 @@ static int atmel_pwm_probe(struct platform_device *pdev)
        atmel_pwm->chip.dev = &pdev->dev;
        atmel_pwm->chip.ops = &atmel_pwm_ops;
 
-       if (pdev->dev.of_node) {
+       if (pdev->dev.of_node)
                atmel_pwm->chip.of_xlate = of_pwm_xlate_with_flags;
-               atmel_pwm->chip.of_pwm_n_cells = 3;
-       }
 
        atmel_pwm->chip.base = -1;
        atmel_pwm->chip.npwm = 4;
index d600fd5cd4bac9a434a20798328d513d89b5452f..176e917a4cb824f52428c4841b681f9220ffdf02 100644 (file)
@@ -38,6 +38,7 @@
 #define MX3_PWMCR_DOZEEN               (1 << 24)
 #define MX3_PWMCR_WAITEN               (1 << 23)
 #define MX3_PWMCR_DBGEN                        (1 << 22)
+#define MX3_PWMCR_POUTC                        (1 << 18)
 #define MX3_PWMCR_CLKSRC_IPG_HIGH      (2 << 16)
 #define MX3_PWMCR_CLKSRC_IPG           (1 << 16)
 #define MX3_PWMCR_SWR                  (1 << 3)
@@ -179,6 +180,8 @@ static int imx_pwm_config_v2(struct pwm_chip *chip,
 
        if (enable)
                cr |= MX3_PWMCR_EN;
+       if (pwm->polarity == PWM_POLARITY_INVERSED)
+               cr |= MX3_PWMCR_POUTC;
 
        writel(cr, imx->mmio_base + MX3_PWMCR);
 
@@ -197,6 +200,11 @@ static void imx_pwm_set_enable_v2(struct pwm_chip *chip, bool enable)
        else
                val &= ~MX3_PWMCR_EN;
 
+       if (chip->pwms[0].polarity == PWM_POLARITY_INVERSED)
+               val |= MX3_PWMCR_POUTC;
+       else
+               val &= ~MX3_PWMCR_POUTC;
+
        writel(val, imx->mmio_base + MX3_PWMCR);
 }
 
@@ -240,27 +248,49 @@ static void imx_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
        clk_disable_unprepare(imx->clk_per);
 }
 
-static struct pwm_ops imx_pwm_ops = {
+static int imx_pwm_set_polarity(struct pwm_chip *chip, struct pwm_device *pwm,
+                               enum pwm_polarity polarity)
+{
+       struct imx_chip *imx = to_imx_chip(chip);
+
+       dev_dbg(imx->chip.dev, "%s: polarity set to %s\n", __func__,
+               polarity == PWM_POLARITY_INVERSED ? "inverted" : "normal");
+
+       return 0;
+}
+
+static struct pwm_ops imx_pwm_ops_v1 = {
        .enable = imx_pwm_enable,
        .disable = imx_pwm_disable,
        .config = imx_pwm_config,
        .owner = THIS_MODULE,
 };
 
+static struct pwm_ops imx_pwm_ops_v2 = {
+       .enable = imx_pwm_enable,
+       .disable = imx_pwm_disable,
+       .set_polarity = imx_pwm_set_polarity,
+       .config = imx_pwm_config,
+       .owner = THIS_MODULE,
+};
+
 struct imx_pwm_data {
        int (*config)(struct pwm_chip *chip,
                struct pwm_device *pwm, int duty_ns, int period_ns);
        void (*set_enable)(struct pwm_chip *chip, bool enable);
+       struct pwm_ops *pwm_ops;
 };
 
 static struct imx_pwm_data imx_pwm_data_v1 = {
        .config = imx_pwm_config_v1,
        .set_enable = imx_pwm_set_enable_v1,
+       .pwm_ops = &imx_pwm_ops_v1,
 };
 
 static struct imx_pwm_data imx_pwm_data_v2 = {
        .config = imx_pwm_config_v2,
        .set_enable = imx_pwm_set_enable_v2,
+       .pwm_ops = &imx_pwm_ops_v2,
 };
 
 static const struct of_device_id imx_pwm_dt_ids[] = {
@@ -282,6 +312,10 @@ static int imx_pwm_probe(struct platform_device *pdev)
        if (!of_id)
                return -ENODEV;
 
+       data = of_id->data;
+       if (data->pwm_ops->set_polarity)
+               dev_dbg(&pdev->dev, "PWM supports output inversion\n");
+
        imx = devm_kzalloc(&pdev->dev, sizeof(*imx), GFP_KERNEL);
        if (imx == NULL)
                return -ENOMEM;
@@ -300,7 +334,7 @@ static int imx_pwm_probe(struct platform_device *pdev)
                return PTR_ERR(imx->clk_ipg);
        }
 
-       imx->chip.ops = &imx_pwm_ops;
+       imx->chip.ops = data->pwm_ops;
        imx->chip.dev = &pdev->dev;
        imx->chip.base = -1;
        imx->chip.npwm = 1;
@@ -311,7 +345,6 @@ static int imx_pwm_probe(struct platform_device *pdev)
        if (IS_ERR(imx->mmio_base))
                return PTR_ERR(imx->mmio_base);
 
-       data = of_id->data;
        imx->config = data->config;
        imx->set_enable = data->set_enable;
 
index cb2f7024cf6846350dd2ac83846e8d0a7b26ee02..68e138a63921c4b060a5b10187b70f234e97412e 100644 (file)
@@ -191,10 +191,9 @@ static int pwm_probe(struct platform_device *pdev)
        pwm->chip.base = -1;
        pwm->chip.npwm = (id->driver_data & HAS_SECONDARY_PWM) ? 2 : 1;
 
-       if (IS_ENABLED(CONFIG_OF)) {
+       if (IS_ENABLED(CONFIG_OF))
                pwm->chip.of_xlate = pxa_pwm_of_xlate;
-               pwm->chip.of_pwm_n_cells = 1;
-       }
+
 
        r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        pwm->mmio_base = devm_ioremap_resource(&pdev->dev, r);
index 075c1a764ba293dab3d1e39df05bc4b49f67b1b3..e0e1a1aaec7322ecfec000b0459b3e4231ed27db 100644 (file)
@@ -419,7 +419,6 @@ static int tpu_probe(struct platform_device *pdev)
        tpu->chip.dev = &pdev->dev;
        tpu->chip.ops = &tpu_pwm_ops;
        tpu->chip.of_xlate = of_pwm_xlate_with_flags;
-       tpu->chip.of_pwm_n_cells = 3;
        tpu->chip.base = -1;
        tpu->chip.npwm = TPU_CHANNEL_MAX;
 
index ada2d326dc3e6117f9543f5283ac09c90bcb22ad..d9634c32a023e4fdc23b4cd0f6231db7c8f93547 100644 (file)
@@ -515,7 +515,6 @@ static int pwm_samsung_probe(struct platform_device *pdev)
                        return ret;
 
                chip->chip.of_xlate = of_pwm_xlate_with_flags;
-               chip->chip.of_pwm_n_cells = 3;
        } else {
                if (!pdev->dev.platform_data) {
                        dev_err(&pdev->dev, "no platform data specified\n");
index 616af764a27682ed0301e897ab731f5ffe8c5a13..1e5d17abf5d5a10e8e202f204b5a40ae3a4ba9ec 100644 (file)
@@ -227,7 +227,6 @@ static int ecap_pwm_probe(struct platform_device *pdev)
        pc->chip.dev = &pdev->dev;
        pc->chip.ops = &ecap_pwm_ops;
        pc->chip.of_xlate = of_pwm_xlate_with_flags;
-       pc->chip.of_pwm_n_cells = 3;
        pc->chip.base = -1;
        pc->chip.npwm = 1;
 
index 6a41e66015b67fa84865891cbc3e97e12de6539f..d6659a664032605429916a96d62387b2eef62b8d 100644 (file)
@@ -377,10 +377,12 @@ static void ehrpwm_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
 
        /* Action Qualifier puts PWM output low forcefully */
        if (pwm->hwpwm) {
-               aqcsfrc_val = AQCSFRC_CSFB_FRCLOW;
+               aqcsfrc_val = pc->polarity[pwm->hwpwm] == PWM_POLARITY_INVERSED ?
+                       AQCSFRC_CSFB_FRCHIGH : AQCSFRC_CSFB_FRCLOW;
                aqcsfrc_mask = AQCSFRC_CSFB_MASK;
        } else {
-               aqcsfrc_val = AQCSFRC_CSFA_FRCLOW;
+               aqcsfrc_val = pc->polarity[pwm->hwpwm] == PWM_POLARITY_INVERSED ?
+                       AQCSFRC_CSFA_FRCHIGH : AQCSFRC_CSFA_FRCLOW;
                aqcsfrc_mask = AQCSFRC_CSFA_MASK;
        }
 
@@ -458,7 +460,6 @@ static int ehrpwm_pwm_probe(struct platform_device *pdev)
        pc->chip.dev = &pdev->dev;
        pc->chip.ops = &ehrpwm_pwm_ops;
        pc->chip.of_xlate = of_pwm_xlate_with_flags;
-       pc->chip.of_pwm_n_cells = 3;
        pc->chip.base = -1;
        pc->chip.npwm = NUM_PWM_CHANNEL;
 
index cdb58fd4619d21e2225b171ffdad2de55641d653..4234ac4bb85961bec61aad449a5510e74f4fc2f4 100644 (file)
@@ -217,7 +217,6 @@ static int vt8500_pwm_probe(struct platform_device *pdev)
        chip->chip.dev = &pdev->dev;
        chip->chip.ops = &vt8500_pwm_ops;
        chip->chip.of_xlate = of_pwm_xlate_with_flags;
-       chip->chip.of_pwm_n_cells = 3;
        chip->chip.base = -1;
        chip->chip.npwm = VT8500_NR_PWMS;
 
index 972c386b269024180e512cab2c65da0e069817c6..fff90cd36c73c969c1f437862add4e926324a2a1 100644 (file)
@@ -65,6 +65,8 @@
 #define LTC3589_VCCR_SW3_GO            BIT(4)
 #define LTC3589_VCCR_LDO2_GO           BIT(6)
 
+#define POLL_PERIOD                    1000
+
 enum ltc3589_variant {
        LTC3589,
        LTC3589_1,
@@ -97,6 +99,7 @@ struct ltc3589 {
        enum ltc3589_variant variant;
        struct ltc3589_regulator regulator_descs[LTC3589_NUM_REGULATORS];
        struct regulator_dev *regulators[LTC3589_NUM_REGULATORS];
+       struct delayed_work poll_timer;
 };
 
 static const int ltc3589_ldo4[] = {
@@ -407,11 +410,10 @@ static const struct regmap_config ltc3589_regmap_config = {
        .cache_type = REGCACHE_RBTREE,
 };
 
-
-static irqreturn_t ltc3589_isr(int irq, void *dev_id)
+static inline void ltc3589_handle_irq(struct ltc3589 *ltc3589)
 {
-       struct ltc3589 *ltc3589 = dev_id;
-       unsigned int i, irqstat, event;
+       u32 irqstat, event;
+       int i;
 
        regmap_read(ltc3589->regmap, LTC3589_IRQSTAT, &irqstat);
 
@@ -431,6 +433,24 @@ static irqreturn_t ltc3589_isr(int irq, void *dev_id)
 
        /* Clear warning condition */
        regmap_write(ltc3589->regmap, LTC3589_CLIRQ, 0);
+}
+
+static void ltc3589_poll_func(struct work_struct *work)
+{
+       struct ltc3589 *ltc3589 = container_of(work, struct ltc3589,
+                                       poll_timer.work);
+       unsigned long timeout = msecs_to_jiffies(POLL_PERIOD);
+
+       ltc3589_handle_irq(ltc3589);
+
+       schedule_delayed_work(&ltc3589->poll_timer, timeout);
+}
+
+static irqreturn_t ltc3589_isr(int irq, void *dev_id)
+{
+       struct ltc3589 *ltc3589 = dev_id;
+
+       ltc3589_handle_irq(ltc3589);
 
        return IRQ_HANDLED;
 }
@@ -519,6 +539,16 @@ static int ltc3589_probe(struct i2c_client *client,
                        return ret;
                }
        }
+       if (client->irq <= 0) {
+               dev_warn(dev,
+                       "No interrupt configured; poll for thermal shutdown and undervoltage events\n");
+
+               INIT_DELAYED_WORK(&ltc3589->poll_timer, ltc3589_poll_func);
+               schedule_delayed_work(&ltc3589->poll_timer,
+                               msecs_to_jiffies(POLL_PERIOD));
+
+               return 0;
+       }
 
        ret = devm_request_threaded_irq(dev, client->irq, NULL, ltc3589_isr,
                                        IRQF_TRIGGER_LOW | IRQF_ONESHOT,
@@ -531,6 +561,16 @@ static int ltc3589_probe(struct i2c_client *client,
        return 0;
 }
 
+static int ltc3589_remove(struct i2c_client *client)
+{
+       struct ltc3589 *ltc3589 = i2c_get_clientdata(client);
+
+       if (client->irq <= 0)
+               cancel_delayed_work(&ltc3589->poll_timer);
+
+       return 0;
+}
+
 static struct i2c_device_id ltc3589_i2c_id[] = {
        { "ltc3589",   LTC3589   },
        { "ltc3589-1", LTC3589_1 },
@@ -544,6 +584,7 @@ static struct i2c_driver ltc3589_driver = {
                .name = DRIVER_NAME,
        },
        .probe = ltc3589_probe,
+       .remove = ltc3589_remove,
        .id_table = ltc3589_i2c_id,
 };
 module_i2c_driver(ltc3589_driver);
index ed8283e7397aecd884616ec828fe2846b15c10df..9ccd5a5c8b65c633809b67eb7a14b80de79116ab 100644 (file)
@@ -439,10 +439,9 @@ static void omap2_mcspi_tx_dma(struct spi_device *spi,
                } else {
                        /* FIXME: fall back to PIO? */
                }
+               dma_async_issue_pending(mcspi_dma->dma_tx);
        }
-       dma_async_issue_pending(mcspi_dma->dma_tx);
        omap2_mcspi_set_dma_req(spi, 0, 1);
-
 }
 
 static unsigned
@@ -567,10 +566,10 @@ omap2_mcspi_txrx_dma(struct spi_device *spi, struct spi_transfer *xfer)
        const u8                *tx;
        struct dma_slave_config cfg;
        enum dma_slave_buswidth width;
-       unsigned es;
+       unsigned                es;
        u32                     burst;
        void __iomem            *chstat_reg;
-       void __iomem            *irqstat_reg;
+       void __iomem            *irqstat_reg;
        int                     wait_res;
 
        mcspi = spi_master_get_devdata(spi->master);
@@ -1345,7 +1344,7 @@ static const struct of_device_id omap_mcspi_of_match[] = {
                .compatible = "ti,omap4-mcspi",
                .data = &omap4_pdata,
        },
-       { },
+       { }
 };
 MODULE_DEVICE_TABLE(of, omap_mcspi_of_match);
 
@@ -1356,7 +1355,7 @@ static int omap2_mcspi_probe(struct platform_device *pdev)
        struct omap2_mcspi      *mcspi;
        struct resource         *r;
        int                     status = 0, i;
-       u32                     regs_offset = 0;
+       u32                     regs_offset;
        static int              bus_num = 1;
        struct device_node      *node = pdev->dev.of_node;
        const struct of_device_id *match;
@@ -1410,15 +1409,13 @@ static int omap2_mcspi_probe(struct platform_device *pdev)
                goto free_master;
        }
 
-       r->start += regs_offset;
-       r->end += regs_offset;
-       mcspi->phys = r->start;
-
        mcspi->base = devm_ioremap_resource(&pdev->dev, r);
        if (IS_ERR(mcspi->base)) {
                status = PTR_ERR(mcspi->base);
                goto free_master;
        }
+       mcspi->phys = r->start + regs_offset;
+       mcspi->base += regs_offset;
 
        mcspi->dev = &pdev->dev;
 
index 1e58ed2361cc45044ba22b167c12e22af66f1ff3..6f1b7bc6a6dc6fda79154011721eefe44b524ba8 100644 (file)
@@ -19,25 +19,37 @@ err:
        return ret;
 }
 
+static int of_remove_populated_child(struct device *dev, void *d)
+{
+       struct platform_device *pdev = to_platform_device(dev);
+
+       of_device_unregister(pdev);
+       of_node_clear_flag(pdev->dev.of_node, OF_POPULATED);
+       return 0;
+}
+
+static int am335x_child_remove(struct platform_device *pdev)
+{
+       device_for_each_child(&pdev->dev, NULL, of_remove_populated_child);
+       pm_runtime_disable(&pdev->dev);
+       return 0;
+}
+
 static const struct of_device_id am335x_child_of_match[] = {
        { .compatible = "ti,am33xx-usb" },
-       {  },
+       {  }
 };
 MODULE_DEVICE_TABLE(of, am335x_child_of_match);
 
 static struct platform_driver am335x_child_driver = {
        .probe          = am335x_child_probe,
-       .driver         = {
-               .name   = "am335x-usb-childs",
+       .remove         = am335x_child_remove,
+       .driver         = {
+               .name   = "am335x-usb-childs",
                .of_match_table = am335x_child_of_match,
        },
 };
 
-static int __init am335x_child_init(void)
-{
-       return platform_driver_register(&am335x_child_driver);
-}
-module_init(am335x_child_init);
-
+module_platform_driver(am335x_child_driver);
 MODULE_DESCRIPTION("AM33xx child devices");
 MODULE_LICENSE("GPL v2");
index 00eed5d66fda50b5fd3aae9c7579960aa513da89..bc1fd12581fa8d798fbf6911f857f536c73c192e 100644 (file)
@@ -765,7 +765,6 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb,
                default:
                        /* "should not happen" */
                        musb->is_active = 0;
-                       break;
                }
        }
 
@@ -818,7 +817,6 @@ b_host:
                                if (hcd)
                                        hcd->self.is_b_host = 0;
                        }
-                       break;
                }
 
                musb_host_poke_root_hub(musb);
@@ -868,7 +866,6 @@ b_host:
                default:
                        WARNING("unhandled DISCONNECT transition (%s)\n",
                                usb_otg_state_string(musb->xceiv->otg->state));
-                       break;
                }
        }
 
@@ -1984,7 +1981,7 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
         * Fail when the board needs a feature that's not enabled.
         */
        if (!plat) {
-               dev_dbg(dev, "no platform_data?\n");
+               dev_err(dev, "no platform_data?\n");
                status = -ENODEV;
                goto fail0;
        }
@@ -2178,18 +2175,21 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
 
        switch (musb->port_mode) {
        case MUSB_PORT_MODE_HOST:
-               status = musb_host_setup(musb, plat->power);
+               status = musb_platform_set_mode(musb, MUSB_HOST);
                if (status < 0)
                        goto fail3;
-               status = musb_platform_set_mode(musb, MUSB_HOST);
+               status = musb_host_setup(musb, plat->power);
                break;
        case MUSB_PORT_MODE_GADGET:
-               status = musb_gadget_setup(musb);
+               status = musb_platform_set_mode(musb, MUSB_PERIPHERAL);
                if (status < 0)
                        goto fail3;
-               status = musb_platform_set_mode(musb, MUSB_PERIPHERAL);
+               status = musb_gadget_setup(musb);
                break;
        case MUSB_PORT_MODE_DUAL_ROLE:
+               status = musb_platform_set_mode(musb, MUSB_OTG);
+               if (status < 0)
+                       goto fail3;
                status = musb_host_setup(musb, plat->power);
                if (status < 0)
                        goto fail3;
@@ -2198,11 +2198,9 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
                        musb_host_cleanup(musb);
                        goto fail3;
                }
-               status = musb_platform_set_mode(musb, MUSB_OTG);
                break;
        default:
                dev_err(dev, "unsupported port mode %d\n", musb->port_mode);
-               break;
        }
 
        if (status < 0)
index 7b3035ff94347a519a9d54f27c45108aaaca0e9f..3bff7a8b6a816e22e55a43af9f2d1d97d2eee99b 100644 (file)
@@ -143,6 +143,9 @@ static int am335x_control_usb_probe(struct platform_device *pdev)
        const struct of_device_id *of_id;
        const struct phy_control *phy_ctrl;
 
+       if (!try_module_get(pdev->dev.parent->driver->owner))
+               return -EPROBE_DEFER;
+
        of_id = of_match_node(omap_control_usb_id_table, pdev->dev.of_node);
        if (!of_id)
                return -EINVAL;
@@ -172,8 +175,15 @@ static int am335x_control_usb_probe(struct platform_device *pdev)
        return 0;
 }
 
+static int am335x_control_usb_remove(struct platform_device *pdev)
+{
+       module_put(pdev->dev.parent->driver->owner);
+       return 0;
+}
+
 static struct platform_driver am335x_control_driver = {
        .probe          = am335x_control_usb_probe,
+       .remove         = am335x_control_usb_remove,
        .driver         = {
                .name   = "am335x-control-usb",
                .of_match_table = omap_control_usb_id_table,
index 90b67a4ca22164be02cf2cd1e956514cb592798d..f69c1c5168ad24892b296a4645ac937a49138a94 100644 (file)
@@ -1,13 +1,13 @@
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/dma-mapping.h>
-#include <linux/usb/otg.h>
-#include <linux/usb/usb_phy_generic.h>
 #include <linux/slab.h>
 #include <linux/clk.h>
-#include <linux/regulator/consumer.h>
 #include <linux/of.h>
 #include <linux/of_address.h>
+#include <linux/regulator/consumer.h>
+#include <linux/usb/otg.h>
+#include <linux/usb/usb_phy_generic.h>
 
 #include "am35x-phy-control.h"
 #include "phy-generic.h"
@@ -22,6 +22,7 @@ static int am335x_init(struct usb_phy *phy)
 {
        struct am335x_phy *am_phy = dev_get_drvdata(phy->dev);
 
+       usb_gen_phy_init(phy);
        phy_ctrl_power(am_phy->phy_ctrl, am_phy->id, true);
        return 0;
 }
@@ -31,6 +32,7 @@ static void am335x_shutdown(struct usb_phy *phy)
        struct am335x_phy *am_phy = dev_get_drvdata(phy->dev);
 
        phy_ctrl_power(am_phy->phy_ctrl, am_phy->id, false);
+       usb_gen_phy_shutdown(phy);
 }
 
 static int am335x_phy_probe(struct platform_device *pdev)
@@ -56,11 +58,12 @@ static int am335x_phy_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
+       am_phy->usb_phy_gen.phy.init = am335x_init;
+       am_phy->usb_phy_gen.phy.shutdown = am335x_shutdown;
+
        ret = usb_add_phy_dev(&am_phy->usb_phy_gen.phy);
        if (ret)
                return ret;
-       am_phy->usb_phy_gen.phy.init = am335x_init;
-       am_phy->usb_phy_gen.phy.shutdown = am335x_shutdown;
 
        platform_set_drvdata(pdev, am_phy);
        device_init_wakeup(dev, true);
index 77985cc43316c1384220beeffe51e28d4e6a3d5c..29050337d9d53c582f17f5f4ed6b784f256d8c70 100644 (file)
 #define IMX6QDL_CLK_CAAM_ACLK                  242
 #define IMX6QDL_CLK_CAAM_IPG                   243
 #define IMX6QDL_CLK_SPDIF_GCLK                 244
-#define IMX6QDL_CLK_END                                245
+#define IMX6QDL_CLK_UART_SEL                   245
+#define IMX6QDL_CLK_IPG_PER_SEL                        246
+#define IMX6QDL_CLK_ECSPI_SEL                  247
+#define IMX6QDL_CLK_CAN_SEL                    248
+#define IMX6QDL_CLK_MMDC_CH1_AXI_CG            249
+#define IMX6QDL_CLK_PRE0                       250
+#define IMX6QDL_CLK_PRE1                       251
+#define IMX6QDL_CLK_PRE2                       252
+#define IMX6QDL_CLK_PRE3                       253
+#define IMX6QDL_CLK_PRG0_AXI                   254
+#define IMX6QDL_CLK_PRG1_AXI                   255
+#define IMX6QDL_CLK_PRG0_APB                   256
+#define IMX6QDL_CLK_PRG1_APB                   257
+#define IMX6QDL_CLK_PRE_AXI                    258
+#define IMX6QDL_CLK_END                                259
 
 #endif /* __DT_BINDINGS_CLOCK_IMX6QDL_H */
index c343894ce603c8c4e0e0ad27c923355c8c2c1f14..fd8aee8f64aeb68fdd84918215295d52ff021996 100644 (file)
 #define IMX6UL_PLL5_BYPASS_SRC         8
 #define IMX6UL_PLL6_BYPASS_SRC         9
 #define IMX6UL_PLL7_BYPASS_SRC         10
-#define IMX6UL_CLK_PLL1                11
-#define IMX6UL_CLK_PLL2                12
-#define IMX6UL_CLK_PLL3                13
-#define IMX6UL_CLK_PLL4                14
-#define IMX6UL_CLK_PLL5                15
-#define IMX6UL_CLK_PLL6                16
-#define IMX6UL_CLK_PLL7                17
+#define IMX6UL_CLK_PLL1                        11
+#define IMX6UL_CLK_PLL2                        12
+#define IMX6UL_CLK_PLL3                        13
+#define IMX6UL_CLK_PLL4                        14
+#define IMX6UL_CLK_PLL5                        15
+#define IMX6UL_CLK_PLL6                        16
+#define IMX6UL_CLK_PLL7                        17
 #define IMX6UL_PLL1_BYPASS             18
 #define IMX6UL_PLL2_BYPASS             19
 #define IMX6UL_PLL3_BYPASS             20
@@ -37,7 +37,7 @@
 #define IMX6UL_PLL7_BYPASS             24
 #define IMX6UL_CLK_PLL1_SYS            25
 #define IMX6UL_CLK_PLL2_BUS            26
-#define IMX6UL_CLK_PLL3_USB_OTG        27
+#define IMX6UL_CLK_PLL3_USB_OTG                27
 #define IMX6UL_CLK_PLL4_AUDIO          28
 #define IMX6UL_CLK_PLL5_VIDEO          29
 #define IMX6UL_CLK_PLL6_ENET           30
@@ -66,7 +66,7 @@
 #define IMX6UL_CLK_PLL2_198M           53
 #define IMX6UL_CLK_PLL3_80M            54
 #define IMX6UL_CLK_PLL3_60M            55
-#define IMX6UL_CLK_STEP                56
+#define IMX6UL_CLK_STEP                        56
 #define IMX6UL_CLK_PLL1_SW             57
 #define IMX6UL_CLK_AXI_ALT_SEL         58
 #define IMX6UL_CLK_AXI_SEL             59
@@ -78,7 +78,7 @@
 #define IMX6UL_CLK_USDHC2_SEL          65
 #define IMX6UL_CLK_BCH_SEL             66
 #define IMX6UL_CLK_GPMI_SEL            67
-#define IMX6UL_CLK_EIM_SLOW_SEL        68
+#define IMX6UL_CLK_EIM_SLOW_SEL                68
 #define IMX6UL_CLK_SPDIF_SEL           69
 #define IMX6UL_CLK_SAI1_SEL            70
 #define IMX6UL_CLK_SAI2_SEL            71
 #define IMX6UL_CLK_LDB_DI1_DIV_SEL     92
 #define IMX6UL_CLK_ARM                 93
 #define IMX6UL_CLK_PERIPH_CLK2         94
-#define IMX6UL_CLK_PERIPH2_CLK2        95
+#define IMX6UL_CLK_PERIPH2_CLK2                95
 #define IMX6UL_CLK_AHB                 96
-#define IMX6UL_CLK_MMDC_PODF           97
+#define IMX6UL_CLK_MMDC_PODF           97
 #define IMX6UL_CLK_AXI_PODF            98
 #define IMX6UL_CLK_PERCLK              99
 #define IMX6UL_CLK_IPG                 100
 #define IMX6UL_CLK_CAN_PODF            120
 #define IMX6UL_CLK_ECSPI_PODF          121
 #define IMX6UL_CLK_UART_PODF           122
-#define IMX6UL_CLK_ADC1                123
-#define IMX6UL_CLK_ADC2                124
+#define IMX6UL_CLK_ADC1                        123
+#define IMX6UL_CLK_ADC2                        124
 #define IMX6UL_CLK_AIPSTZ1             125
 #define IMX6UL_CLK_AIPSTZ2             126
 #define IMX6UL_CLK_AIPSTZ3             127
 #define IMX6UL_CLK_APBHDMA             128
 #define IMX6UL_CLK_ASRC_IPG            129
 #define IMX6UL_CLK_ASRC_MEM            130
-#define IMX6UL_CLK_GPMI_BCH_APB        131
-#define IMX6UL_CLK_GPMI_BCH            132
+#define IMX6UL_CLK_GPMI_BCH_APB                131
+#define IMX6UL_CLK_GPMI_BCH            132
 #define IMX6UL_CLK_GPMI_IO             133
 #define IMX6UL_CLK_GPMI_APB            134
 #define IMX6UL_CLK_CAAM_MEM            135
 #define IMX6UL_CLK_ECSPI3              141
 #define IMX6UL_CLK_ECSPI4              142
 #define IMX6UL_CLK_EIM                 143
-#define IMX6UL_CLK_ENET                144
+#define IMX6UL_CLK_ENET                        144
 #define IMX6UL_CLK_ENET_AHB            145
 #define IMX6UL_CLK_EPIT1               146
 #define IMX6UL_CLK_EPIT2               147
 #define IMX6UL_CLK_GPT1_SERIAL         153
 #define IMX6UL_CLK_GPT2_BUS            154
 #define IMX6UL_CLK_GPT2_SERIAL         155
-#define IMX6UL_CLK_I2C1                156
-#define IMX6UL_CLK_I2C2                157
-#define IMX6UL_CLK_I2C3                158
-#define IMX6UL_CLK_I2C4                159
-#define IMX6UL_CLK_IOMUXC              160
-#define IMX6UL_CLK_LCDIF_APB           161
-#define IMX6UL_CLK_LCDIF_PIX           162
-#define IMX6UL_CLK_MMDC_P0_FAST        163
-#define IMX6UL_CLK_MMDC_P0_IPG         164
-#define IMX6UL_CLK_OCOTP               165
-#define IMX6UL_CLK_OCRAM               166
-#define IMX6UL_CLK_PWM1                167
-#define IMX6UL_CLK_PWM2                168
-#define IMX6UL_CLK_PWM3                169
-#define IMX6UL_CLK_PWM4                170
-#define IMX6UL_CLK_PWM5                171
-#define IMX6UL_CLK_PWM6                172
-#define IMX6UL_CLK_PWM7                173
-#define IMX6UL_CLK_PWM8                174
-#define IMX6UL_CLK_PXP                 175
-#define IMX6UL_CLK_QSPI                176
-#define IMX6UL_CLK_ROM                 177
-#define IMX6UL_CLK_SAI1                178
-#define IMX6UL_CLK_SAI1_IPG            179
-#define IMX6UL_CLK_SAI2                180
-#define IMX6UL_CLK_SAI2_IPG            181
-#define IMX6UL_CLK_SAI3                182
-#define IMX6UL_CLK_SAI3_IPG            183
-#define IMX6UL_CLK_SDMA                184
-#define IMX6UL_CLK_SIM                 185
-#define IMX6UL_CLK_SIM_S               186
-#define IMX6UL_CLK_SPBA                187
-#define IMX6UL_CLK_SPDIF               188
-#define IMX6UL_CLK_UART1_IPG           189
-#define IMX6UL_CLK_UART1_SERIAL        190
-#define IMX6UL_CLK_UART2_IPG           191
-#define IMX6UL_CLK_UART2_SERIAL        192
-#define IMX6UL_CLK_UART3_IPG           193
-#define IMX6UL_CLK_UART3_SERIAL        194
-#define IMX6UL_CLK_UART4_IPG           195
-#define IMX6UL_CLK_UART4_SERIAL        196
-#define IMX6UL_CLK_UART5_IPG           197
-#define IMX6UL_CLK_UART5_SERIAL        198
-#define IMX6UL_CLK_UART6_IPG           199
-#define IMX6UL_CLK_UART6_SERIAL        200
-#define IMX6UL_CLK_UART7_IPG           201
-#define IMX6UL_CLK_UART7_SERIAL        202
-#define IMX6UL_CLK_UART8_IPG           203
-#define IMX6UL_CLK_UART8_SERIAL        204
-#define IMX6UL_CLK_USBOH3              205
-#define IMX6UL_CLK_USDHC1              206
-#define IMX6UL_CLK_USDHC2              207
-#define IMX6UL_CLK_WDOG1               208
-#define IMX6UL_CLK_WDOG2               209
-#define IMX6UL_CLK_WDOG3               210
+#define IMX6UL_CLK_I2C1                        156
+#define IMX6UL_CLK_I2C2                        157
+#define IMX6UL_CLK_I2C3                        158
+#define IMX6UL_CLK_I2C4                        159
+#define IMX6UL_CLK_IOMUXC              160
+#define IMX6UL_CLK_LCDIF_APB           161
+#define IMX6UL_CLK_LCDIF_PIX           162
+#define IMX6UL_CLK_MMDC_P0_FAST                163
+#define IMX6UL_CLK_MMDC_P0_IPG         164
+#define IMX6UL_CLK_OCOTP               165
+#define IMX6UL_CLK_OCRAM               166
+#define IMX6UL_CLK_PWM1                        167
+#define IMX6UL_CLK_PWM2                        168
+#define IMX6UL_CLK_PWM3                        169
+#define IMX6UL_CLK_PWM4                        170
+#define IMX6UL_CLK_PWM5                        171
+#define IMX6UL_CLK_PWM6                        172
+#define IMX6UL_CLK_PWM7                        173
+#define IMX6UL_CLK_PWM8                        174
+#define IMX6UL_CLK_PXP                 175
+#define IMX6UL_CLK_QSPI                        176
+#define IMX6UL_CLK_ROM                 177
+#define IMX6UL_CLK_SAI1                        178
+#define IMX6UL_CLK_SAI1_IPG            179
+#define IMX6UL_CLK_SAI2                        180
+#define IMX6UL_CLK_SAI2_IPG            181
+#define IMX6UL_CLK_SAI3                        182
+#define IMX6UL_CLK_SAI3_IPG            183
+#define IMX6UL_CLK_SDMA                        184
+#define IMX6UL_CLK_SIM                 185
+#define IMX6UL_CLK_SIM_S               186
+#define IMX6UL_CLK_SPBA                        187
+#define IMX6UL_CLK_SPDIF               188
+#define IMX6UL_CLK_UART1_IPG           189
+#define IMX6UL_CLK_UART1_SERIAL                190
+#define IMX6UL_CLK_UART2_IPG           191
+#define IMX6UL_CLK_UART2_SERIAL                192
+#define IMX6UL_CLK_UART3_IPG           193
+#define IMX6UL_CLK_UART3_SERIAL                194
+#define IMX6UL_CLK_UART4_IPG           195
+#define IMX6UL_CLK_UART4_SERIAL                196
+#define IMX6UL_CLK_UART5_IPG           197
+#define IMX6UL_CLK_UART5_SERIAL                198
+#define IMX6UL_CLK_UART6_IPG           199
+#define IMX6UL_CLK_UART6_SERIAL                200
+#define IMX6UL_CLK_UART7_IPG           201
+#define IMX6UL_CLK_UART7_SERIAL                202
+#define IMX6UL_CLK_UART8_IPG           203
+#define IMX6UL_CLK_UART8_SERIAL                204
+#define IMX6UL_CLK_USBOH3              205
+#define IMX6UL_CLK_USDHC1              206
+#define IMX6UL_CLK_USDHC2              207
+#define IMX6UL_CLK_WDOG1               208
+#define IMX6UL_CLK_WDOG2               209
+#define IMX6UL_CLK_WDOG3               210
 #define IMX6UL_CLK_LDB_DI0             211
-#define IMX6UL_CLK_AXI                 212
+#define IMX6UL_CLK_AXI                 212
 #define IMX6UL_CLK_SPDIF_GCLK          213
 #define IMX6UL_CLK_GPT_3M              214
 #define IMX6UL_CLK_SIM2                        215
 #define IMX6UL_CLK_CSI_SEL             221
 #define IMX6UL_CLK_CSI_PODF            222
 #define IMX6UL_CLK_PLL3_120M           223
+#define IMX6UL_CLK_KPP                 224
 
-#define IMX6UL_CLK_END                 224
+#define IMX6UL_CLK_END                 225
 
 #endif /* __DT_BINDINGS_CLOCK_IMX6UL_H */
index cfc3ed46cad20a26ffa131b51e25927ac6045f4c..10ca94eeb59d1e8dd7cd5eaefa9500e98c165794 100644 (file)
@@ -184,18 +184,17 @@ struct pwm_ops {
  *             operations may sleep
  */
 struct pwm_chip {
-       struct device *dev;
-       struct list_head list;
-       const struct pwm_ops *ops;
-       int base;
-       unsigned int npwm;
+       struct device           *dev;
+       struct list_head        list;
+       const struct pwm_ops    *ops;
+       int                     base;
+       unsigned int            npwm;
 
-       struct pwm_device *pwms;
+       struct pwm_device       *pwms;
 
-       struct pwm_device * (*of_xlate)(struct pwm_chip *pc,
-                                       const struct of_phandle_args *args);
-       unsigned int of_pwm_n_cells;
-       bool can_sleep;
+       struct pwm_device *     (*of_xlate)(struct pwm_chip *pc,
+                                           const struct of_phandle_args *args);
+       bool                    can_sleep;
 };
 
 #if IS_ENABLED(CONFIG_PWM)
index 08b40460663c2f28bd450261889cd365116f0bf9..3d55ff74dd5fd0b4a841da2d4325f5a9b1262398 100644 (file)
@@ -824,6 +824,9 @@ static int ldo_regulator_disable(struct regulator_dev *dev)
        struct ldo_regulator *ldo = rdev_get_drvdata(dev);
        struct snd_soc_codec *codec = (struct snd_soc_codec *)ldo->codec_data;
 
+       if (ldo_regulator_is_enabled(dev))
+               return 0;
+
        snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER,
                                SGTL5000_LINEREG_D_POWERUP,
                                0);
@@ -859,17 +862,14 @@ static int ldo_regulator_register(struct snd_soc_codec *codec,
        struct sgtl5000_priv *sgtl5000 = snd_soc_codec_get_drvdata(codec);
        struct regulator_config config = { };
 
-       ldo = kzalloc(sizeof(struct ldo_regulator), GFP_KERNEL);
-
+       ldo = devm_kzalloc(codec->dev, sizeof(*ldo), GFP_KERNEL);
        if (!ldo)
                return -ENOMEM;
 
-       ldo->desc.name = kstrdup(dev_name(codec->dev), GFP_KERNEL);
-       if (!ldo->desc.name) {
-               kfree(ldo);
-               dev_err(codec->dev, "failed to allocate decs name memory\n");
+       ldo->desc.name = devm_kstrdup(codec->dev, dev_name(codec->dev),
+                               GFP_KERNEL);
+       if (!ldo->desc.name)
                return -ENOMEM;
-       }
 
        ldo->desc.type  = REGULATOR_VOLTAGE;
        ldo->desc.owner = THIS_MODULE;
@@ -885,13 +885,8 @@ static int ldo_regulator_register(struct snd_soc_codec *codec,
 
        ldo->dev = regulator_register(&ldo->desc, &config);
        if (IS_ERR(ldo->dev)) {
-               int ret = PTR_ERR(ldo->dev);
-
                dev_err(codec->dev, "failed to register regulator\n");
-               kfree(ldo->desc.name);
-               kfree(ldo);
-
-               return ret;
+               return PTR_ERR(ldo->dev);
        }
        sgtl5000->ldo = ldo;
 
@@ -907,8 +902,7 @@ static int ldo_regulator_remove(struct snd_soc_codec *codec)
                return 0;
 
        regulator_unregister(ldo->dev);
-       kfree(ldo->desc.name);
-       kfree(ldo);
+       sgtl5000->ldo = NULL;
 
        return 0;
 }
@@ -1327,7 +1321,6 @@ err_ldo_remove:
        if (!external_vddd)
                ldo_regulator_remove(codec);
        return ret;
-
 }
 
 static int sgtl5000_probe(struct snd_soc_codec *codec)
@@ -1586,8 +1579,8 @@ static int sgtl5000_i2c_remove(struct i2c_client *client)
 }
 
 static const struct i2c_device_id sgtl5000_id[] = {
-       {"sgtl5000", 0},
-       {},
+       { "sgtl5000", 0 },
+       {}
 };
 
 MODULE_DEVICE_TABLE(i2c, sgtl5000_id);
index 3736d9aabc563c9b006c9c00a6abea196e3e5daf..6460cf3ee40996514b370060369942fec1d3f78c 100644 (file)
@@ -45,6 +45,15 @@ config SND_AM33XX_SOC_EVM
          AM335X-EVMSK, and BeagelBone with AudioCape boards have this
          setup.
 
+config  SND_AM335X_SOC_TX48
+       tristate "SoC Audio support for Ka-Ro TX48"
+       depends on OF && SND_DAVINCI_SOC && SOC_AM33XX
+       select SND_SOC_SGTL5000
+       select SND_DAVINCI_SOC_MCASP
+       help
+         Say Y if you want to add support for SoC audio on
+         Ka-Ro electronics TX48
+
 config SND_DAVINCI_SOC_EVM
        tristate "SoC Audio support for DaVinci DM6446, DM355 or DM365 EVM"
        depends on SND_EDMA_SOC && I2C
index f883933c1a194d8a6631b919f91b52cb4c7acf9e..90ae0192ff41ad164fbf84113c3751a89ea794b8 100644 (file)
@@ -11,5 +11,7 @@ obj-$(CONFIG_SND_DAVINCI_SOC_VCIF) += snd-soc-davinci-vcif.o
 
 # Generic DAVINCI/AM33xx Machine Support
 snd-soc-evm-objs := davinci-evm.o
+snd-soc-tx48-objs := am335x-tx48.o
 
 obj-$(CONFIG_SND_DAVINCI_SOC_GENERIC_EVM) += snd-soc-evm.o
+obj-$(CONFIG_SND_AM335X_SOC_TX48) += snd-soc-tx48.o
diff --git a/sound/soc/davinci/am335x-tx48.c b/sound/soc/davinci/am335x-tx48.c
new file mode 100644 (file)
index 0000000..d7ff301
--- /dev/null
@@ -0,0 +1,267 @@
+/*
+ * ASoC driver for Ka-Ro electronics TX48 module
+ * (C) Copyright 2013 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * based on: davinci-evm.c
+ * Author:      Vladimir Barinov, <vbarinov@embeddedalley.com>
+ * Copyright:   (C) 2007 MontaVista Software, Inc., <source@mvista.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/timer.h>
+#include <linux/interrupt.h>
+#include <linux/of_platform.h>
+#include <linux/clk.h>
+#include <linux/i2c.h>
+#include <linux/edma.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/soc.h>
+
+#include <asm/dma.h>
+#include <asm/mach-types.h>
+
+#include "../codecs/sgtl5000.h"
+
+#include "davinci-pcm.h"
+#include "davinci-i2s.h"
+#include "davinci-mcasp.h"
+
+struct am335x_tx48_drvdata {
+       struct clk *mclk;
+       unsigned sysclk;
+};
+
+static int am335x_tx48_startup(struct snd_pcm_substream *substream)
+{
+       struct snd_soc_pcm_runtime *rtd = substream->private_data;
+       struct snd_soc_card *soc_card = rtd->card;
+       struct am335x_tx48_drvdata *drvdata =
+               snd_soc_card_get_drvdata(soc_card);
+
+       if (drvdata->mclk)
+               return clk_prepare_enable(drvdata->mclk);
+
+       return 0;
+}
+
+static void am335x_tx48_shutdown(struct snd_pcm_substream *substream)
+{
+       struct snd_soc_pcm_runtime *rtd = substream->private_data;
+       struct snd_soc_card *soc_card = rtd->card;
+       struct am335x_tx48_drvdata *drvdata =
+               snd_soc_card_get_drvdata(soc_card);
+
+       if (drvdata->mclk)
+               clk_disable_unprepare(drvdata->mclk);
+}
+
+static int sgtl5000_hw_params(struct snd_pcm_substream *substream,
+       struct snd_pcm_hw_params *params)
+{
+       int ret;
+       struct snd_soc_pcm_runtime *rtd = substream->private_data;
+       struct snd_soc_dai *codec_dai = rtd->codec_dai;
+       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+       struct snd_soc_card *soc_card = rtd->codec->card;
+       struct am335x_tx48_drvdata *drvdata = snd_soc_card_get_drvdata(soc_card);
+       unsigned sysclk = drvdata->sysclk;
+       u32 dai_format;
+
+       if (!codec_dai) {
+               dev_err(rtd->dev->parent, "No CODEC DAI\n");
+               return -ENODEV;
+       }
+       if (!codec_dai->driver) {
+               dev_err(rtd->dev->parent, "No CODEC DAI driver\n");
+               return -ENODEV;
+       }
+
+       if (!cpu_dai) {
+               dev_err(rtd->dev->parent, "No CPU DAI\n");
+               return -ENODEV;
+       }
+       if (!cpu_dai->driver) {
+               dev_err(rtd->dev->parent, "No CPU DAI driver\n");
+               return -ENODEV;
+       }
+
+       dev_dbg(rtd->dev->parent, "%s: setting codec clock to %u.%03uMHz\n", __func__,
+               sysclk / 1000000, sysclk / 1000 % 1000);
+       /* Set SGTL5000's SYSCLK */
+       ret = snd_soc_dai_set_sysclk(codec_dai, SGTL5000_SYSCLK, sysclk, 0);
+       if (ret)
+               return ret;
+
+       dev_dbg(rtd->dev->parent, "%s: setting mcasp clock to %u.%03uMHz\n", __func__,
+               sysclk / 1000000, sysclk / 1000 % 1000);
+
+       /* set codec to master mode */
+       dai_format = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
+                       SND_SOC_DAIFMT_CBM_CFM;
+
+       /* set codec DAI configuration */
+       ret = snd_soc_dai_set_fmt(codec_dai, dai_format);
+       if (ret)
+               return ret;
+
+       /* set cpu DAI configuration */
+       ret = snd_soc_dai_set_fmt(cpu_dai, dai_format);
+       if (ret)
+               return ret;
+
+       return 0;
+}
+
+static struct snd_soc_ops am335x_tx48_ops = {
+       .startup = am335x_tx48_startup,
+       .shutdown = am335x_tx48_shutdown,
+       .hw_params = sgtl5000_hw_params,
+};
+
+/*
+ * The struct is used as place holder. It will be completely
+ * filled with data from dt node.
+ */
+static struct snd_soc_dai_link am335x_tx48_dai = {
+       .name = "SGTL5000",
+       .stream_name = "SGTL5000",
+       .codec_dai_name = "sgtl5000",
+       .ops = &am335x_tx48_ops,
+};
+
+static struct snd_soc_card am335x_tx48_soc_card = {
+       .owner = THIS_MODULE,
+       .dai_link = &am335x_tx48_dai,
+       .num_links = 1,
+};
+
+static const struct of_device_id am335x_tx48_dt_ids[] = {
+       { .compatible = "ti,am335x-tx48-audio", },
+       { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, am335x_tx48_dt_ids);
+
+static int am335x_tx48_probe(struct platform_device *pdev)
+{
+       int ret;
+       struct device_node *np = pdev->dev.of_node;
+       struct am335x_tx48_drvdata *drvdata;
+       struct device_node *codec_np;
+       struct device_node *mcasp_np;
+       struct platform_device *mcasp_pdev;
+       struct i2c_client *codec_dev;
+       struct clk *mclk;
+
+       codec_np = of_parse_phandle(np, "ti,audio-codec", 0);
+       if (!codec_np) {
+               dev_err(&pdev->dev, "codec handle missing in DT\n");
+               return -EINVAL;
+       }
+
+       mcasp_np = of_parse_phandle(np, "ti,mcasp-controller", 0);
+       if (!mcasp_np) {
+               dev_err(&pdev->dev, "mcasp handle missing in DT\n");
+               ret = -EINVAL;
+               goto err_codec;
+       }
+
+       codec_dev = of_find_i2c_device_by_node(codec_np);
+       if (!codec_dev) {
+               dev_err(&pdev->dev, "failed to find codec platform device\n");
+               ret = -EPROBE_DEFER;
+               goto err_mcasp;
+       }
+
+       mcasp_pdev = of_find_device_by_node(mcasp_np);
+       if (!mcasp_pdev) {
+               dev_err(&pdev->dev, "failed to find MCASP platform device\n");
+               ret = -EPROBE_DEFER;
+               goto err_mcasp;
+       }
+
+       am335x_tx48_dai.codec_of_node = codec_np;
+       am335x_tx48_dai.cpu_of_node = mcasp_np;
+       am335x_tx48_dai.platform_of_node = mcasp_np;
+
+       am335x_tx48_soc_card.dev = &pdev->dev;
+       ret = snd_soc_of_parse_card_name(&am335x_tx48_soc_card, "ti,model");
+       if (ret)
+               goto err_mcasp;
+
+       mclk = devm_clk_get(&codec_dev->dev, NULL);
+       if (IS_ERR(mclk)) {
+               ret = PTR_ERR(mclk);
+               if (ret != -EPROBE_DEFER)
+                       dev_err(&pdev->dev, "mclk not found: %d\n", ret);
+               goto err_mcasp;
+       }
+
+       drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL);
+       if (!drvdata) {
+               ret = -ENOMEM;
+               goto err_mcasp;
+       }
+       drvdata->mclk = mclk;
+       ret = of_property_read_u32(np, "ti,codec-clock-rate", &drvdata->sysclk);
+       if (ret < 0) {
+               if (!drvdata->mclk) {
+                       dev_err(&pdev->dev,
+                               "No clock or clock rate defined.\n");
+                       ret = -EINVAL;
+                       goto err_mcasp;
+               }
+               drvdata->sysclk = clk_get_rate(drvdata->mclk);
+       } else if (drvdata->mclk) {
+               unsigned int requested_rate = drvdata->sysclk;
+
+               ret = clk_set_rate(drvdata->mclk, drvdata->sysclk);
+               if (ret) {
+                       dev_err(&pdev->dev, "Could not set mclk rate to %u\n",
+                               drvdata->sysclk);
+                       goto err_mcasp;
+               }
+               drvdata->sysclk = clk_get_rate(drvdata->mclk);
+               if (drvdata->sysclk != requested_rate)
+                       dev_warn(&pdev->dev,
+                                "Could not get requested rate %u using %u\n",
+                                requested_rate, drvdata->sysclk);
+       }
+
+       snd_soc_card_set_drvdata(&am335x_tx48_soc_card, drvdata);
+       ret = devm_snd_soc_register_card(&pdev->dev, &am335x_tx48_soc_card);
+       if (ret) {
+               dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", ret);
+               goto err_mcasp;
+       }
+       dev_dbg(&pdev->dev, "Soundcard %s registered\n",
+               am335x_tx48_soc_card.name);
+       return 0;
+
+err_mcasp:
+       of_node_put(mcasp_np);
+
+err_codec:
+       of_node_put(codec_np);
+       return ret;
+}
+
+static struct platform_driver am335x_tx48_driver = {
+       .probe          = am335x_tx48_probe,
+       .driver         = {
+               .name   = "am335x_tx48",
+               .owner  = THIS_MODULE,
+               .of_match_table = am335x_tx48_dt_ids,
+       },
+};
+module_platform_driver(am335x_tx48_driver);
+
+MODULE_AUTHOR("Lothar Waßmann");
+MODULE_DESCRIPTION("Ka-Ro TX48 ASoC driver");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:am335x-tx48");