From 2927fd34b6cfc68e3db459cceebdaa9f6fea664d Mon Sep 17 00:00:00 2001 From: Max Krummenacher Date: Thu, 16 Apr 2015 13:29:03 +0200 Subject: colibri_imx6: add initial camera/ACM device tree --- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/imx6dl-colibri-cam-eval-v3.dts | 285 +++++++++++++++++++++++ arch/arm/boot/dts/imx6qdl-colibri.dtsi | 19 ++ 3 files changed, 305 insertions(+) create mode 100644 arch/arm/boot/dts/imx6dl-colibri-cam-eval-v3.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index fb94e06491de..de1a895b5603 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-cam-eval-v3.dtb \ imx6dl-colibri-eval-v3.dtb \ imx6dl-nit6xlite.dtb \ imx6dl-nitrogen6x.dtb \ diff --git a/arch/arm/boot/dts/imx6dl-colibri-cam-eval-v3.dts b/arch/arm/boot/dts/imx6dl-colibri-cam-eval-v3.dts new file mode 100644 index 000000000000..8c8e443afe98 --- /dev/null +++ b/arch/arm/boot/dts/imx6dl-colibri-cam-eval-v3.dts @@ -0,0 +1,285 @@ +/* + * 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 "imx6dl.dtsi" +#include "imx6qdl-colibri.dtsi" + +/* Add the following define if you connect a Fusion display with a capacitive + touch controller */ +/* #define PCAP */ + +/ { + 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 = "/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; /* MMC 4bit slot */ + }; + + gpio-keys { + compatible = "gpio-keys"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_gpio_keys>; + + wakeup { + label = "Wakeup"; + gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>; + linux,code = ; + debounce-interval = <10>; + gpio-key,wakeup; + }; + }; + +#ifndef PCAP + pwmleds { + compatible = "pwm-leds"; + ledpwm2 { + label = "PWM"; + pwms = <&pwm1 0 50000>; + max-brightness = <255>; + }; + + ledpwm3 { + label = "PWM"; + pwms = <&pwm4 0 50000>; + max-brightness = <255>; + }; + }; +#endif + + regulators { + reg_usb_host_vbus: usb_host_vbus { + status = "okay"; + }; + }; + + v4l2_cap_0 { + compatible = "fsl,imx6q-v4l2-capture"; + ipu_id = <0>; + csi_id = <1>; + mclk_source = <0>; + status = "okay"; + }; +}; + +/* Colibri SPI */ +&ecspi4 { + 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"; +}; + +/* + * I2C: I2C3_SDA/SCL on SODIMM pin 194/196 (e.g. RTC on carrier + * board) + */ +&i2c3 { + status = "okay"; +#ifdef PCAP /* not standard pinout, disable PWM, PWM */ + pcap@10 { + /* TouchRevolution Fusion 7 and 10 multi-touch controller */ + compatible = "touchrevolution,fusion-f0710a"; + reg = <0x10>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pcap_1>; + 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>; + }; + /* Video ADC on Analog Camera Module */ + adv7180: adv7180@21 { + compatible = "adv,adv7180"; + reg = <0x21>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ipu1_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 = <1>; + mclk = <24000000>; + mclk_source = <0>; + cvbs = <1>; + }; + max9526: max9526@20 { + compatible = "maxim,max9526"; + reg = <0x20>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ipu1_t2>; + clocks = <&clks 200>; + clock-names = "csi_mclk"; + DVDDIO-supply = <®_3p3v>; /* 3.3v */ + AVDD-suplsply = <®_3p3v>; /* 1.8v */ + DVDD-supply = <®_3p3v>; /* 1.8v */ + csi_id = <1>; + mclk = <24000000>; + mclk_source = <0>; + 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 all pins which are unused to be GPIOs + * so they are ready for export to user space + */ + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_weim_gpio_1 &pinctrl_weim_gpio_2 + &pinctrl_weim_gpio_3 &pinctrl_weim_gpio_4 + &pinctrl_weim_gpio_5 &pinctrl_weim_gpio_6 + &pinctrl_gpio_1 + &pinctrl_gpio_2 + &pinctrl_usbh_oc_1 &pinctrl_usbc_id_1 + &pinctrl_usbc_det_1>; + + gpio { + pinctrl_pcap_1: pcap-1 { + fsl,pins = < + MX6QDL_PAD_GPIO_9__GPIO1_IO09 PAD_CTRL_HYS_PD /* SODIMM 28 */ + MX6QDL_PAD_SD4_DAT2__GPIO2_IO10 PAD_CTRL_HYS_PD /* SODIMM 30 */ + >; + }; + }; +}; + +&lcd { + status = "okay"; +}; + +&mxcfb1 { + status = "okay"; +}; + +&mxcfb2 { + status = "okay"; +}; + +#ifndef PCAP +&pwm1 { + status = "okay"; +}; +#endif + +#ifndef PCAP +&pwm4 { + status = "okay"; +}; +#endif + +&sound_hdmi { + status = "okay"; +}; + +&uart1 { + status = "okay"; +}; + +&uart2 { + status = "okay"; +#if 0 + linux,rs485-enabled-at-boot-time; +#endif +}; + +&uart3 { + status = "okay"; +}; + +&usbh1 { + status = "okay"; +}; + +&usbotg { + status = "okay"; +}; + +/* MMC */ +&usdhc1 { + status = "okay"; +}; + +&weim { + status = "okay"; + /* weim memory map: 32MB on CS0, 32MB on CS1, 32MB on CS2 */ + ranges = <0 0 0x08000000 0x02000000 + 1 0 0x0a000000 0x02000000 + 2 0 0x0c000000 0x02000000>; + /* SRAM on CS0 */ + sram@0,0 { + compatible = "cypress,cy7c1019dv33-10zsxi, mtd-ram"; + reg = <0 0 0x00010000>; + #address-cells = <1>; + #size-cells = <1>; + bank-width = <2>; + fsl,weim-cs-timing = <0x00010081 0x00000000 0x04000000 + 0x00000000 0x04000040 0x00000000>; + }; + /* SRAM on CS1 */ + sram@1,0 { + compatible = "cypress,cy7c1019dv33-10zsxi, mtd-ram"; + reg = <1 0 0x00010000>; + #address-cells = <1>; + #size-cells = <1>; + bank-width = <2>; + fsl,weim-cs-timing = <0x00010081 0x00000000 0x04000000 + 0x00000000 0x04000040 0x00000000>; + }; +}; diff --git a/arch/arm/boot/dts/imx6qdl-colibri.dtsi b/arch/arm/boot/dts/imx6qdl-colibri.dtsi index 60d5547da28c..02dd4a91b9fb 100644 --- a/arch/arm/boot/dts/imx6qdl-colibri.dtsi +++ b/arch/arm/boot/dts/imx6qdl-colibri.dtsi @@ -509,6 +509,25 @@ MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0x61 >; }; + pinctrl_ipu1_t2: ipu1grp-t2 { /* parallel camera */ + fsl,pins = < + MX6QDL_PAD_EIM_A17__IPU1_CSI1_DATA12 0xb0b1 + MX6QDL_PAD_EIM_A18__IPU1_CSI1_DATA13 0xb0b1 + MX6QDL_PAD_EIM_A19__IPU1_CSI1_DATA14 0xb0b1 + MX6QDL_PAD_EIM_A20__IPU1_CSI1_DATA15 0xb0b1 + MX6QDL_PAD_EIM_A21__IPU1_CSI1_DATA16 0xb0b1 + MX6QDL_PAD_EIM_A22__IPU1_CSI1_DATA17 0xb0b1 + MX6QDL_PAD_EIM_A23__IPU1_CSI1_DATA18 0xb0b1 + MX6QDL_PAD_EIM_A24__IPU1_CSI1_DATA19 0xb0b1 + MX6QDL_PAD_EIM_D17__IPU1_CSI1_PIXCLK 0xb0b1 + MX6QDL_PAD_EIM_EB3__IPU1_CSI1_HSYNC 0xb0b1 + MX6QDL_PAD_EIM_D29__IPU1_CSI1_VSYNC 0xb0b1 + MX6QDL_PAD_NANDF_CS2__CCM_CLKO2 0x00b0 /* CAM sys_mclk */ + + MX6QDL_PAD_SD4_DAT1__GPIO2_IO09 0x40 /* disabled PWM pins on camera IF */ + MX6QDL_PAD_GPIO_1__GPIO1_IO01 0x40 + >; + }; }; spdif { -- cgit v1.2.3