From 23b22e549ed6ede5b44a948824463daafb6745c3 Mon Sep 17 00:00:00 2001 From: Max Krummenacher Date: Wed, 10 Dec 2014 16:10:22 +0100 Subject: apalis-imx6: device-tree: add HW 1.0 tree rework the device-tree include structure to faciliate several device-tree's depending on HW version. Add a device tree imx6q-apalis-eval_v1_0.dtb for V1.0 HW, imx6q-apalis-eval.dtb working with V1.1 and newer HW. --- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/imx6q-apalis-eval.dts | 277 +------------------------ arch/arm/boot/dts/imx6q-apalis-eval_v1_0.dts | 29 +++ arch/arm/boot/dts/imx6qdl-apalis-eval.dtsi | 290 +++++++++++++++++++++++++++ arch/arm/boot/dts/imx6qdl-apalis.dtsi | 9 +- 5 files changed, 325 insertions(+), 281 deletions(-) create mode 100644 arch/arm/boot/dts/imx6q-apalis-eval_v1_0.dts create mode 100644 arch/arm/boot/dts/imx6qdl-apalis-eval.dtsi diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index 81fedd18003a..928dadc4761c 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -127,6 +127,7 @@ dtb-$(CONFIG_ARCH_MXC) += \ imx6dl-sabresd-ldo.dtb \ imx6dl-wandboard.dtb \ imx6q-apalis-eval.dtb \ + imx6q-apalis-eval_v1_0.dtb \ imx6q-arm2.dtb \ imx6q-nitrogen6x.dtb \ imx6q-nitrogen6_max.dtb \ diff --git a/arch/arm/boot/dts/imx6q-apalis-eval.dts b/arch/arm/boot/dts/imx6q-apalis-eval.dts index aa3df862454c..6ce793289114 100644 --- a/arch/arm/boot/dts/imx6q-apalis-eval.dts +++ b/arch/arm/boot/dts/imx6q-apalis-eval.dts @@ -16,284 +16,9 @@ #include #include "imx6q.dtsi" #include "imx6qdl-apalis.dtsi" +#include "imx6qdl-apalis-eval.dtsi" / { model = "Toradex Apalis iMX6Q on Apalis Evaluation Board"; compatible = "toradex,apalis_imx6q-eval", "toradex,apalis_imx6q", "fsl,imx6q"; - - aliases { - rtc0 = &rtc_i2c; - rtc1 = "/soc/aips-bus@02000000/snvs@020cc000/snvs-rtc-lp@34"; - }; - - 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; /* MMC1 8bit slot */ - mmc2 = &usdhc2; /* SD1 4bit slot */ - }; - - gpio-keys { - compatible = "gpio-keys"; - pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_gpio_keys>; - - wakeup { - label = "wakeup"; - gpios = <&gpio1 4 GPIO_ACTIVE_LOW>; - linux,code = ; - debounce-interval = <10>; - gpio-key,wakeup; - }; - }; - - pwmleds { - compatible = "pwm-leds"; - ledpwm1 { - label = "PWM1"; - pwms = <&pwm1 0 50000>; - max-brightness = <255>; - }; - - ledpwm2 { - label = "PWM2"; - pwms = <&pwm2 0 50000>; - max-brightness = <255>; - }; - - ledpwm3 { - label = "PWM3"; - 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"; -}; - -/* Apalis SPI1 */ -&ecspi1 { - status = "okay"; - - spidev0: spidev@1 { - compatible = "spidev"; - reg = <0>; - spi-max-frequency = <50000000>; - }; -}; - -/* Apalis SPI2 */ -&ecspi2 { - status = "okay"; - - spidev1: spidev@2 { - compatible = "spidev"; - reg = <0>; - spi-max-frequency = <50000000>; - }; -}; - -&flexcan1 { - status = "okay"; -}; - -&flexcan2 { - status = "okay"; -}; - -&hdmi_audio { - status = "okay"; -}; - -&hdmi_cec { - 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"; - - pcap@10 { - /* TouchRevolution Fusion 7 and 10 multi-touch controller */ - compatible = "touchrevolution,fusion-f0710a"; - reg = <0x10>; - gpios = <&gpio6 10 0 /* MXM-11, Pen down interrupt */ - &gpio6 9 0 /* MXM-13, Reset */ - >; - }; - - pcie-switch@58 { - compatible = "plx,pex8605"; - reg = <0x58>; - }; - - /* 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>; - }; -}; - -&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>; -}; - -&lcd { - status = "okay"; -}; - -&mxcfb1 { - status = "okay"; -}; - -&mxcfb2 { - status = "okay"; -}; - -&mxcfb3 { - status = "okay"; -}; - -&mxcfb4 { - status = "okay"; -}; - -&pcie { - reset-gpio = <&gpio1 2 0>; - reset-ep-gpio = <&gpio1 28 0>; - status = "okay"; -}; - -&pwm1 { - status = "okay"; -}; - -&pwm2 { - status = "okay"; -}; - -&pwm3 { - status = "okay"; -}; - -&pwm4 { - status = "okay"; -}; - -&sata { - status = "okay"; -}; - -&sound_hdmi { - status = "okay"; -}; - -&sound_spdif { - status = "okay"; -}; - -&spdif { - status = "okay"; -}; - -&uart1 { - status = "okay"; -}; - -&uart2 { - status = "okay"; -#if 0 - linux,rs485-enabled-at-boot-time; -#endif -}; - -&uart4 { - status = "okay"; -}; - -&uart5 { - status = "okay"; -}; - -&usbh1 { - status = "okay"; -}; - -&usbotg { - status = "okay"; -}; - -/* MMC1 */ -&usdhc1 { - status = "okay"; -}; - -/* SD1 */ -&usdhc2 { - status = "okay"; -}; - -&vdac { - status = "okay"; }; diff --git a/arch/arm/boot/dts/imx6q-apalis-eval_v1_0.dts b/arch/arm/boot/dts/imx6q-apalis-eval_v1_0.dts new file mode 100644 index 000000000000..277b8847f837 --- /dev/null +++ b/arch/arm/boot/dts/imx6q-apalis-eval_v1_0.dts @@ -0,0 +1,29 @@ +/* + * 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 +#include "imx6q.dtsi" +/* on HW V1.0 all RxD/TxD lines are routed in a DCE way, all control lines (RTS/...) + are then not routed as given in the module specification and thus unusable. + The following define configures the UARTs to RxD/TxD correctly */ +#define USE_UART_IN_DCE_MODE +#include "imx6qdl-apalis.dtsi" +#include "imx6qdl-apalis-eval.dtsi" + +/ { + model = "Toradex Apalis iMX6Q on Apalis Evaluation Board"; + compatible = "toradex,apalis_imx6q-eval", "toradex,apalis_imx6q", "fsl,imx6q"; +}; diff --git a/arch/arm/boot/dts/imx6qdl-apalis-eval.dtsi b/arch/arm/boot/dts/imx6qdl-apalis-eval.dtsi new file mode 100644 index 000000000000..6b5fee51c1d5 --- /dev/null +++ b/arch/arm/boot/dts/imx6qdl-apalis-eval.dtsi @@ -0,0 +1,290 @@ +/* + * 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 + */ + +/ { + aliases { + rtc0 = &rtc_i2c; + rtc1 = "/soc/aips-bus@02000000/snvs@020cc000/snvs-rtc-lp@34"; + }; + + 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; /* MMC1 8bit slot */ + mmc2 = &usdhc2; /* SD1 4bit slot */ + }; + + gpio-keys { + compatible = "gpio-keys"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_gpio_keys>; + + wakeup { + label = "wakeup"; + gpios = <&gpio1 4 GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <10>; + gpio-key,wakeup; + }; + }; + + pwmleds { + compatible = "pwm-leds"; + ledpwm1 { + label = "PWM1"; + pwms = <&pwm1 0 50000>; + max-brightness = <255>; + }; + + ledpwm2 { + label = "PWM2"; + pwms = <&pwm2 0 50000>; + max-brightness = <255>; + }; + + ledpwm3 { + label = "PWM3"; + 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"; +}; + +/* Apalis SPI1 */ +&ecspi1 { + status = "okay"; + + spidev0: spidev@1 { + compatible = "spidev"; + reg = <0>; + spi-max-frequency = <50000000>; + }; +}; + +/* Apalis SPI2 */ +&ecspi2 { + status = "okay"; + + spidev1: spidev@2 { + compatible = "spidev"; + reg = <0>; + spi-max-frequency = <50000000>; + }; +}; + +&flexcan1 { + status = "okay"; +}; + +&flexcan2 { + status = "okay"; +}; + +&hdmi_audio { + status = "okay"; +}; + +&hdmi_cec { + 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"; + + pcap@10 { + /* TouchRevolution Fusion 7 and 10 multi-touch controller */ + compatible = "touchrevolution,fusion-f0710a"; + reg = <0x10>; + gpios = <&gpio6 10 0 /* MXM-11, Pen down interrupt */ + &gpio6 9 0 /* MXM-13, Reset */ + >; + }; + + pcie-switch@58 { + compatible = "plx,pex8605"; + reg = <0x58>; + }; + + /* 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>; + }; +}; + +&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>; +}; + +&lcd { + status = "okay"; +}; + +&mxcfb1 { + status = "okay"; +}; + +&mxcfb2 { + status = "okay"; +}; + +&mxcfb3 { + status = "okay"; +}; + +&mxcfb4 { + status = "okay"; +}; + +&pcie { + reset-gpio = <&gpio1 2 0>; + reset-ep-gpio = <&gpio1 28 0>; + status = "okay"; +}; + +&pwm1 { + status = "okay"; +}; + +&pwm2 { + status = "okay"; +}; + +&pwm3 { + status = "okay"; +}; + +&pwm4 { + status = "okay"; +}; + +&sata { + status = "okay"; +}; + +&sound_hdmi { + status = "okay"; +}; + +&sound_spdif { + status = "okay"; +}; + +&spdif { + status = "okay"; +}; + +&uart1 { + status = "okay"; +}; + +&uart2 { + status = "okay"; +#if 0 + linux,rs485-enabled-at-boot-time; +#endif +}; + +&uart4 { + status = "okay"; +}; + +&uart5 { + status = "okay"; +}; + +&usbh1 { + status = "okay"; +}; + +&usbotg { + status = "okay"; +}; + +/* MMC1 */ +&usdhc1 { + status = "okay"; +}; + +/* SD1 */ +&usdhc2 { + status = "okay"; +}; + +&vdac { + status = "okay"; +}; diff --git a/arch/arm/boot/dts/imx6qdl-apalis.dtsi b/arch/arm/boot/dts/imx6qdl-apalis.dtsi index ade6d88a86a7..384bc7553b6a 100644 --- a/arch/arm/boot/dts/imx6qdl-apalis.dtsi +++ b/arch/arm/boot/dts/imx6qdl-apalis.dtsi @@ -773,10 +773,9 @@ status = "okay"; }; -#define USE_UART_IN_DTE_MODE /* on HW V1.1 */ &uart1 { pinctrl-names = "default"; -#ifdef USE_UART_IN_DTE_MODE +#ifndef USE_UART_IN_DCE_MODE pinctrl-0 = <&pinctrl_uart1_t1 &pinctrl_uart1_t2>; fsl,dte-mode; fsl,uart-has-rtscts; @@ -788,7 +787,7 @@ &uart2 { pinctrl-names = "default"; -#ifdef USE_UART_IN_DTE_MODE +#ifndef USE_UART_IN_DCE_MODE pinctrl-0 = <&pinctrl_uart2_t2>; fsl,dte-mode; fsl,uart-has-rtscts; @@ -800,7 +799,7 @@ &uart4 { pinctrl-names = "default"; -#ifdef USE_UART_IN_DTE_MODE +#ifndef USE_UART_IN_DCE_MODE pinctrl-0 = <&pinctrl_uart4_t1>; fsl,dte-mode; #else @@ -811,7 +810,7 @@ &uart5 { pinctrl-names = "default"; -#ifdef USE_UART_IN_DTE_MODE +#ifndef USE_UART_IN_DCE_MODE pinctrl-0 = <&pinctrl_uart5_t2>; fsl,dte-mode; #else -- cgit v1.2.3