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 wakeup-source; 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 wakeup-source; 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 reg = <0>; 88 regulator-name = "3P3V"; 89 regulator-min-microvolt = <3300000>; 90 regulator-max-microvolt = <3300000>; 91 regulator-always-on; 92 }; 93 94 reg_lcd_3v3: regulator@1 { 95 compatible = "regulator-fixed"; 96 reg = <1>; 97 pinctrl-names = "default"; 98 pinctrl-0 = <®_lcd_3v3_pins_mbmx28lc>; 99 regulator-name = "lcd-3v3"; 100 regulator-min-microvolt = <3300000>; 101 regulator-max-microvolt = <3300000>; 102 gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>; 103 enable-active-high; 104 }; 105 106 reg_usb0_vbus: regulator@2 { 107 compatible = "regulator-fixed"; 108 reg = <2>; 109 pinctrl-names = "default"; 110 pinctrl-0 = <®_usb0_vbus_pins_mbmx28lc>; 111 regulator-name = "usb0_vbus"; 112 regulator-min-microvolt = <5000000>; 113 regulator-max-microvolt = <5000000>; 114 gpio = <&gpio1 18 GPIO_ACTIVE_HIGH>; 115 enable-active-high; 116 }; 117 118 reg_usb1_vbus: regulator@3 { 119 compatible = "regulator-fixed"; 120 reg = <3>; 121 pinctrl-names = "default"; 122 pinctrl-0 = <®_usb1_vbus_pins_mbmx28lc>; 123 regulator-name = "usb1_vbus"; 124 regulator-min-microvolt = <5000000>; 125 regulator-max-microvolt = <5000000>; 126 gpio = <&gpio1 19 GPIO_ACTIVE_HIGH>; 127 enable-active-high; 128 }; 129 }; 130 131 sound { 132 compatible = "fsl,imx28-mbmx28lc-sgtl5000", 133 "fsl,mxs-audio-sgtl5000"; 134 model = "imx28-mbmx28lc-sgtl5000"; 135 saif-controllers = <&saif0 &saif1>; 136 audio-codec = <&sgtl5000>; 137 }; 138}; 139 140&duart { 141 pinctrl-names = "default"; 142 pinctrl-0 = <&duart_4pins_a>; 143 status = "okay"; 144}; 145 146&i2c0 { 147 pinctrl-names = "default"; 148 pinctrl-0 = <&i2c0_pins_a>; 149 status = "okay"; 150 151 sgtl5000: codec@a { 152 compatible = "fsl,sgtl5000"; 153 reg = <0x0a>; 154 #sound-dai-cells = <0>; 155 VDDA-supply = <®_3p3v>; 156 VDDIO-supply = <®_3p3v>; 157 clocks = <&saif0>; 158 }; 159}; 160 161&lcdif { 162 pinctrl-names = "default"; 163 pinctrl-0 = <&lcdif_18bit_pins_a &lcdif_pins_mbmx28lc>; 164 lcd-supply = <®_lcd_3v3>; 165 display = <&display0>; 166 status = "okay"; 167 168 display0: display0 { 169 model = "43WVF1G-0"; 170 bits-per-pixel = <16>; 171 bus-width = <18>; 172 173 display-timings { 174 native-mode = <&timing0>; 175 timing0: timing0 { 176 clock-frequency = <9072000>; 177 hactive = <480>; 178 vactive = <272>; 179 hback-porch = <10>; 180 hfront-porch = <5>; 181 vback-porch = <8>; 182 vfront-porch = <8>; 183 hsync-len = <40>; 184 vsync-len = <10>; 185 hsync-active = <0>; 186 vsync-active = <0>; 187 de-active = <1>; 188 pixelclk-active = <1>; 189 }; 190 }; 191 }; 192}; 193 194&lradc { 195 fsl,lradc-touchscreen-wires = <4>; 196 status = "okay"; 197}; 198 199&pinctrl { 200 gpio_button_sw3_pins_mbmx28lc: gpio-button-sw3-mbmx28lc@0 { 201 reg = <0>; 202 fsl,pinmux-ids = < 203 MX28_PAD_LCD_D21__GPIO_1_21 204 >; 205 fsl,drive-strength = <MXS_DRIVE_4mA>; 206 fsl,voltage = <MXS_VOLTAGE_HIGH>; 207 fsl,pull-up = <MXS_PULL_DISABLE>; 208 }; 209 210 gpio_button_sw4_pins_mbmx28lc: gpio-button-sw4-mbmx28lc@0 { 211 reg = <0>; 212 fsl,pinmux-ids = < 213 MX28_PAD_LCD_D20__GPIO_1_20 214 >; 215 fsl,drive-strength = <MXS_DRIVE_4mA>; 216 fsl,voltage = <MXS_VOLTAGE_HIGH>; 217 fsl,pull-up = <MXS_PULL_DISABLE>; 218 }; 219 220 lcdif_pins_mbmx28lc: lcdif-mbmx28lc@0 { 221 reg = <0>; 222 fsl,pinmux-ids = < 223 MX28_PAD_LCD_VSYNC__LCD_VSYNC 224 MX28_PAD_LCD_HSYNC__LCD_HSYNC 225 MX28_PAD_LCD_DOTCLK__LCD_DOTCLK 226 MX28_PAD_LCD_ENABLE__LCD_ENABLE 227 >; 228 fsl,drive-strength = <MXS_DRIVE_4mA>; 229 fsl,voltage = <MXS_VOLTAGE_HIGH>; 230 fsl,pull-up = <MXS_PULL_DISABLE>; 231 }; 232 233 led_d6_pins_mbmx28lc: led-d6-mbmx28lc@0 { 234 reg = <0>; 235 fsl,pinmux-ids = < 236 MX28_PAD_LCD_D23__GPIO_1_23 237 >; 238 fsl,drive-strength = <MXS_DRIVE_4mA>; 239 fsl,voltage = <MXS_VOLTAGE_HIGH>; 240 fsl,pull-up = <MXS_PULL_DISABLE>; 241 }; 242 243 led_d7_pins_mbmx28lc: led-d7-mbmx28lc@0 { 244 reg = <0>; 245 fsl,pinmux-ids = < 246 MX28_PAD_LCD_D22__GPIO_1_22 247 >; 248 fsl,drive-strength = <MXS_DRIVE_4mA>; 249 fsl,voltage = <MXS_VOLTAGE_HIGH>; 250 fsl,pull-up = <MXS_PULL_DISABLE>; 251 }; 252 253 reg_lcd_3v3_pins_mbmx28lc: lcd-3v3-mbmx28lc@0 { 254 reg = <0>; 255 fsl,pinmux-ids = < 256 MX28_PAD_LCD_RESET__GPIO_3_30 257 >; 258 fsl,drive-strength = <MXS_DRIVE_4mA>; 259 fsl,voltage = <MXS_VOLTAGE_HIGH>; 260 fsl,pull-up = <MXS_PULL_DISABLE>; 261 }; 262 263 reg_usb0_vbus_pins_mbmx28lc: reg-usb0-vbus-mbmx28lc@0 { 264 reg = <0>; 265 fsl,pinmux-ids = < 266 MX28_PAD_LCD_D18__GPIO_1_18 267 >; 268 fsl,drive-strength = <MXS_DRIVE_4mA>; 269 fsl,voltage = <MXS_VOLTAGE_HIGH>; 270 fsl,pull-up = <MXS_PULL_DISABLE>; 271 }; 272 273 reg_usb1_vbus_pins_mbmx28lc: reg-usb1-vbus-mbmx28lc@0 { 274 reg = <0>; 275 fsl,pinmux-ids = < 276 MX28_PAD_LCD_D19__GPIO_1_19 277 >; 278 fsl,drive-strength = <MXS_DRIVE_4mA>; 279 fsl,voltage = <MXS_VOLTAGE_HIGH>; 280 fsl,pull-up = <MXS_PULL_DISABLE>; 281 }; 282}; 283 284&pwm { 285 pinctrl-names = "default"; 286 pinctrl-0 = <&pwm4_pins_a>; 287 status = "okay"; 288}; 289 290&saif0 { 291 pinctrl-names = "default"; 292 pinctrl-0 = <&saif0_pins_a>; 293 status = "okay"; 294}; 295 296&saif1 { 297 pinctrl-names = "default"; 298 pinctrl-0 = <&saif1_pins_a>; 299 fsl,saif-master = <&saif0>; 300 status = "okay"; 301}; 302 303&ssp0 { 304 compatible = "fsl,imx28-mmc"; 305 pinctrl-names = "default"; 306 pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_cd_cfg &mmc0_sck_cfg>; 307 bus-width = <4>; 308 cd-inverted; 309 status = "okay"; 310}; 311 312&usb0 { 313 disable-over-current; 314 vbus-supply = <®_usb0_vbus>; 315 status = "okay"; 316 pinctrl-names = "default"; 317 pinctrl-0 = <&usb0_id_pins_b>; 318}; 319 320&usb1 { 321 vbus-supply = <®_usb1_vbus>; 322 status = "okay"; 323}; 324 325&usbphy0 { 326 status = "okay"; 327}; 328 329&usbphy1 { 330 status = "okay"; 331}; 332