1 2/* 3 * Copyright 2013 Freescale Semiconductor, Inc. 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License version 2 as 7 * published by the Free Software Foundation. 8 * 9 */ 10 11#include <dt-bindings/interrupt-controller/irq.h> 12#include "imx6q-pinfunc.h" 13#include "imx6qdl.dtsi" 14 15/ { 16 aliases { 17 spi4 = &ecspi5; 18 }; 19 20 cpus { 21 #address-cells = <1>; 22 #size-cells = <0>; 23 24 cpu@0 { 25 compatible = "arm,cortex-a9"; 26 device_type = "cpu"; 27 reg = <0>; 28 next-level-cache = <&L2>; 29 operating-points = < 30 /* kHz uV */ 31 1200000 1275000 32 996000 1250000 33 852000 1250000 34 792000 1150000 35 396000 975000 36 >; 37 fsl,soc-operating-points = < 38 /* ARM kHz SOC-PU uV */ 39 1200000 1275000 40 996000 1250000 41 852000 1250000 42 792000 1175000 43 396000 1175000 44 >; 45 clock-latency = <61036>; /* two CLK32 periods */ 46 clocks = <&clks IMX6QDL_CLK_ARM>, 47 <&clks IMX6QDL_CLK_PLL2_PFD2_396M>, 48 <&clks IMX6QDL_CLK_STEP>, 49 <&clks IMX6QDL_CLK_PLL1_SW>, 50 <&clks IMX6QDL_CLK_PLL1_SYS>; 51 clock-names = "arm", "pll2_pfd2_396m", "step", 52 "pll1_sw", "pll1_sys"; 53 arm-supply = <®_arm>; 54 pu-supply = <®_pu>; 55 soc-supply = <®_soc>; 56 }; 57 58 cpu@1 { 59 compatible = "arm,cortex-a9"; 60 device_type = "cpu"; 61 reg = <1>; 62 next-level-cache = <&L2>; 63 }; 64 65 cpu@2 { 66 compatible = "arm,cortex-a9"; 67 device_type = "cpu"; 68 reg = <2>; 69 next-level-cache = <&L2>; 70 }; 71 72 cpu@3 { 73 compatible = "arm,cortex-a9"; 74 device_type = "cpu"; 75 reg = <3>; 76 next-level-cache = <&L2>; 77 }; 78 }; 79 80 soc { 81 ocram: sram@00900000 { 82 compatible = "mmio-sram"; 83 reg = <0x00900000 0x40000>; 84 clocks = <&clks IMX6QDL_CLK_OCRAM>; 85 }; 86 87 aips-bus@02000000 { /* AIPS1 */ 88 spba-bus@02000000 { 89 ecspi5: ecspi@02018000 { 90 #address-cells = <1>; 91 #size-cells = <0>; 92 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; 93 reg = <0x02018000 0x4000>; 94 interrupts = <0 35 IRQ_TYPE_LEVEL_HIGH>; 95 clocks = <&clks IMX6Q_CLK_ECSPI5>, 96 <&clks IMX6Q_CLK_ECSPI5>; 97 clock-names = "ipg", "per"; 98 status = "disabled"; 99 }; 100 }; 101 102 iomuxc: iomuxc@020e0000 { 103 compatible = "fsl,imx6q-iomuxc"; 104 105 ipu2 { 106 pinctrl_ipu2_1: ipu2grp-1 { 107 fsl,pins = < 108 MX6QDL_PAD_DI0_DISP_CLK__IPU2_DI0_DISP_CLK 0x10 109 MX6QDL_PAD_DI0_PIN15__IPU2_DI0_PIN15 0x10 110 MX6QDL_PAD_DI0_PIN2__IPU2_DI0_PIN02 0x10 111 MX6QDL_PAD_DI0_PIN3__IPU2_DI0_PIN03 0x10 112 MX6QDL_PAD_DI0_PIN4__IPU2_DI0_PIN04 0x80000000 113 MX6QDL_PAD_DISP0_DAT0__IPU2_DISP0_DATA00 0x10 114 MX6QDL_PAD_DISP0_DAT1__IPU2_DISP0_DATA01 0x10 115 MX6QDL_PAD_DISP0_DAT2__IPU2_DISP0_DATA02 0x10 116 MX6QDL_PAD_DISP0_DAT3__IPU2_DISP0_DATA03 0x10 117 MX6QDL_PAD_DISP0_DAT4__IPU2_DISP0_DATA04 0x10 118 MX6QDL_PAD_DISP0_DAT5__IPU2_DISP0_DATA05 0x10 119 MX6QDL_PAD_DISP0_DAT6__IPU2_DISP0_DATA06 0x10 120 MX6QDL_PAD_DISP0_DAT7__IPU2_DISP0_DATA07 0x10 121 MX6QDL_PAD_DISP0_DAT8__IPU2_DISP0_DATA08 0x10 122 MX6QDL_PAD_DISP0_DAT9__IPU2_DISP0_DATA09 0x10 123 MX6QDL_PAD_DISP0_DAT10__IPU2_DISP0_DATA10 0x10 124 MX6QDL_PAD_DISP0_DAT11__IPU2_DISP0_DATA11 0x10 125 MX6QDL_PAD_DISP0_DAT12__IPU2_DISP0_DATA12 0x10 126 MX6QDL_PAD_DISP0_DAT13__IPU2_DISP0_DATA13 0x10 127 MX6QDL_PAD_DISP0_DAT14__IPU2_DISP0_DATA14 0x10 128 MX6QDL_PAD_DISP0_DAT15__IPU2_DISP0_DATA15 0x10 129 MX6QDL_PAD_DISP0_DAT16__IPU2_DISP0_DATA16 0x10 130 MX6QDL_PAD_DISP0_DAT17__IPU2_DISP0_DATA17 0x10 131 MX6QDL_PAD_DISP0_DAT18__IPU2_DISP0_DATA18 0x10 132 MX6QDL_PAD_DISP0_DAT19__IPU2_DISP0_DATA19 0x10 133 MX6QDL_PAD_DISP0_DAT20__IPU2_DISP0_DATA20 0x10 134 MX6QDL_PAD_DISP0_DAT21__IPU2_DISP0_DATA21 0x10 135 MX6QDL_PAD_DISP0_DAT22__IPU2_DISP0_DATA22 0x10 136 MX6QDL_PAD_DISP0_DAT23__IPU2_DISP0_DATA23 0x10 137 >; 138 }; 139 }; 140 }; 141 }; 142 143 sata: sata@02200000 { 144 compatible = "fsl,imx6q-ahci"; 145 reg = <0x02200000 0x4000>; 146 interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>; 147 clocks = <&clks IMX6QDL_CLK_SATA>, 148 <&clks IMX6QDL_CLK_SATA_REF_100M>, 149 <&clks IMX6QDL_CLK_AHB>; 150 clock-names = "sata", "sata_ref", "ahb"; 151 status = "disabled"; 152 }; 153 154 ipu2: ipu@02800000 { 155 #address-cells = <1>; 156 #size-cells = <0>; 157 compatible = "fsl,imx6q-ipu"; 158 reg = <0x02800000 0x400000>; 159 interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>, 160 <0 7 IRQ_TYPE_LEVEL_HIGH>; 161 clocks = <&clks IMX6QDL_CLK_IPU2>, 162 <&clks IMX6QDL_CLK_IPU2_DI0>, 163 <&clks IMX6QDL_CLK_IPU2_DI1>; 164 clock-names = "bus", "di0", "di1"; 165 resets = <&src 4>; 166 167 ipu2_csi0: port@0 { 168 reg = <0>; 169 }; 170 171 ipu2_csi1: port@1 { 172 reg = <1>; 173 }; 174 175 ipu2_di0: port@2 { 176 #address-cells = <1>; 177 #size-cells = <0>; 178 reg = <2>; 179 180 ipu2_di0_disp0: endpoint@0 { 181 }; 182 183 ipu2_di0_hdmi: endpoint@1 { 184 remote-endpoint = <&hdmi_mux_2>; 185 }; 186 187 ipu2_di0_mipi: endpoint@2 { 188 }; 189 190 ipu2_di0_lvds0: endpoint@3 { 191 remote-endpoint = <&lvds0_mux_2>; 192 }; 193 194 ipu2_di0_lvds1: endpoint@4 { 195 remote-endpoint = <&lvds1_mux_2>; 196 }; 197 }; 198 199 ipu2_di1: port@3 { 200 #address-cells = <1>; 201 #size-cells = <0>; 202 reg = <3>; 203 204 ipu2_di1_hdmi: endpoint@1 { 205 remote-endpoint = <&hdmi_mux_3>; 206 }; 207 208 ipu2_di1_mipi: endpoint@2 { 209 }; 210 211 ipu2_di1_lvds0: endpoint@3 { 212 remote-endpoint = <&lvds0_mux_3>; 213 }; 214 215 ipu2_di1_lvds1: endpoint@4 { 216 remote-endpoint = <&lvds1_mux_3>; 217 }; 218 }; 219 }; 220 }; 221 222 display-subsystem { 223 compatible = "fsl,imx-display-subsystem"; 224 ports = <&ipu1_di0>, <&ipu1_di1>, <&ipu2_di0>, <&ipu2_di1>; 225 }; 226}; 227 228&hdmi { 229 compatible = "fsl,imx6q-hdmi"; 230 231 port@2 { 232 reg = <2>; 233 234 hdmi_mux_2: endpoint { 235 remote-endpoint = <&ipu2_di0_hdmi>; 236 }; 237 }; 238 239 port@3 { 240 reg = <3>; 241 242 hdmi_mux_3: endpoint { 243 remote-endpoint = <&ipu2_di1_hdmi>; 244 }; 245 }; 246}; 247 248&ldb { 249 clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>, <&clks IMX6QDL_CLK_LDB_DI1_SEL>, 250 <&clks IMX6QDL_CLK_IPU1_DI0_SEL>, <&clks IMX6QDL_CLK_IPU1_DI1_SEL>, 251 <&clks IMX6QDL_CLK_IPU2_DI0_SEL>, <&clks IMX6QDL_CLK_IPU2_DI1_SEL>, 252 <&clks IMX6QDL_CLK_LDB_DI0>, <&clks IMX6QDL_CLK_LDB_DI1>; 253 clock-names = "di0_pll", "di1_pll", 254 "di0_sel", "di1_sel", "di2_sel", "di3_sel", 255 "di0", "di1"; 256 257 lvds-channel@0 { 258 port@2 { 259 reg = <2>; 260 261 lvds0_mux_2: endpoint { 262 remote-endpoint = <&ipu2_di0_lvds0>; 263 }; 264 }; 265 266 port@3 { 267 reg = <3>; 268 269 lvds0_mux_3: endpoint { 270 remote-endpoint = <&ipu2_di1_lvds0>; 271 }; 272 }; 273 }; 274 275 lvds-channel@1 { 276 port@2 { 277 reg = <2>; 278 279 lvds1_mux_2: endpoint { 280 remote-endpoint = <&ipu2_di0_lvds1>; 281 }; 282 }; 283 284 port@3 { 285 reg = <3>; 286 287 lvds1_mux_3: endpoint { 288 remote-endpoint = <&ipu2_di1_lvds1>; 289 }; 290 }; 291 }; 292}; 293 294&mipi_dsi { 295 port@2 { 296 reg = <2>; 297 298 mipi_mux_2: endpoint { 299 remote-endpoint = <&ipu2_di0_mipi>; 300 }; 301 }; 302 303 port@3 { 304 reg = <3>; 305 306 mipi_mux_3: endpoint { 307 remote-endpoint = <&ipu2_di1_mipi>; 308 }; 309 }; 310}; 311