0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003 * Copyright 2013 Eukréa Electromatique <eric@eukrea.com>
0004 * Copyright 2013 Eukréa Electromatique <denis@eukrea.com>
0005 */
0006
0007 #include <dt-bindings/input/input.h>
0008 #include <dt-bindings/gpio/gpio.h>
0009 #include "imx28.dtsi"
0010
0011 / {
0012 model = "Eukrea Electromatique MBMX28LC";
0013 compatible = "eukrea,mbmx28lc", "fsl,imx28";
0014
0015 backlight {
0016 compatible = "pwm-backlight";
0017 pwms = <&pwm 4 1000000>;
0018 brightness-levels = <0 25 50 75 100 125 150 175 200 225 255>;
0019 default-brightness-level = <10>;
0020 };
0021
0022 button-sw3 {
0023 compatible = "gpio-keys";
0024 pinctrl-names = "default";
0025 pinctrl-0 = <&gpio_button_sw3_pins_mbmx28lc>;
0026
0027 sw3 {
0028 label = "SW3";
0029 gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
0030 linux,code = <BTN_MISC>;
0031 wakeup-source;
0032 };
0033 };
0034
0035 button-sw4 {
0036 compatible = "gpio-keys";
0037 pinctrl-names = "default";
0038 pinctrl-0 = <&gpio_button_sw4_pins_mbmx28lc>;
0039
0040 sw4 {
0041 label = "SW4";
0042 gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
0043 linux,code = <BTN_MISC>;
0044 wakeup-source;
0045 };
0046 };
0047
0048 led-d6 {
0049 compatible = "gpio-leds";
0050 pinctrl-names = "default";
0051 pinctrl-0 = <&led_d6_pins_mbmx28lc>;
0052
0053 led1 {
0054 label = "d6";
0055 gpios = <&gpio1 23 GPIO_ACTIVE_LOW>;
0056 linux,default-trigger = "heartbeat";
0057 };
0058 };
0059
0060 led-d7 {
0061 compatible = "gpio-leds";
0062 pinctrl-names = "default";
0063 pinctrl-0 = <&led_d7_pins_mbmx28lc>;
0064
0065 led1 {
0066 label = "d7";
0067 gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;
0068 linux,default-trigger = "default-on";
0069 };
0070 };
0071
0072 regulators {
0073 compatible = "simple-bus";
0074 #address-cells = <1>;
0075 #size-cells = <0>;
0076
0077 reg_3p3v: regulator@0 {
0078 compatible = "regulator-fixed";
0079 reg = <0>;
0080 regulator-name = "3P3V";
0081 regulator-min-microvolt = <3300000>;
0082 regulator-max-microvolt = <3300000>;
0083 regulator-always-on;
0084 };
0085
0086 reg_lcd_3v3: regulator@1 {
0087 compatible = "regulator-fixed";
0088 reg = <1>;
0089 pinctrl-names = "default";
0090 pinctrl-0 = <®_lcd_3v3_pins_mbmx28lc>;
0091 regulator-name = "lcd-3v3";
0092 regulator-min-microvolt = <3300000>;
0093 regulator-max-microvolt = <3300000>;
0094 gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>;
0095 enable-active-high;
0096 };
0097
0098 reg_usb0_vbus: regulator@2 {
0099 compatible = "regulator-fixed";
0100 reg = <2>;
0101 pinctrl-names = "default";
0102 pinctrl-0 = <®_usb0_vbus_pins_mbmx28lc>;
0103 regulator-name = "usb0_vbus";
0104 regulator-min-microvolt = <5000000>;
0105 regulator-max-microvolt = <5000000>;
0106 gpio = <&gpio1 18 GPIO_ACTIVE_HIGH>;
0107 enable-active-high;
0108 };
0109
0110 reg_usb1_vbus: regulator@3 {
0111 compatible = "regulator-fixed";
0112 reg = <3>;
0113 pinctrl-names = "default";
0114 pinctrl-0 = <®_usb1_vbus_pins_mbmx28lc>;
0115 regulator-name = "usb1_vbus";
0116 regulator-min-microvolt = <5000000>;
0117 regulator-max-microvolt = <5000000>;
0118 gpio = <&gpio1 19 GPIO_ACTIVE_HIGH>;
0119 enable-active-high;
0120 };
0121 };
0122
0123 sound {
0124 compatible = "fsl,imx28-mbmx28lc-sgtl5000",
0125 "fsl,mxs-audio-sgtl5000";
0126 model = "imx28-mbmx28lc-sgtl5000";
0127 saif-controllers = <&saif0 &saif1>;
0128 audio-codec = <&sgtl5000>;
0129 };
0130 };
0131
0132 &duart {
0133 pinctrl-names = "default";
0134 pinctrl-0 = <&duart_4pins_a>;
0135 status = "okay";
0136 };
0137
0138 &i2c0 {
0139 pinctrl-names = "default";
0140 pinctrl-0 = <&i2c0_pins_a>;
0141 status = "okay";
0142
0143 sgtl5000: codec@a {
0144 compatible = "fsl,sgtl5000";
0145 reg = <0x0a>;
0146 #sound-dai-cells = <0>;
0147 VDDA-supply = <®_3p3v>;
0148 VDDIO-supply = <®_3p3v>;
0149 clocks = <&saif0>;
0150 };
0151 };
0152
0153 &lcdif {
0154 pinctrl-names = "default";
0155 pinctrl-0 = <&lcdif_18bit_pins_a &lcdif_pins_mbmx28lc>;
0156 lcd-supply = <®_lcd_3v3>;
0157 display = <&display0>;
0158 status = "okay";
0159
0160 display0: display0 {
0161 model = "43WVF1G-0";
0162 bits-per-pixel = <16>;
0163 bus-width = <18>;
0164
0165 display-timings {
0166 native-mode = <&timing0>;
0167 timing0: timing0 {
0168 clock-frequency = <9072000>;
0169 hactive = <480>;
0170 vactive = <272>;
0171 hback-porch = <10>;
0172 hfront-porch = <5>;
0173 vback-porch = <8>;
0174 vfront-porch = <8>;
0175 hsync-len = <40>;
0176 vsync-len = <10>;
0177 hsync-active = <0>;
0178 vsync-active = <0>;
0179 de-active = <1>;
0180 pixelclk-active = <1>;
0181 };
0182 };
0183 };
0184 };
0185
0186 &lradc {
0187 fsl,lradc-touchscreen-wires = <4>;
0188 status = "okay";
0189 };
0190
0191 &pinctrl {
0192 gpio_button_sw3_pins_mbmx28lc: gpio-button-sw3-mbmx28lc@0 {
0193 reg = <0>;
0194 fsl,pinmux-ids = <
0195 MX28_PAD_LCD_D21__GPIO_1_21
0196 >;
0197 fsl,drive-strength = <MXS_DRIVE_4mA>;
0198 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0199 fsl,pull-up = <MXS_PULL_DISABLE>;
0200 };
0201
0202 gpio_button_sw4_pins_mbmx28lc: gpio-button-sw4-mbmx28lc@0 {
0203 reg = <0>;
0204 fsl,pinmux-ids = <
0205 MX28_PAD_LCD_D20__GPIO_1_20
0206 >;
0207 fsl,drive-strength = <MXS_DRIVE_4mA>;
0208 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0209 fsl,pull-up = <MXS_PULL_DISABLE>;
0210 };
0211
0212 lcdif_pins_mbmx28lc: lcdif-mbmx28lc@0 {
0213 reg = <0>;
0214 fsl,pinmux-ids = <
0215 MX28_PAD_LCD_VSYNC__LCD_VSYNC
0216 MX28_PAD_LCD_HSYNC__LCD_HSYNC
0217 MX28_PAD_LCD_DOTCLK__LCD_DOTCLK
0218 MX28_PAD_LCD_ENABLE__LCD_ENABLE
0219 >;
0220 fsl,drive-strength = <MXS_DRIVE_4mA>;
0221 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0222 fsl,pull-up = <MXS_PULL_DISABLE>;
0223 };
0224
0225 led_d6_pins_mbmx28lc: led-d6-mbmx28lc@0 {
0226 reg = <0>;
0227 fsl,pinmux-ids = <
0228 MX28_PAD_LCD_D23__GPIO_1_23
0229 >;
0230 fsl,drive-strength = <MXS_DRIVE_4mA>;
0231 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0232 fsl,pull-up = <MXS_PULL_DISABLE>;
0233 };
0234
0235 led_d7_pins_mbmx28lc: led-d7-mbmx28lc@0 {
0236 reg = <0>;
0237 fsl,pinmux-ids = <
0238 MX28_PAD_LCD_D22__GPIO_1_22
0239 >;
0240 fsl,drive-strength = <MXS_DRIVE_4mA>;
0241 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0242 fsl,pull-up = <MXS_PULL_DISABLE>;
0243 };
0244
0245 reg_lcd_3v3_pins_mbmx28lc: lcd-3v3-mbmx28lc@0 {
0246 reg = <0>;
0247 fsl,pinmux-ids = <
0248 MX28_PAD_LCD_RESET__GPIO_3_30
0249 >;
0250 fsl,drive-strength = <MXS_DRIVE_4mA>;
0251 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0252 fsl,pull-up = <MXS_PULL_DISABLE>;
0253 };
0254
0255 reg_usb0_vbus_pins_mbmx28lc: reg-usb0-vbus-mbmx28lc@0 {
0256 reg = <0>;
0257 fsl,pinmux-ids = <
0258 MX28_PAD_LCD_D18__GPIO_1_18
0259 >;
0260 fsl,drive-strength = <MXS_DRIVE_4mA>;
0261 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0262 fsl,pull-up = <MXS_PULL_DISABLE>;
0263 };
0264
0265 reg_usb1_vbus_pins_mbmx28lc: reg-usb1-vbus-mbmx28lc@0 {
0266 reg = <0>;
0267 fsl,pinmux-ids = <
0268 MX28_PAD_LCD_D19__GPIO_1_19
0269 >;
0270 fsl,drive-strength = <MXS_DRIVE_4mA>;
0271 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0272 fsl,pull-up = <MXS_PULL_DISABLE>;
0273 };
0274 };
0275
0276 &pwm {
0277 pinctrl-names = "default";
0278 pinctrl-0 = <&pwm4_pins_a>;
0279 status = "okay";
0280 };
0281
0282 &saif0 {
0283 pinctrl-names = "default";
0284 pinctrl-0 = <&saif0_pins_a>;
0285 status = "okay";
0286 };
0287
0288 &saif1 {
0289 pinctrl-names = "default";
0290 pinctrl-0 = <&saif1_pins_a>;
0291 fsl,saif-master = <&saif0>;
0292 status = "okay";
0293 };
0294
0295 &ssp0 {
0296 compatible = "fsl,imx28-mmc";
0297 pinctrl-names = "default";
0298 pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_cd_cfg &mmc0_sck_cfg>;
0299 bus-width = <4>;
0300 cd-inverted;
0301 status = "okay";
0302 };
0303
0304 &usb0 {
0305 disable-over-current;
0306 vbus-supply = <®_usb0_vbus>;
0307 status = "okay";
0308 pinctrl-names = "default";
0309 pinctrl-0 = <&usb0_id_pins_b>;
0310 };
0311
0312 &usb1 {
0313 vbus-supply = <®_usb1_vbus>;
0314 status = "okay";
0315 };
0316
0317 &usbphy0 {
0318 status = "okay";
0319 };
0320
0321 &usbphy1 {
0322 status = "okay";
0323 };