diff options
author | Max Krummenacher <max.krummenacher@toradex.com> | 2014-08-14 19:10:00 +0200 |
---|---|---|
committer | Max Krummenacher <max.krummenacher@toradex.com> | 2014-08-18 16:38:46 +0200 |
commit | 991aad602c58739b04e1e7675eeec318bed22de5 (patch) | |
tree | 0e69eae095a8cb0f2937fb159cbd3c83581d18e9 /arch/arm/boot/dts | |
parent | 41555cf2bb3ed4de858eeb25a1c6d37f4607a76a (diff) |
colibri-t30: add inital device tree and defconfig
Diffstat (limited to 'arch/arm/boot/dts')
-rw-r--r-- | arch/arm/boot/dts/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts | 231 | ||||
-rw-r--r-- | arch/arm/boot/dts/imx6qdl-colibri.dtsi | 452 |
3 files changed, 684 insertions, 0 deletions
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index 189c2e622052..81fedd18003a 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -113,6 +113,7 @@ dtb-$(CONFIG_ARCH_MXC) += \ imx53-mba53.dtb \ imx53-qsb.dtb \ imx53-smd.dtb \ + imx6dl-colibri-eval-v3.dtb \ imx6dl-nit6xlite.dtb \ imx6dl-nitrogen6x.dtb \ imx6dl-nitrogen6_max.dtb \ diff --git a/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts b/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts new file mode 100644 index 000000000000..df03843c4d35 --- /dev/null +++ b/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts @@ -0,0 +1,231 @@ +/* + * Copyright 2014 Toradex AG + * Copyright 2012 Freescale Semiconductor, Inc. + * Copyright 2011 Linaro Ltd. + * + * 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 or later at the following locations: + * + * http://www.opensource.org/licenses/gpl-license.html + * http://www.gnu.org/copyleft/gpl.html + */ + +/dts-v1/; + +#include <dt-bindings/interrupt-controller/irq.h> +#include "imx6dl.dtsi" +#include "imx6qdl-colibri.dtsi" + +/ { + model = "Toradex Colibri iMX6DL/S on Colibri Evaluation Board V3"; + compatible = "toradex,colibri_imx6dl-eval", "toradex,colibri_imx6dl", "fsl,imx6dl"; + + aliases { + rtc0 = &rtc_i2c; + rtc1 = &snvs_rtc; + }; + + aliases { + /* the following, together with kernel patches, forces a fixed assignment + between device id and usdhc controller */ + /* i.e. the eMMC on usdhc3 will be /dev/mmcblk0 */ + mmc0 = &usdhc3; /* eMMC */ + mmc1 = &usdhc1; /* MMC 4bit slot */ + }; + + gpio-keys { + compatible = "gpio-keys"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_gpio_keys>; + + power { + label = "Power"; + gpios = <&gpio2 22 GPIO_ACTIVE_LOW>; + linux,code = <KEY_POWER>; + debounce-interval = <10>; + gpio-key,wakeup; + }; + }; + + pwmleds { + compatible = "pwm-leds"; + ledpwm2 { + label = "PWM<B>"; + pwms = <&pwm1 0 50000>; + max-brightness = <255>; + }; + + ledpwm3 { + label = "PWM<C>"; + pwms = <&pwm2 0 50000>; + max-brightness = <255>; + }; + + ledpwm4 { + label = "PWM<D>"; + pwms = <&pwm3 0 50000>; + max-brightness = <255>; + }; + }; + + regulators { + reg_usb_otg_vbus: usb_otg_vbus { + status = "okay"; + }; + + reg_usb_host_vbus: usb_host_vbus { + status = "okay"; + }; + }; +}; + +&backlight { +#if 0 + /* PWM polarity: 1 is brightest */ + brightness-levels = <0 4 8 16 32 64 128 255>; + default-brightness-level = <6>; +#else + /* PWM plarity: 0 is brightest */ + brightness-levels = <0 74 128 164 192 210 255>; + default-brightness-level = <1>; +#endif + status = "okay"; +}; + +/* Colibri SPI */ +&ecspi1 { + status = "okay"; + + spidev0: spidev@1 { + compatible = "spidev"; + reg = <0>; + spi-max-frequency = <50000000>; + }; +}; + +&hdmi_audio { + status = "okay"; +}; + +&hdmi_core { + status = "okay"; +}; + +&hdmi_video { + status = "okay"; +}; + +/* + * GEN1_I2C: I2C1_SDA/SCL on MXM3 pin 209/211 (e.g. RTC on carrier + * board) + */ +&i2c1 { + status = "okay"; +#if 0 /* not standard pinout, disable PWM<B>, PWM<C> + pcap@10 { + /* TouchRevolution Fusion 7 and 10 multi-touch controller */ + compatible = "touchrevolution,fusion-f0710a"; + reg = <0x10>; + gpios = <&gpio1 9 0 /* SODIMM-28, Pen down interrupt */ + &gpio2 10 0 /* SODIMM-30, Reset */ + >; + }; +#endif + /* M41T0M6 real time clock on carrier board */ + rtc_i2c: rtc@68 { + compatible = "st,m41t00"; + reg = <0x68>; + }; +}; + +/* + * GEN2_I2C, CAM: I2C3_SDA/SCL on MXM3 pin 201/203 (unused) + */ +&i2c3 { + status = "okay"; +}; + +/* + * DDC_I2C: I2C2_SDA/SCL on MXM3 pin 205/207 + */ +&i2cddc { + status = "okay"; + + hdmi: edid@50 { + compatible = "fsl,imx6-hdmi-i2c"; + reg = <0x50>; + }; +}; + +#if 0 /* TODO */ +&iomuxc { + /* + * Mux the Apalis GPIOs, GPIO7 used for PCIe reset, + * GPIO5, 6 used by optional fusion_F0710A kernel module + */ + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_apalis_gpio1 &pinctrl_apalis_gpio2 + &pinctrl_apalis_gpio3 &pinctrl_apalis_gpio4 + &pinctrl_apalis_gpio5 &pinctrl_apalis_gpio6 + &pinctrl_apalis_gpio7 &pinctrl_apalis_gpio8>; +}; +#endif +&lcd { + status = "okay"; +}; + +&mxcfb1 { + status = "okay"; +}; + +&mxcfb2 { + status = "okay"; +}; + +&pwm1 { + status = "okay"; +}; + +&pwm2 { + status = "okay"; +}; + +&pwm3 { + status = "okay"; +}; + +&pwm4 { + status = "okay"; +}; + +&sound_hdmi { + status = "okay"; +}; + +&uart1 { + status = "okay"; +}; + +&uart2 { + status = "okay"; +}; + +&uart3 { + status = "okay"; +}; + +&usbh1 { + status = "okay"; +}; + +#if 0 /* TODO */ +&usbotg { + status = "okay"; +}; +#endif +/* MMC */ +&usdhc1 { + status = "okay"; +}; + diff --git a/arch/arm/boot/dts/imx6qdl-colibri.dtsi b/arch/arm/boot/dts/imx6qdl-colibri.dtsi new file mode 100644 index 000000000000..1efcd2620584 --- /dev/null +++ b/arch/arm/boot/dts/imx6qdl-colibri.dtsi @@ -0,0 +1,452 @@ +/* + * Copyright 2014 Toradex AG + * Copyright 2012 Freescale Semiconductor, Inc. + * Copyright 2011 Linaro Ltd. + * + * 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 or later at the following locations: + * + * http://www.opensource.org/licenses/gpl-license.html + * http://www.gnu.org/copyleft/gpl.html + */ +#include <dt-bindings/input/input.h> + +/ { + model = "Toradex Colibri iMX6DL/S Module"; + compatible = "toradex,colibri_imx6dl", "fsl,imx6dl"; + + aliases { + mxcfb0 = &mxcfb1; + mxcfb1 = &mxcfb2; + }; + + backlight: backlight { + compatible = "pwm-backlight"; + pwms = <&pwm1 0 5000000>; + status = "disabled"; + }; + + clocks { + clk24m: clk24m { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + }; + }; + +/* + * DDC_I2C: I2C2_SDA/SCL on MXM3 pin 205/207 + */ + i2cddc: i2c@0 { + compatible = "i2c-gpio"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c_ddc>; + gpios = <&gpio4 13 0 /* sda */ + &gpio4 12 0 /* scl */ + >; + i2c-gpio,delay-us = <2>; /* ~100 kHz */ + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + }; + + lcd: lcd@0 { + compatible = "fsl,lcd"; + ipu_id = <0>; + disp_id = <1>; + default_ifmt = "RGB666"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ipu1_6>; + status = "disabled"; + }; + + memory { + reg = <0x10000000 0x40000000>; + }; + + mxcfb1: fb@0 { + compatible = "fsl,mxc_sdc_fb"; + disp_dev = "hdmi"; + interface_pix_fmt = "RGB24"; + mode_str ="1920x1080M@60"; +/* default_bpp = <16>;*/ + default_bpp = <24>; + int_clk = <0>; + late_init = <0>; + status = "disabled"; + }; + + mxcfb2: fb@1 { + compatible = "fsl,mxc_sdc_fb"; + disp_dev = "lcd"; + interface_pix_fmt = "RGB565"; + mode_str ="EDT-WVGA"; + default_bpp = <16>; + int_clk = <0>; + late_init = <0>; + status = "disabled"; + }; + + regulators { + compatible = "simple-bus"; + + reg_1p8v: 1p8v { + compatible = "regulator-fixed"; + regulator-name = "1P8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + + reg_2p5v: 2p5v { + compatible = "regulator-fixed"; + regulator-name = "2P5V"; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <2500000>; + regulator-always-on; + }; + + reg_3p3v: 3p3v { + compatible = "regulator-fixed"; + regulator-name = "3P3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; +#if 0 //TODO + reg_usb_otg_vbus: usb_otg_vbus { + compatible = "regulator-fixed"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_regulator_usbotg_pwr>; + regulator-name = "usb_otg_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&gpio3 22 0>; + enable-active-high; + status = "disabled"; + }; +#endif + + reg_usb_host_vbus: usb_host_vbus { + compatible = "regulator-fixed"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_regulator_usbh_pwr>; + regulator-name = "usb_host_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&gpio3 31 0>; + enable-active-high; + status = "disabled"; + }; + }; + + sound { + compatible = "fsl,imx6q-apalis-sgtl5000", + "fsl,imx-audio-sgtl5000"; + model = "imx6q-apalis-sgtl5000"; + ssi-controller = <&ssi1>; + audio-codec = <&codec>; + audio-routing = + "MIC_IN", "Mic Jack", + "Mic Jack", "Mic Bias", + "Headphone Jack", "HP_OUT"; + mux-int-port = <1>; + mux-ext-port = <5>; + }; + + sound_hdmi: sound-hdmi { + compatible = "fsl,imx6q-audio-hdmi", + "fsl,imx-audio-hdmi"; + model = "imx-audio-hdmi"; + hdmi-controller = <&hdmi_audio>; + status = "disabled"; + }; + + sound_spdif: sound-spdif { + compatible = "fsl,imx-audio-spdif"; + model = "imx-spdif"; + spdif-controller = <&spdif>; + spdif-out; + spdif-in; + status = "disabled"; + }; + + v4l2_out { + compatible = "fsl,mxc_v4l2_output"; + status = "okay"; + }; +}; + +&audmux { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_audmux_5 &pinctrl_audmux_mclk_2>; + status = "okay"; +}; + +/* Colibri SPI */ +&ecspi4 { + fsl,spi-num-chipselects = <1>; + cs-gpios = <&gpio5 2 0>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ecspi1_3 &pinctrl_spi_cs1>; + status = "disabled"; +}; + +&fec { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_enet_5>; + phy-mode = "rmii"; + status = "okay"; +}; + +/* Colibri SDDIMM 55/63 */ +&flexcan1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_flexcan1_3>; + status = "disabled"; +}; + +/* Colibri SODOMM 178/188 */ +&flexcan2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_flexcan2_1>; + status = "disabled"; +}; + +&hdmi_audio { + status = "okay"; +}; + +&hdmi_core { + ipu_id = <0>; + disp_id = <0>; + status = "disabled"; +}; + +&hdmi_video { + fsl,phy_reg_vlev = <0x0294>; + fsl,phy_reg_cksymtx = <0x800d>; + status = "disabled"; +}; + +&i2c2 { + clock-frequency = <100000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c2_2>; + status = "okay"; + + codec: sgtl5000@0a { + compatible = "fsl,sgtl5000"; + reg = <0x0a>; + clocks = <&clks 201>; + VDDA-supply = <®_2p5v>; + VDDIO-supply = <®_3p3v>; + }; + + /* STMPE811 touch screen controller */ + stmpe811@41 { + compatible = "st,stmpe811"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_touch_int_1>; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x41>; + interrupts = <20 IRQ_TYPE_LEVEL_LOW>; + interrupt-parent = <&gpio6>; + interrupt-controller; + id = <0>; + blocks = <0x5>; + irq-trigger = <0x1>; + stmpe_touchscreen { + compatible = "st,stmpe-ts"; + reg = <0>; + /* 3.25 MHz ADC clock speed */ + st,adc-freq = <1>; + /* 8 sample average control */ + st,ave-ctrl = <3>; + /* 7 length fractional part in z */ + st,fraction-z = <7>; + /* + * 50 mA typical 80 mA max touchscreen drivers + * current limit value + */ + st,i-drive = <1>; + /* 12-bit ADC */ + st,mod-12b = <1>; + /* internal ADC reference */ + st,ref-sel = <0>; + /* ADC converstion time: 80 clocks */ + st,sample-time = <4>; + /* 1 ms panel driver settling time */ + st,settling = <3>; + /* 5 ms touch detect interrupt delay */ + st,touch-det-delay = <5>; + }; + }; +}; + +/* + * I2C: I2C3_SDA/SCL on SODIMM pin 194/196 (e.g. RTC on carrier + * board) + */ +&i2c3 { + clock-frequency = <100000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c3_2>; + status = "disabled"; +}; + +/* PAD Ctrl Values for Common Settings */ +#define PAD_CTRL_HYS_PU 0x1b0b0 /*(PAD_CTL_HYS | PAD_CTL_PUS_100K_UP | PAD_CTL_PUE | PAD_CTL_PKE | PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm)*/ +#define PAD_CTRL_HYS_PD 0x130b0 /*(PAD_CTL_HYS | PAD_CTL_PUE | PAD_CTL_PKE | PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm)*/ +#define PAD_CTRL_PU_22k 0x0f058 /*(PAD_CTL_PUS_22K_UP | PAD_CTL_PUE | PAD_CTL_PKE | PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm)*/ +#define PAD_CTRL_NO 0x80000000 + +//TODO +&iomuxc { + imx6dl-colibri { + pinctrl_audmux_mclk_2: audmux_mclk-2 { + fsl,pins = < + MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x000b0 /* SGTL5000 sys_mclk */ + >; + }; + pinctrl_gpio_keys: gpio_keys { + fsl,pins = < + MX6QDL_PAD_EIM_A16__GPIO2_IO22 PAD_CTRL_HYS_PU /* Power Button */ + >; + }; + pinctrl_i2c_ddc: i2c_ddc { + fsl,pins = < + MX6QDL_PAD_EIM_EB2__GPIO2_IO30 PAD_CTRL_HYS_PU /* DDC bitbang */ + MX6QDL_PAD_EIM_D16__GPIO3_IO16 PAD_CTRL_HYS_PU /* DDC bitbang */ + >; + }; + pinctrl_mmc_cd: gpio_mmc_cd { + fsl,pins = < + MX6QDL_PAD_NANDF_D5__GPIO2_IO05 PAD_CTRL_NO /* MMC1 CD */ + >; + }; + pinctrl_regulator_usbh_pwr: gpio_regulator_usbh_pwr { + fsl,pins = < + MX6QDL_PAD_EIM_D31__GPIO3_IO31 PAD_CTRL_PU_22k /* USBH_EN */ + >; + }; +#if 0 //TODO + pinctrl_regulator_usbotg_pwr: gpio_regulator_usbotg_pwr { + fsl,pins = < + MX6QDL_PAD_EIM_D22__GPIO3_IO22 PAD_CTRL_PU_22k /* USBO power en */ + >; + }; +#endif + pinctrl_spi_cs1: spi_cs1 { + fsl,pins = < + MX6QDL_PAD_EIM_A25__GPIO5_IO02 PAD_CTRL_NO /* SPI cs */ + >; + }; + pinctrl_touch_int_1: touch_int-1 { + fsl,pins = < + MX6QDL_PAD_RGMII_TD0__GPIO6_IO20 PAD_CTRL_HYS_PU /* STMPE811 interrupt */ + >; + }; + }; +}; + +&pwm1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pwm3_1>; + status = "disabled"; +}; + +&pwm2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pwm1_3>; + status = "disabled"; +}; + +&pwm3 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pwm4_1>; + status = "disabled"; +}; + +&pwm4 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pwm2_2>; + status = "disabled"; +}; + +/* S/PDIF out on SODIMM137 */ +&spdif { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_spdif_3>; + status = "disabled"; +}; + +&ssi1 { + fsl,mode = "i2s-slave"; + status = "okay"; +}; + +/* UART A */ +&uart1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart1_3 &pinctrl_uart1_4>; + fsl,dte-mode; + fsl,uart-has-rtscts; + status = "disabled"; +}; + +/* UART B */ +&uart2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart2_5>; + fsl,dte-mode; + fsl,uart-has-rtscts; + status = "disabled"; +}; + +/* UART_C */ +&uart3 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart3_3>; + fsl,dte-mode; + status = "disabled"; +}; + +&usbh1 { + vbus-supply = <®_usb_host_vbus>; + status = "disabled"; +}; + +#if 0 //TODO +&usbotg { + vbus-supply = <®_usb_otg_vbus>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usbotg_2>; + disable-over-current; + status = "disabled"; +}; +#endif + +/* MMC */ +&usdhc1 { + label = "MMC1"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usdhc1_1 &pinctrl_mmc_cd>; + cd-gpios = <&gpio4 20 0>; + vmmc-supply = <®_3p3v>; + bus-width = <8>; + no-1-8-v; + status = "disabled"; +}; + +/* eMMC */ +&usdhc3 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usdhc3_1>; + vmmc-supply = <®_3p3v>; + bus-width = <8>; + non-removable; + status = "okay"; +}; |