1/* 2 * Copyright 2013 Eukréa Electromatique <eric@eukrea.com> 3 * Copyright 2013 Eukréa Electromatique <denis@eukrea.com> 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License 7 * as published by the Free Software Foundation; either version 2 8 * of the License, or (at your option) any later version. 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 */ 14 15#include <dt-bindings/input/input.h> 16#include <dt-bindings/gpio/gpio.h> 17#include "imx28.dtsi" 18 19/ { 20 model = "Eukrea Electromatique MBMX28LC"; 21 compatible = "eukrea,mbmx28lc", "fsl,imx28"; 22 23 backlight { 24 compatible = "pwm-backlight"; 25 pwms = <&pwm 4 1000000>; 26 brightness-levels = <0 25 50 75 100 125 150 175 200 225 255>; 27 default-brightness-level = <10>; 28 }; 29 30 button-sw3 { 31 compatible = "gpio-keys"; 32 pinctrl-names = "default"; 33 pinctrl-0 = <&gpio_button_sw3_pins_mbmx28lc>; 34 35 sw3 { 36 label = "SW3"; 37 gpios = <&gpio1 21 GPIO_ACTIVE_LOW>; 38 linux,code = <BTN_MISC>; 39 gpio-key,wakeup; 40 }; 41 }; 42 43 button-sw4 { 44 compatible = "gpio-keys"; 45 pinctrl-names = "default"; 46 pinctrl-0 = <&gpio_button_sw4_pins_mbmx28lc>; 47 48 sw4 { 49 label = "SW4"; 50 gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; 51 linux,code = <BTN_MISC>; 52 gpio-key,wakeup; 53 }; 54 }; 55 56 led-d6 { 57 compatible = "gpio-leds"; 58 pinctrl-names = "default"; 59 pinctrl-0 = <&led_d6_pins_mbmx28lc>; 60 61 led1 { 62 label = "d6"; 63 gpios = <&gpio1 23 GPIO_ACTIVE_LOW>; 64 linux,default-trigger = "heartbeat"; 65 }; 66 }; 67 68 led-d7 { 69 compatible = "gpio-leds"; 70 pinctrl-names = "default"; 71 pinctrl-0 = <&led_d7_pins_mbmx28lc>; 72 73 led1 { 74 label = "d7"; 75 gpios = <&gpio1 22 GPIO_ACTIVE_LOW>; 76 linux,default-trigger = "default-on"; 77 }; 78 }; 79 80 regulators { 81 compatible = "simple-bus"; 82 #address-cells = <1>; 83 #size-cells = <0>; 84 85 reg_3p3v: regulator@0 { 86 compatible = "regulator-fixed"; 87 regulator-name = "3P3V"; 88 regulator-min-microvolt = <3300000>; 89 regulator-max-microvolt = <3300000>; 90 regulator-always-on; 91 }; 92 93 reg_lcd_3v3: regulator@1 { 94 compatible = "regulator-fixed"; 95 pinctrl-names = "default"; 96 pinctrl-0 = <®_lcd_3v3_pins_mbmx28lc>; 97 regulator-name = "lcd-3v3"; 98 regulator-min-microvolt = <3300000>; 99 regulator-max-microvolt = <3300000>; 100 gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>; 101 enable-active-high; 102 }; 103 104 reg_usb0_vbus: regulator@2 { 105 compatible = "regulator-fixed"; 106 pinctrl-names = "default"; 107 pinctrl-0 = <®_usb0_vbus_pins_mbmx28lc>; 108 regulator-name = "usb0_vbus"; 109 regulator-min-microvolt = <5000000>; 110 regulator-max-microvolt = <5000000>; 111 gpio = <&gpio1 18 GPIO_ACTIVE_HIGH>; 112 enable-active-high; 113 }; 114 115 reg_usb1_vbus: regulator@3 { 116 compatible = "regulator-fixed"; 117 pinctrl-names = "default"; 118 pinctrl-0 = <®_usb1_vbus_pins_mbmx28lc>; 119 regulator-name = "usb1_vbus"; 120 regulator-min-microvolt = <5000000>; 121 regulator-max-microvolt = <5000000>; 122 gpio = <&gpio1 19 GPIO_ACTIVE_HIGH>; 123 enable-active-high; 124 }; 125 }; 126 127 sound { 128 compatible = "fsl,imx28-mbmx28lc-sgtl5000", 129 "fsl,mxs-audio-sgtl5000"; 130 model = "imx28-mbmx28lc-sgtl5000"; 131 saif-controllers = <&saif0 &saif1>; 132 audio-codec = <&sgtl5000>; 133 }; 134}; 135 136&duart { 137 pinctrl-names = "default"; 138 pinctrl-0 = <&duart_4pins_a>; 139 status = "okay"; 140}; 141 142&i2c0 { 143 pinctrl-names = "default"; 144 pinctrl-0 = <&i2c0_pins_a>; 145 status = "okay"; 146 147 sgtl5000: codec@0a { 148 compatible = "fsl,sgtl5000"; 149 reg = <0x0a>; 150 VDDA-supply = <®_3p3v>; 151 VDDIO-supply = <®_3p3v>; 152 clocks = <&saif0>; 153 }; 154}; 155 156&lcdif { 157 pinctrl-names = "default"; 158 pinctrl-0 = <&lcdif_18bit_pins_a &lcdif_pins_mbmx28lc>; 159 lcd-supply = <®_lcd_3v3>; 160 display = <&display0>; 161 status = "okay"; 162 163 display0: display0 { 164 model = "43WVF1G-0"; 165 bits-per-pixel = <16>; 166 bus-width = <18>; 167 168 display-timings { 169 native-mode = <&timing0>; 170 timing0: timing0 { 171 clock-frequency = <9072000>; 172 hactive = <480>; 173 vactive = <272>; 174 hback-porch = <10>; 175 hfront-porch = <5>; 176 vback-porch = <8>; 177 vfront-porch = <8>; 178 hsync-len = <40>; 179 vsync-len = <10>; 180 hsync-active = <0>; 181 vsync-active = <0>; 182 de-active = <1>; 183 pixelclk-active = <1>; 184 }; 185 }; 186 }; 187}; 188 189&lradc { 190 fsl,lradc-touchscreen-wires = <4>; 191 status = "okay"; 192}; 193 194&pinctrl { 195 gpio_button_sw3_pins_mbmx28lc: gpio-button-sw3-mbmx28lc@0 { 196 reg = <0>; 197 fsl,pinmux-ids = < 198 MX28_PAD_LCD_D21__GPIO_1_21 199 >; 200 fsl,drive-strength = <MXS_DRIVE_4mA>; 201 fsl,voltage = <MXS_VOLTAGE_HIGH>; 202 fsl,pull-up = <MXS_PULL_DISABLE>; 203 }; 204 205 gpio_button_sw4_pins_mbmx28lc: gpio-button-sw4-mbmx28lc@0 { 206 reg = <0>; 207 fsl,pinmux-ids = < 208 MX28_PAD_LCD_D20__GPIO_1_20 209 >; 210 fsl,drive-strength = <MXS_DRIVE_4mA>; 211 fsl,voltage = <MXS_VOLTAGE_HIGH>; 212 fsl,pull-up = <MXS_PULL_DISABLE>; 213 }; 214 215 lcdif_pins_mbmx28lc: lcdif-mbmx28lc@0 { 216 reg = <0>; 217 fsl,pinmux-ids = < 218 MX28_PAD_LCD_VSYNC__LCD_VSYNC 219 MX28_PAD_LCD_HSYNC__LCD_HSYNC 220 MX28_PAD_LCD_DOTCLK__LCD_DOTCLK 221 MX28_PAD_LCD_ENABLE__LCD_ENABLE 222 >; 223 fsl,drive-strength = <MXS_DRIVE_4mA>; 224 fsl,voltage = <MXS_VOLTAGE_HIGH>; 225 fsl,pull-up = <MXS_PULL_DISABLE>; 226 }; 227 228 led_d6_pins_mbmx28lc: led-d6-mbmx28lc@0 { 229 reg = <0>; 230 fsl,pinmux-ids = < 231 MX28_PAD_LCD_D23__GPIO_1_23 232 >; 233 fsl,drive-strength = <MXS_DRIVE_4mA>; 234 fsl,voltage = <MXS_VOLTAGE_HIGH>; 235 fsl,pull-up = <MXS_PULL_DISABLE>; 236 }; 237 238 led_d7_pins_mbmx28lc: led-d7-mbmx28lc@0 { 239 reg = <0>; 240 fsl,pinmux-ids = < 241 MX28_PAD_LCD_D22__GPIO_1_22 242 >; 243 fsl,drive-strength = <MXS_DRIVE_4mA>; 244 fsl,voltage = <MXS_VOLTAGE_HIGH>; 245 fsl,pull-up = <MXS_PULL_DISABLE>; 246 }; 247 248 reg_lcd_3v3_pins_mbmx28lc: lcd-3v3-mbmx28lc@0 { 249 reg = <0>; 250 fsl,pinmux-ids = < 251 MX28_PAD_LCD_RESET__GPIO_3_30 252 >; 253 fsl,drive-strength = <MXS_DRIVE_4mA>; 254 fsl,voltage = <MXS_VOLTAGE_HIGH>; 255 fsl,pull-up = <MXS_PULL_DISABLE>; 256 }; 257 258 reg_usb0_vbus_pins_mbmx28lc: reg-usb0-vbus-mbmx28lc@0 { 259 reg = <0>; 260 fsl,pinmux-ids = < 261 MX28_PAD_LCD_D18__GPIO_1_18 262 >; 263 fsl,drive-strength = <MXS_DRIVE_4mA>; 264 fsl,voltage = <MXS_VOLTAGE_HIGH>; 265 fsl,pull-up = <MXS_PULL_DISABLE>; 266 }; 267 268 reg_usb1_vbus_pins_mbmx28lc: reg-usb1-vbus-mbmx28lc@0 { 269 reg = <0>; 270 fsl,pinmux-ids = < 271 MX28_PAD_LCD_D19__GPIO_1_19 272 >; 273 fsl,drive-strength = <MXS_DRIVE_4mA>; 274 fsl,voltage = <MXS_VOLTAGE_HIGH>; 275 fsl,pull-up = <MXS_PULL_DISABLE>; 276 }; 277}; 278 279&pwm { 280 pinctrl-names = "default"; 281 pinctrl-0 = <&pwm4_pins_a>; 282 status = "okay"; 283}; 284 285&saif0 { 286 pinctrl-names = "default"; 287 pinctrl-0 = <&saif0_pins_a>; 288 status = "okay"; 289}; 290 291&saif1 { 292 pinctrl-names = "default"; 293 pinctrl-0 = <&saif1_pins_a>; 294 fsl,saif-master = <&saif0>; 295 status = "okay"; 296}; 297 298&ssp0 { 299 compatible = "fsl,imx28-mmc"; 300 pinctrl-names = "default"; 301 pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_cd_cfg &mmc0_sck_cfg>; 302 bus-width = <4>; 303 cd-inverted; 304 status = "okay"; 305}; 306 307&usb0 { 308 disable-over-current; 309 vbus-supply = <®_usb0_vbus>; 310 status = "okay"; 311 pinctrl-names = "default"; 312 pinctrl-0 = <&usb0_id_pins_b>; 313}; 314 315&usb1 { 316 vbus-supply = <®_usb1_vbus>; 317 status = "okay"; 318}; 319 320&usbphy0 { 321 status = "okay"; 322}; 323 324&usbphy1 { 325 status = "okay"; 326}; 327