0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003 * Copyright 2012 Free Electrons
0004 */
0005
0006 /*
0007 * The CFA-10049 is an expansion board for the CFA-10036 module, thus we
0008 * need to include the CFA-10036 DTS.
0009 */
0010 #include "imx28-cfa10036.dts"
0011
0012 / {
0013 model = "Crystalfontz CFA-10049 Board";
0014 compatible = "crystalfontz,cfa10049", "crystalfontz,cfa10036", "fsl,imx28";
0015
0016 i2cmux {
0017 compatible = "i2c-mux-gpio";
0018 #address-cells = <1>;
0019 #size-cells = <0>;
0020 pinctrl-names = "default";
0021 pinctrl-0 = <&i2cmux_pins_cfa10049>;
0022 mux-gpios = <&gpio1 22 0 &gpio1 23 0>;
0023 i2c-parent = <&i2c1>;
0024
0025 i2c@0 {
0026 #address-cells = <1>;
0027 #size-cells = <0>;
0028 reg = <0>;
0029
0030 adc0: nau7802@2a {
0031 compatible = "nuvoton,nau7802";
0032 reg = <0x2a>;
0033 nuvoton,vldo = <3000>;
0034 };
0035 };
0036
0037 i2c@1 {
0038 #address-cells = <1>;
0039 #size-cells = <0>;
0040 reg = <1>;
0041
0042 adc1: nau7802@2a {
0043 compatible = "nuvoton,nau7802";
0044 reg = <0x2a>;
0045 nuvoton,vldo = <3000>;
0046 };
0047 };
0048
0049 i2c@2 {
0050 #address-cells = <1>;
0051 #size-cells = <0>;
0052 reg = <2>;
0053
0054 adc2: nau7802@2a {
0055 compatible = "nuvoton,nau7802";
0056 reg = <0x2a>;
0057 nuvoton,vldo = <3000>;
0058 };
0059 };
0060
0061 i2c@3 {
0062 reg = <3>;
0063 #address-cells = <1>;
0064 #size-cells = <0>;
0065
0066 pca9555: pca9555@20 {
0067 compatible = "nxp,pca9555";
0068 pinctrl-names = "default";
0069 pinctrl-0 = <&pca_pins_cfa10049>;
0070 interrupt-parent = <&gpio2>;
0071 interrupts = <19 0x2>;
0072 gpio-controller;
0073 #gpio-cells = <2>;
0074 interrupt-controller;
0075 #interrupt-cells = <2>;
0076 reg = <0x20>;
0077 };
0078 };
0079 };
0080
0081 apb@80000000 {
0082 apbh@80000000 {
0083 pinctrl@80018000 {
0084 usb_pins_cfa10049: usb-10049@0 {
0085 reg = <0>;
0086 fsl,pinmux-ids = <
0087 MX28_PAD_GPMI_D07__GPIO_0_7
0088 >;
0089 fsl,drive-strength = <MXS_DRIVE_4mA>;
0090 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0091 fsl,pull-up = <MXS_PULL_DISABLE>;
0092 };
0093
0094 i2cmux_pins_cfa10049: i2cmux-10049@0 {
0095 reg = <0>;
0096 fsl,pinmux-ids = <
0097 MX28_PAD_LCD_D22__GPIO_1_22
0098 MX28_PAD_LCD_D23__GPIO_1_23
0099 >;
0100 fsl,drive-strength = <MXS_DRIVE_4mA>;
0101 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0102 fsl,pull-up = <MXS_PULL_DISABLE>;
0103 };
0104
0105 mac0_pins_cfa10049: mac0-10049@0 {
0106 reg = <0>;
0107 fsl,pinmux-ids = <
0108 MX28_PAD_SSP2_SS2__GPIO_2_21
0109 >;
0110 fsl,drive-strength = <MXS_DRIVE_4mA>;
0111 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0112 fsl,pull-up = <MXS_PULL_DISABLE>;
0113 };
0114
0115 pca_pins_cfa10049: pca-10049@0 {
0116 reg = <0>;
0117 fsl,pinmux-ids = <
0118 MX28_PAD_SSP2_SS0__GPIO_2_19
0119 >;
0120 fsl,drive-strength = <MXS_DRIVE_4mA>;
0121 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0122 fsl,pull-up = <MXS_PULL_ENABLE>;
0123 };
0124
0125 rotary_pins_cfa10049: rotary-10049@0 {
0126 reg = <0>;
0127 fsl,pinmux-ids = <
0128 MX28_PAD_I2C0_SCL__GPIO_3_24
0129 MX28_PAD_I2C0_SDA__GPIO_3_25
0130 >;
0131 fsl,drive-strength = <MXS_DRIVE_4mA>;
0132 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0133 fsl,pull-up = <MXS_PULL_ENABLE>;
0134 };
0135
0136 rotary_btn_pins_cfa10049: rotary-btn-10049@0 {
0137 reg = <0>;
0138 fsl,pinmux-ids = <
0139 MX28_PAD_SAIF1_SDATA0__GPIO_3_26
0140 >;
0141 fsl,drive-strength = <MXS_DRIVE_4mA>;
0142 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0143 fsl,pull-up = <MXS_PULL_ENABLE>;
0144 };
0145
0146 spi2_pins_cfa10049: spi2-cfa10049@0 {
0147 reg = <0>;
0148 fsl,pinmux-ids = <
0149 MX28_PAD_SSP2_SCK__GPIO_2_16
0150 MX28_PAD_SSP2_MOSI__GPIO_2_17
0151 MX28_PAD_SSP2_MISO__GPIO_2_18
0152 MX28_PAD_AUART1_TX__GPIO_3_5
0153 >;
0154 fsl,drive-strength = <MXS_DRIVE_8mA>;
0155 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0156 fsl,pull-up = <MXS_PULL_ENABLE>;
0157 };
0158
0159 spi3_pins_cfa10049: spi3-cfa10049@0 {
0160 reg = <0>;
0161 fsl,pinmux-ids = <
0162 MX28_PAD_GPMI_RDN__GPIO_0_24
0163 MX28_PAD_GPMI_RESETN__GPIO_0_28
0164 MX28_PAD_GPMI_CE1N__GPIO_0_17
0165 MX28_PAD_GPMI_ALE__GPIO_0_26
0166 MX28_PAD_GPMI_CLE__GPIO_0_27
0167 >;
0168 fsl,drive-strength = <MXS_DRIVE_8mA>;
0169 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0170 fsl,pull-up = <MXS_PULL_ENABLE>;
0171 };
0172
0173 lcdif_18bit_pins_cfa10049: lcdif-18bit@0 {
0174 reg = <0>;
0175 fsl,pinmux-ids = <
0176 MX28_PAD_LCD_D00__LCD_D0
0177 MX28_PAD_LCD_D01__LCD_D1
0178 MX28_PAD_LCD_D02__LCD_D2
0179 MX28_PAD_LCD_D03__LCD_D3
0180 MX28_PAD_LCD_D04__LCD_D4
0181 MX28_PAD_LCD_D05__LCD_D5
0182 MX28_PAD_LCD_D06__LCD_D6
0183 MX28_PAD_LCD_D07__LCD_D7
0184 MX28_PAD_LCD_D08__LCD_D8
0185 MX28_PAD_LCD_D09__LCD_D9
0186 MX28_PAD_LCD_D10__LCD_D10
0187 MX28_PAD_LCD_D11__LCD_D11
0188 MX28_PAD_LCD_D12__LCD_D12
0189 MX28_PAD_LCD_D13__LCD_D13
0190 MX28_PAD_LCD_D14__LCD_D14
0191 MX28_PAD_LCD_D15__LCD_D15
0192 MX28_PAD_LCD_D16__LCD_D16
0193 MX28_PAD_LCD_D17__LCD_D17
0194 >;
0195 fsl,drive-strength = <MXS_DRIVE_4mA>;
0196 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0197 fsl,pull-up = <MXS_PULL_DISABLE>;
0198 };
0199
0200 lcdif_pins_cfa10049: lcdif-evk@0 {
0201 reg = <0>;
0202 fsl,pinmux-ids = <
0203 MX28_PAD_LCD_RD_E__LCD_VSYNC
0204 MX28_PAD_LCD_WR_RWN__LCD_HSYNC
0205 MX28_PAD_LCD_RS__LCD_DOTCLK
0206 MX28_PAD_LCD_CS__LCD_ENABLE
0207 >;
0208 fsl,drive-strength = <MXS_DRIVE_4mA>;
0209 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0210 fsl,pull-up = <MXS_PULL_DISABLE>;
0211 };
0212
0213 lcdif_pins_cfa10049_pullup: lcdif-10049-pullup@0 {
0214 reg = <0>;
0215 fsl,pinmux-ids = <
0216 MX28_PAD_LCD_RESET__GPIO_3_30
0217 >;
0218 fsl,drive-strength = <MXS_DRIVE_4mA>;
0219 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0220 fsl,pull-up = <MXS_PULL_ENABLE>;
0221 };
0222
0223 w1_gpio_pins: w1-gpio@0 {
0224 reg = <0>;
0225 fsl,pinmux-ids = <
0226 MX28_PAD_LCD_D21__GPIO_1_21
0227 >;
0228 fsl,drive-strength = <MXS_DRIVE_8mA>;
0229 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0230 fsl,pull-up = <MXS_PULL_DISABLE>; /* 0 will enable the keeper */
0231 };
0232 };
0233
0234 lcdif@80030000 {
0235 pinctrl-names = "default";
0236 pinctrl-0 = <&lcdif_18bit_pins_cfa10049
0237 &lcdif_pins_cfa10049
0238 &lcdif_pins_cfa10049_pullup>;
0239 display = <&display0>;
0240 status = "okay";
0241
0242 display0: display0 {
0243 bits-per-pixel = <32>;
0244 bus-width = <18>;
0245
0246 display-timings {
0247 native-mode = <&timing0>;
0248 timing0: timing0 {
0249 clock-frequency = <9216000>;
0250 hactive = <320>;
0251 vactive = <480>;
0252 hback-porch = <2>;
0253 hfront-porch = <2>;
0254 vback-porch = <2>;
0255 vfront-porch = <2>;
0256 hsync-len = <15>;
0257 vsync-len = <15>;
0258 hsync-active = <0>;
0259 vsync-active = <0>;
0260 de-active = <1>;
0261 pixelclk-active = <1>;
0262 };
0263 };
0264 };
0265 };
0266 };
0267
0268 apbx@80040000 {
0269 pwm: pwm@80064000 {
0270 pinctrl-names = "default";
0271 pinctrl-0 = <&pwm3_pins_b>;
0272 status = "okay";
0273 };
0274
0275 i2c1: i2c@8005a000 {
0276 pinctrl-names = "default";
0277 pinctrl-0 = <&i2c1_pins_a>;
0278 status = "okay";
0279 };
0280
0281 usbphy1: usbphy@8007e000 {
0282 status = "okay";
0283 };
0284
0285 lradc@80050000 {
0286 status = "okay";
0287 fsl,lradc-touchscreen-wires = <4>;
0288 };
0289 };
0290 };
0291
0292 ahb@80080000 {
0293 usb1: usb@80090000 {
0294 vbus-supply = <®_usb1_vbus>;
0295 pinctrl-0 = <&usb1_pins_a>;
0296 pinctrl-names = "default";
0297 status = "okay";
0298 };
0299 };
0300
0301 regulators {
0302 compatible = "simple-bus";
0303 #address-cells = <1>;
0304 #size-cells = <0>;
0305
0306 reg_usb1_vbus: regulator@0 {
0307 compatible = "regulator-fixed";
0308 reg = <0>;
0309 pinctrl-names = "default";
0310 pinctrl-0 = <&usb_pins_cfa10049>;
0311 regulator-name = "usb1_vbus";
0312 regulator-min-microvolt = <5000000>;
0313 regulator-max-microvolt = <5000000>;
0314 gpio = <&gpio0 7 1>;
0315 };
0316 };
0317
0318 ahb@80080000 {
0319 mac0: ethernet@800f0000 {
0320 phy-mode = "rmii";
0321 pinctrl-names = "default";
0322 pinctrl-0 = <&mac0_pins_a
0323 &mac0_pins_cfa10049>;
0324 phy-reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>;
0325 phy-reset-duration = <100>;
0326 status = "okay";
0327 };
0328 };
0329
0330 spi2 {
0331 compatible = "spi-gpio";
0332 pinctrl-names = "default";
0333 pinctrl-0 = <&spi2_pins_cfa10049>;
0334 status = "okay";
0335 gpio-sck = <&gpio2 16 0>;
0336 gpio-mosi = <&gpio2 17 0>;
0337 gpio-miso = <&gpio2 18 0>;
0338 cs-gpios = <&gpio3 5 0>;
0339 num-chipselects = <1>;
0340 #address-cells = <1>;
0341 #size-cells = <0>;
0342
0343 hx8357: hx8357@0 {
0344 compatible = "himax,hx8357b", "himax,hx8357";
0345 reg = <0>;
0346 spi-max-frequency = <100000>;
0347 spi-cpol;
0348 spi-cpha;
0349 gpios-reset = <&gpio3 30 0>;
0350 im-gpios = <&gpio5 4 0 &gpio5 5 0 &gpio5 6 0>;
0351 };
0352 };
0353
0354 spi3 {
0355 compatible = "spi-gpio";
0356 pinctrl-names = "default";
0357 pinctrl-0 = <&spi3_pins_cfa10049>;
0358 status = "okay";
0359 gpio-sck = <&gpio0 24 0>;
0360 gpio-mosi = <&gpio0 28 0>;
0361 cs-gpios = <&gpio0 17 0 &gpio0 26 0 &gpio0 27 0>;
0362 num-chipselects = <3>;
0363 #address-cells = <1>;
0364 #size-cells = <0>;
0365
0366 gpio5: gpio5@0 {
0367 compatible = "fairchild,74hc595";
0368 gpio-controller;
0369 #gpio-cells = <2>;
0370 reg = <0>;
0371 registers-number = <2>;
0372 spi-max-frequency = <100000>;
0373 };
0374
0375 gpio6: gpio6@1 {
0376 compatible = "fairchild,74hc595";
0377 gpio-controller;
0378 #gpio-cells = <2>;
0379 reg = <1>;
0380 registers-number = <4>;
0381 spi-max-frequency = <100000>;
0382 };
0383
0384 dac0: dh2228@2 {
0385 compatible = "rohm,dh2228fv";
0386 reg = <2>;
0387 spi-max-frequency = <100000>;
0388 };
0389 };
0390
0391 gpio_keys {
0392 compatible = "gpio-keys";
0393 pinctrl-names = "default";
0394 pinctrl-0 = <&rotary_btn_pins_cfa10049>;
0395
0396 rotary_button {
0397 label = "rotary_button";
0398 gpios = <&gpio3 26 1>;
0399 debounce-interval = <10>;
0400 linux,code = <28>;
0401 };
0402 };
0403
0404 rotary {
0405 compatible = "rotary-encoder";
0406 pinctrl-names = "default";
0407 pinctrl-0 = <&rotary_pins_cfa10049>;
0408 gpios = <&gpio3 24 1>, <&gpio3 25 1>;
0409 linux,axis = <1>; /* REL_Y */
0410 rotary-encoder,relative-axis;
0411 };
0412
0413 backlight {
0414 compatible = "pwm-backlight";
0415 pwms = <&pwm 3 5000000>;
0416 brightness-levels = <0 4 8 16 32 64 128 255>;
0417 default-brightness-level = <6>;
0418
0419 };
0420
0421 onewire {
0422 compatible = "w1-gpio";
0423 pinctrl-names = "default";
0424 pinctrl-0 = <&w1_gpio_pins>;
0425 status = "okay";
0426 gpios = <&gpio1 21 0>;
0427 };
0428 };