0001 /*
0002 * Copyright (C) 2015 Lucas Stach <kernel@pengutronix.de>
0003 *
0004 * This file is dual-licensed: you can use it either under the terms
0005 * of the GPL or the X11 license, at your option. Note that this dual
0006 * licensing only applies to this file, and not this project as a
0007 * whole.
0008 *
0009 * a) This file is free software; you can redistribute it and/or
0010 * modify it under the terms of the GNU General Public License
0011 * version 2 as published by the Free Software Foundation.
0012 *
0013 * This file is distributed in the hope that it will be useful,
0014 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0016 * GNU General Public License for more details.
0017 *
0018 * Or, alternatively,
0019 *
0020 * b) Permission is hereby granted, free of charge, to any person
0021 * obtaining a copy of this software and associated documentation
0022 * files (the "Software"), to deal in the Software without
0023 * restriction, including without limitation the rights to use,
0024 * copy, modify, merge, publish, distribute, sublicense, and/or
0025 * sell copies of the Software, and to permit persons to whom the
0026 * Software is furnished to do so, subject to the following
0027 * conditions:
0028 *
0029 * The above copyright notice and this permission notice shall be
0030 * included in all copies or substantial portions of the Software.
0031 *
0032 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
0033 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
0034 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
0035 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
0036 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
0037 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
0038 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
0039 * OTHER DEALINGS IN THE SOFTWARE.
0040 */
0041
0042 /dts-v1/;
0043
0044 #include "imx6q.dtsi"
0045 #include "imx6qdl-sr-som.dtsi"
0046 #include "imx6qdl-sr-som-brcm.dtsi"
0047
0048 / {
0049 model = "Auvidea H100";
0050 compatible = "auvidea,h100", "fsl,imx6q";
0051
0052 /* Will be filled by the bootloader */
0053 memory@10000000 {
0054 device_type = "memory";
0055 reg = <0x10000000 0>;
0056 };
0057
0058 aliases {
0059 rtc0 = &rtc;
0060 rtc1 = &snvs_rtc;
0061 };
0062
0063 chosen {
0064 stdout-path = &uart2;
0065 };
0066
0067 hdmi_osc: hdmi-osc {
0068 compatible = "fixed-clock";
0069 clock-output-names = "hdmi-osc";
0070 clock-frequency = <27000000>;
0071 #clock-cells = <0>;
0072 };
0073
0074 leds {
0075 compatible = "gpio-leds";
0076 pinctrl-names = "default";
0077 pinctrl-0 = <&pinctrl_h100_leds>;
0078
0079 led0: power {
0080 label = "power";
0081 gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
0082 default-state = "on";
0083 };
0084
0085 led1: stream {
0086 label = "stream";
0087 gpios = <&gpio2 29 GPIO_ACTIVE_LOW>;
0088 default-state = "off";
0089 };
0090
0091 led2: rec {
0092 label = "rec";
0093 gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
0094 default-state = "off";
0095 };
0096 };
0097
0098 reg_3p3v: regulator-3p3v {
0099 compatible = "regulator-fixed";
0100 regulator-name = "3P3V";
0101 regulator-min-microvolt = <3300000>;
0102 regulator-max-microvolt = <3300000>;
0103 };
0104
0105 reg_hdmi: regulator-hdmi {
0106 pinctrl-names = "default";
0107 pinctrl-0 = <&pinctrl_h100_reg_hdmi>;
0108 compatible = "regulator-fixed";
0109 enable-active-high;
0110 gpio = <&gpio2 20 GPIO_ACTIVE_HIGH>;
0111 regulator-name = "V_HDMI";
0112 regulator-min-microvolt = <5000000>;
0113 regulator-max-microvolt = <5000000>;
0114 regulator-always-on;
0115 };
0116
0117 reg_usbh1_vbus: regulator-usb-h1-vbus {
0118 compatible = "regulator-fixed";
0119 enable-active-high;
0120 gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
0121 pinctrl-names = "default";
0122 pinctrl-0 = <&pinctrl_h100_usbh1_vbus>;
0123 regulator-name = "USB_H1_VBUS";
0124 regulator-min-microvolt = <5000000>;
0125 regulator-max-microvolt = <5000000>;
0126 };
0127
0128 reg_usbotg_vbus: regulator-usb-otg-vbus {
0129 compatible = "regulator-fixed";
0130 enable-active-high;
0131 gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
0132 pinctrl-names = "default";
0133 pinctrl-0 = <&pinctrl_h100_usbotg_vbus>;
0134 regulator-name = "USB_OTG_VBUS";
0135 regulator-min-microvolt = <5000000>;
0136 regulator-max-microvolt = <5000000>;
0137 };
0138
0139 sound-sgtl5000 {
0140 compatible = "fsl,imx-audio-sgtl5000";
0141 model = "H100 on-board codec";
0142 audio-codec = <&sgtl5000>;
0143 audio-routing =
0144 "MIC_IN", "Mic Jack",
0145 "Mic Jack", "Mic Bias",
0146 "Headphone Jack", "HP_OUT";
0147 mux-ext-port = <5>;
0148 mux-int-port = <1>;
0149 ssi-controller = <&ssi1>;
0150 };
0151 };
0152
0153 &audmux {
0154 status = "okay";
0155 };
0156
0157 &hdmi {
0158 pinctrl-names = "default";
0159 pinctrl-0 = <&pinctrl_h100_hdmi>;
0160 ddc-i2c-bus = <&i2c2>;
0161 status = "okay";
0162 };
0163
0164 &i2c1 {
0165 pinctrl-names = "default";
0166 pinctrl-0 = <&pinctrl_h100_i2c1>;
0167 status = "okay";
0168
0169 eeprom: 24c02@51 {
0170 compatible = "microchip,24c02", "atmel,24c02";
0171 reg = <0x51>;
0172 };
0173
0174 rtc: pcf8523@68 {
0175 compatible = "nxp,pcf8523";
0176 reg = <0x68>;
0177 };
0178
0179 sgtl5000: sgtl5000@a {
0180 compatible = "fsl,sgtl5000";
0181 reg = <0x0a>;
0182 pinctrl-names = "default";
0183 pinctrl-0 = <&pinctrl_h100_sgtl5000>;
0184 clocks = <&clks IMX6QDL_CLK_CKO>;
0185 VDDA-supply = <®_3p3v>;
0186 VDDIO-supply = <®_3p3v>;
0187 };
0188
0189 tc358743: tc358743@f {
0190 compatible = "toshiba,tc358743";
0191 reg = <0x0f>;
0192 pinctrl-names = "default";
0193 pinctrl-0 = <&pinctrl_h100_tc358743>;
0194 clocks = <&hdmi_osc>;
0195 clock-names = "refclk";
0196 reset-gpios = <&gpio6 15 GPIO_ACTIVE_LOW>;
0197 /* IRQ has a wrong pull resistor which renders it useless */
0198
0199 port {
0200 tc358743_out: endpoint {
0201 remote-endpoint = <&mipi_csi2_in>;
0202 data-lanes = <1 2 3 4>;
0203 clock-lanes = <0>;
0204 clock-noncontinuous;
0205 link-frequencies = /bits/ 64 <297000000>;
0206 };
0207 };
0208 };
0209 };
0210
0211 &i2c2 {
0212 clock-frequency = <100000>;
0213 pinctrl-names = "default";
0214 pinctrl-0 = <&pinctrl_h100_i2c2>;
0215 status = "okay";
0216 };
0217
0218 &iomuxc {
0219 h100 {
0220 pinctrl_h100_hdmi: h100-hdmi {
0221 fsl,pins = <
0222 MX6QDL_PAD_KEY_ROW2__HDMI_TX_CEC_LINE 0x1f8b0
0223 >;
0224 };
0225
0226 pinctrl_h100_i2c1: h100-i2c1 {
0227 fsl,pins = <
0228 MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
0229 MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
0230 >;
0231 };
0232
0233 pinctrl_h100_i2c2: h100-i2c2 {
0234 fsl,pins = <
0235 MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
0236 MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
0237 >;
0238 };
0239
0240 pinctrl_h100_leds: pinctrl-h100-leds {
0241 fsl,pins = <
0242 MX6QDL_PAD_EIM_DA0__GPIO3_IO00 0x1b0b0
0243 MX6QDL_PAD_EIM_EB1__GPIO2_IO29 0x1b0b0
0244 MX6QDL_PAD_EIM_EB0__GPIO2_IO28 0x1b0b0
0245 >;
0246 };
0247
0248 pinctrl_h100_reg_hdmi: h100-reg-hdmi {
0249 fsl,pins = <
0250 MX6QDL_PAD_EIM_A18__GPIO2_IO20 0x1b0b0
0251 >;
0252 };
0253
0254 pinctrl_h100_sgtl5000: h100-sgtl5000 {
0255 fsl,pins = <
0256 MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x130b0
0257 MX6QDL_PAD_KEY_COL0__AUD5_TXC 0x130b0
0258 MX6QDL_PAD_KEY_ROW0__AUD5_TXD 0x110b0
0259 MX6QDL_PAD_KEY_COL1__AUD5_TXFS 0x130b0
0260 MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x130b0
0261 >;
0262 };
0263
0264 pinctrl_h100_tc358743: h100-tc358743 {
0265 fsl,pins = <
0266 MX6QDL_PAD_NANDF_CS2__GPIO6_IO15 0x1b0b0
0267 >;
0268 };
0269
0270 pinctrl_h100_uart2: h100-uart2 {
0271 fsl,pins = <
0272 MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA 0x1b0b1
0273 MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA 0x1b0b1
0274 >;
0275 };
0276
0277 pinctrl_h100_usbh1_vbus: hummingboard-usbh1-vbus {
0278 fsl,pins = <
0279 MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x1b0b0
0280 >;
0281 };
0282
0283 pinctrl_h100_usbotg_id: hummingboard-usbotg-id {
0284 fsl,pins = <
0285 MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x13059
0286 >;
0287 };
0288
0289 pinctrl_h100_usbotg_vbus: hummingboard-usbotg-vbus {
0290 fsl,pins = <
0291 MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b0
0292 >;
0293 };
0294
0295 pinctrl_h100_usdhc2: h100-usdhc2 {
0296 fsl,pins = <
0297 MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1f071
0298 MX6QDL_PAD_SD2_CMD__SD2_CMD 0x17059
0299 MX6QDL_PAD_SD2_CLK__SD2_CLK 0x10059
0300 MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
0301 MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
0302 MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
0303 MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x13059
0304 MX6QDL_PAD_KEY_ROW1__SD2_VSELECT 0x1b0b0
0305 >;
0306 };
0307
0308 pinctrl_h100_usdhc2_100mhz: h100-usdhc2-100mhz {
0309 fsl,pins = <
0310 MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1f071
0311 MX6QDL_PAD_SD2_CMD__SD2_CMD 0x170b9
0312 MX6QDL_PAD_SD2_CLK__SD2_CLK 0x100b9
0313 MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x170b9
0314 MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x170b9
0315 MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x170b9
0316 MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x170b9
0317 MX6QDL_PAD_KEY_ROW1__SD2_VSELECT 0x1b0b0
0318 >;
0319 };
0320
0321 pinctrl_h100_usdhc2_200mhz: h100-usdhc2-200mhz {
0322 fsl,pins = <
0323 MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1f071
0324 MX6QDL_PAD_SD2_CMD__SD2_CMD 0x170f9
0325 MX6QDL_PAD_SD2_CLK__SD2_CLK 0x100f9
0326 MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x170f9
0327 MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x170f9
0328 MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x170f9
0329 MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x170f9
0330 MX6QDL_PAD_KEY_ROW1__SD2_VSELECT 0x1b0b0
0331 >;
0332 };
0333 };
0334 };
0335
0336 &mipi_csi {
0337 status = "okay";
0338
0339 port {
0340 mipi_csi2_in: endpoint {
0341 remote-endpoint = <&tc358743_out>;
0342 data-lanes = <1 2 3 4>;
0343 clock-lanes = <0>;
0344 clock-noncontinuous;
0345 link-frequencies = /bits/ 64 <297000000>;
0346 };
0347 };
0348 };
0349
0350 &ssi1 {
0351 status = "okay";
0352 };
0353
0354 &uart2 {
0355 pinctrl-names = "default";
0356 pinctrl-0 = <&pinctrl_h100_uart2>;
0357 status = "okay";
0358 };
0359
0360 &usbh1 {
0361 disable-over-current;
0362 vbus-supply = <®_usbh1_vbus>;
0363 status = "okay";
0364 };
0365
0366 &usbotg {
0367 disable-over-current;
0368 pinctrl-names = "default";
0369 pinctrl-0 = <&pinctrl_h100_usbotg_id>;
0370 vbus-supply = <®_usbotg_vbus>;
0371 status = "okay";
0372 };
0373
0374 &usdhc2 {
0375 pinctrl-names = "default", "state_100mhz", "state_200mhz";
0376 pinctrl-0 = <&pinctrl_h100_usdhc2>;
0377 pinctrl-1 = <&pinctrl_h100_usdhc2_100mhz>;
0378 pinctrl-2 = <&pinctrl_h100_usdhc2_200mhz>;
0379 vmmc-supply = <®_3p3v>;
0380 cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
0381 status = "okay";
0382 };