From 0687dcf5b99de392b62f499647d1e6ff88f54dd1 Mon Sep 17 00:00:00 2001 From: Max Krummenacher Date: Fri, 7 Aug 2015 16:40:31 +0200 Subject: Apalis iMX6: add device tree for the Ixora board The Ixora carrier board is mostly a subset off what is on the evaluation board. The commits adds a device tree with the following changes to the eval board one: - I2C EEPROM added - LEDs through led sysfs interface added - MMC 8bit interface disabled - Reset line to PCIe switch and PCIe switch removed - Video DAC to Analog RGB output disabled - spidev on SPI2 removed - mipi camera support disabled/removed --- arch/arm/boot/dts/Makefile | 2 + arch/arm/boot/dts/imx6q-apalis-ixora.dts | 24 ++ arch/arm/boot/dts/imx6q-apalis-ixora_v1_0.dts | 29 +++ arch/arm/boot/dts/imx6qdl-apalis-ixora.dtsi | 357 ++++++++++++++++++++++++++ 4 files changed, 412 insertions(+) create mode 100644 arch/arm/boot/dts/imx6q-apalis-ixora.dts create mode 100644 arch/arm/boot/dts/imx6q-apalis-ixora_v1_0.dts create mode 100644 arch/arm/boot/dts/imx6qdl-apalis-ixora.dtsi diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index de1a895b5603..ef7e5253fcaf 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -131,6 +131,8 @@ dtb-$(CONFIG_ARCH_MXC) += \ imx6q-apalis-eval.dtb \ imx6q-apalis-eval_v1_0.dtb \ imx6q-arm2.dtb \ + imx6q-apalis-ixora.dtb \ + imx6q-apalis-ixora_v1_0.dtb \ imx6q-nitrogen6x.dtb \ imx6q-nitrogen6_max.dtb \ imx6q-nitrogen6_mtp.dtb \ diff --git a/arch/arm/boot/dts/imx6q-apalis-ixora.dts b/arch/arm/boot/dts/imx6q-apalis-ixora.dts new file mode 100644 index 000000000000..80a1087022a3 --- /dev/null +++ b/arch/arm/boot/dts/imx6q-apalis-ixora.dts @@ -0,0 +1,24 @@ +/* + * 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" +#include "imx6qdl-apalis.dtsi" +#include "imx6qdl-apalis-ixora.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/imx6q-apalis-ixora_v1_0.dts b/arch/arm/boot/dts/imx6q-apalis-ixora_v1_0.dts new file mode 100644 index 000000000000..498343eb6878 --- /dev/null +++ b/arch/arm/boot/dts/imx6q-apalis-ixora_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-ixora.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-ixora.dtsi b/arch/arm/boot/dts/imx6qdl-apalis-ixora.dtsi new file mode 100644 index 000000000000..ba7cf68afb3c --- /dev/null +++ b/arch/arm/boot/dts/imx6qdl-apalis-ixora.dtsi @@ -0,0 +1,357 @@ +/* + * 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 */ + 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; + }; + }; + + leds { + compatible = "gpio-leds"; + + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_leds_ixora>; + + led4-green { + label = "LED_4_GREEN"; + gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>; + }; + + led4-red { + label = "LED_4_RED"; + gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>; + }; + + led5-green { + label = "LED_5_GREEN"; + gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>; + }; + + led5-red { + label = "LED_5_RED"; + gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>; + }; + }; + + 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"; + }; + }; + + v4l2_cap_0 { + compatible = "fsl,imx6q-v4l2-capture"; + ipu_id = <0>; + csi_id = <0>; + mclk_source = <0>; + status = "okay"; + }; + +#if 0 + v4l2_out { + compatible = "fsl,mxc_v4l2_output"; + status = "okay"; + }; +#endif +}; + +&backlight { +#if 0 /* PWM polarity: if 1 is brightest */ +#if 0 /* Fusion 7 needs 10kHz PWM frequency */ + pwms = <&pwm4 0 100000>; +#endif + brightness-levels = <0 4 8 16 32 64 128 255>; + default-brightness-level = <6>; +#else /* PWM plarity: if 0 is brightest */ + brightness-levels = <0 127 191 223 239 247 251 255>; + default-brightness-level = <1>; +#endif + status = "okay"; +}; + +/* Apalis SPI1 */ +&ecspi1 { + status = "okay"; + + spidev0: spidev@1 { + 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 */ + >; + }; + + cat24c02@50 { + compatible = "atmel,24c02"; + reg = <0x50>; + }; + + /* 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"; + + /* Video ADC on Analog Camera Module */ + adv7180: adv7180@21 { + compatible = "adv,adv7180"; + reg = <0x21>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ipu1_t2 &pinctrl_cam_mclk_t2>; + clocks = <&clks 200>; + clock-names = "csi_mclk"; + DOVDD-supply = <®_3p3v>; /* 3.3v */ + AVDD-supply = <®_3p3v>; /* 1.8v */ + DVDD-supply = <®_3p3v>; /* 1.8v */ + PVDD-supply = <®_3p3v>; /* 1.8v */ + csi_id = <0>; + mclk = <24000000>; + mclk_source = <1>; + cvbs = <1>; + }; + + max9526: max9526@20 { + compatible = "maxim,max9526"; + reg = <0x20>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ipu1_t2 &pinctrl_cam_mclk_t2>; + clocks = <&clks 200>; + clock-names = "csi_mclk"; + DVDDIO-supply = <®_3p3v>; /* 3.3v */ + AVDD-supply = <®_3p3v>; /* 1.8v */ + DVDD-supply = <®_3p3v>; /* 1.8v */ + csi_id = <0>; + mclk = <24000000>; + mclk_source = <1>; + cvbs = <1>; + }; +}; + +/* + * 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>; + + leds_ixora { + pinctrl_leds_ixora: leds-ixora { + fsl,pins = < + MX6QDL_PAD_SD1_DAT1__GPIO1_IO17 PAD_CTRL_HYS_PU + MX6QDL_PAD_SD1_DAT3__GPIO1_IO21 PAD_CTRL_HYS_PU + MX6QDL_PAD_NANDF_D1__GPIO2_IO01 PAD_CTRL_HYS_PU + MX6QDL_PAD_NANDF_D2__GPIO2_IO02 PAD_CTRL_HYS_PU + >; + }; + }; +}; + +&lcd { + status = "okay"; +}; + +&mxcfb1 { + status = "okay"; +}; + +&mxcfb2 { + status = "okay"; +}; + +&mxcfb3 { + status = "okay"; +}; + +&mxcfb4 { + status = "okay"; +}; + +&pcie { + 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"; +}; + +/* SD1 */ +&usdhc2 { + status = "okay"; +}; -- cgit v1.2.3