Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  * Copyright 2013 Sascha Hauer, Pengutronix
0004  *
0005  * Copyright 2013-2021 TQ-Systems GmbH
0006  * Author: Markus Niebel <Markus.Niebel@tq-group.com>
0007  */
0008 
0009 #include <dt-bindings/clock/imx6qdl-clock.h>
0010 #include <dt-bindings/gpio/gpio.h>
0011 #include <dt-bindings/input/input.h>
0012 #include <dt-bindings/sound/fsl-imx-audmux.h>
0013 
0014 / {
0015         aliases {
0016                 mmc0 = &usdhc3;
0017                 mmc1 = &usdhc2;
0018                 /delete-property/ mmc2;
0019                 /delete-property/ mmc3;
0020                 rtc0 = &rtc0;
0021         };
0022 
0023         chosen {
0024                 stdout-path = &uart2;
0025         };
0026 
0027         beeper: gpio-beeper {
0028                 compatible = "gpio-beeper";
0029                 pinctrl-names = "default";
0030                 pinctrl-0 = <&pinctrl_gpiobeeper>;
0031                 gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
0032         };
0033 
0034         gpio_buttons: gpio-buttons {
0035                 compatible = "gpio-keys";
0036                 pinctrl-names = "default";
0037                 pinctrl-0 = <&pinctrl_gpiobuttons>;
0038 
0039                 button1 {
0040                         label = "s6";
0041                         linux,code = <KEY_F6>;
0042                         gpios = <&gpio7 13 GPIO_ACTIVE_LOW>;
0043                         wakeup-source;
0044                 };
0045 
0046                 button2 {
0047                         label = "s7";
0048                         linux,code = <KEY_F7>;
0049                         gpios = <&gpio7 12 GPIO_ACTIVE_LOW>;
0050                         wakeup-source;
0051                 };
0052 
0053                 button3 {
0054                         label = "s8";
0055                         linux,code = <KEY_F8>;
0056                         gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
0057                         wakeup-source;
0058                 };
0059         };
0060 
0061         gpio-leds {
0062                 compatible = "gpio-leds";
0063                 pinctrl-names = "default";
0064                 pinctrl-0 = <&pinctrl_gpioled>;
0065 
0066                 led1 {
0067                         label = "led1";
0068                         gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>;
0069                         linux,default-trigger = "default-on";
0070                 };
0071 
0072                 led2 {
0073                         label = "led2";
0074                         gpios = <&gpio6 31 GPIO_ACTIVE_HIGH>;
0075                         linux,default-trigger = "heartbeat";
0076                 };
0077         };
0078 
0079         reg_mba6_3p3v: regulator-mba6-3p3v {
0080                 compatible = "regulator-fixed";
0081                 regulator-name = "supply-mba6-3p3v";
0082                 regulator-min-microvolt = <3300000>;
0083                 regulator-max-microvolt = <3300000>;
0084                 regulator-always-on;
0085         };
0086 
0087         reg_pcie: regulator-pcie {
0088                 compatible = "regulator-fixed";
0089                 pinctrl-names = "default";
0090                 pinctrl-0 = <&pinctrl_regpcie>;
0091                 regulator-name = "supply-pcie";
0092                 regulator-min-microvolt = <3300000>;
0093                 regulator-max-microvolt = <3300000>;
0094                 /* PCIE.PWR_EN */
0095                 gpio = <&gpio2 0 GPIO_ACTIVE_HIGH>;
0096                 enable-active-high;
0097                 regulator-always-on;
0098                 vin-supply = <&reg_mba6_3p3v>;
0099         };
0100 
0101         reg_vcc3v3_audio: regulator-vcc3v3-audio {
0102                 compatible = "regulator-fixed";
0103                 regulator-name = "vcc3v3-audio";
0104                 regulator-min-microvolt = <3300000>;
0105                 regulator-max-microvolt = <3300000>;
0106                 vin-supply = <&reg_mba6_3p3v>;
0107         };
0108 
0109         sound {
0110                 compatible = "fsl,imx-audio-tlv320aic32x4";
0111                 pinctrl-names = "default";
0112                 pinctrl-0 = <&pinctrl_audmux>;
0113                 model = "imx-audio-tlv320aic32x4";
0114                 ssi-controller = <&ssi1>;
0115                 audio-codec = <&tlv320aic32x4>;
0116                 audio-asrc = <&asrc>;
0117                 audio-routing =
0118                         "IN3_L", "Mic Jack",
0119                         "Mic Jack", "Mic Bias",
0120                         "IN1_L", "Line In Jack",
0121                         "IN1_R", "Line In Jack",
0122                         "Line Out Jack", "LOL",
0123                         "Line Out Jack", "LOR";
0124                 mux-int-port = <1>;
0125                 mux-ext-port = <3>;
0126         };
0127 };
0128 
0129 &audmux {
0130         status = "okay";
0131 
0132         ssi0 {
0133                 fsl,audmux-port = <MX31_AUDMUX_PORT1_SSI0>;
0134                 fsl,port-config = <
0135                         (IMX_AUDMUX_V2_PTCR_SYN |
0136                                 IMX_AUDMUX_V2_PTCR_TFSDIR |
0137                                 IMX_AUDMUX_V2_PTCR_TFSEL(MX31_AUDMUX_PORT3_SSI_PINS_3) |
0138                                 IMX_AUDMUX_V2_PTCR_TCLKDIR |
0139                                 IMX_AUDMUX_V2_PTCR_TCSEL(MX31_AUDMUX_PORT3_SSI_PINS_3))
0140                         IMX_AUDMUX_V2_PDCR_RXDSEL(MX31_AUDMUX_PORT3_SSI_PINS_3)
0141                 >;
0142         };
0143 
0144         aud3 {
0145                 fsl,audmux-port = <MX31_AUDMUX_PORT3_SSI_PINS_3>;
0146                 fsl,port-config = <
0147                         IMX_AUDMUX_V2_PTCR_SYN
0148                         IMX_AUDMUX_V2_PDCR_RXDSEL(MX31_AUDMUX_PORT1_SSI0)
0149                 >;
0150         };
0151 };
0152 
0153 &can1 {
0154         pinctrl-names = "default";
0155         pinctrl-0 = <&pinctrl_can1>;
0156         status = "okay";
0157 };
0158 
0159 &can2 {
0160         pinctrl-names = "default";
0161         pinctrl-0 = <&pinctrl_can2>;
0162         status = "okay";
0163 };
0164 
0165 &ecspi1 {
0166         pinctrl-names = "default";
0167         pinctrl-0 = <&pinctrl_ecspi1>, <&pinctrl_ecspi1_mba6>;
0168         cs-gpios = <&gpio3 19 0>, <&gpio3 24 0>;
0169 };
0170 
0171 &fec {
0172         phy-mode = "rgmii-id";
0173         phy-handle = <&ethphy>;
0174         mac-address = [00 00 00 00 00 00];
0175         status = "okay";
0176 
0177         mdio {
0178                 #address-cells = <1>;
0179                 #size-cells = <0>;
0180 
0181                 ethphy: ethernet-phy@3 {
0182                         compatible = "ethernet-phy-ieee802.3-c22";
0183                         reg = <3>;
0184                         interrupt-parent = <&gpio1>;
0185                         interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
0186                         reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
0187                         reset-assert-us = <1000>;
0188                         reset-deassert-us = <100000>;
0189                         micrel,force-master;
0190                         max-speed = <1000>;
0191                 };
0192         };
0193 };
0194 
0195 &i2c1 {
0196         tlv320aic32x4: audio-codec@18 {
0197                 compatible = "ti,tlv320aic32x4";
0198                 reg = <0x18>;
0199                 clocks = <&clks IMX6QDL_CLK_CKO>;
0200                 clock-names = "mclk";
0201                 pinctrl-names = "default";
0202                 pinctrl-0 = <&pinctrl_codec>;
0203                 ldoin-supply = <&reg_vcc3v3_audio>;
0204                 iov-supply = <&reg_mba6_3p3v>;
0205         };
0206 };
0207 
0208 &pcie {
0209         pinctrl-names = "default";
0210         pinctrl-0 = <&pinctrl_pcie>;
0211         reset-gpio = <&gpio6 7 GPIO_ACTIVE_LOW>;
0212         status = "okay";
0213 };
0214 
0215 &pwm1 {
0216         pinctrl-names = "default";
0217         pinctrl-0 = <&pinctrl_pwm1>;
0218         status = "okay";
0219 };
0220 
0221 &pwm3 {
0222         pinctrl-names = "default";
0223         pinctrl-0 = <&pinctrl_pwm3>;
0224         status = "okay";
0225 };
0226 
0227 &pwm4 {
0228         pinctrl-names = "default";
0229         pinctrl-0 = <&pinctrl_pwm4>;
0230         status = "okay";
0231 };
0232 
0233 &snvs_poweroff {
0234         status = "okay";
0235 };
0236 
0237 &ssi1 {
0238         status = "okay";
0239 };
0240 
0241 &uart2 {
0242         pinctrl-names = "default";
0243         pinctrl-0 = <&pinctrl_uart2>;
0244         status = "okay";
0245 };
0246 
0247 
0248 &uart3 {
0249         pinctrl-names = "default";
0250         pinctrl-0 = <&pinctrl_uart3>;
0251         uart-has-rtscts;
0252         status = "okay";
0253 };
0254 
0255 &uart4 {
0256         pinctrl-names = "default";
0257         pinctrl-0 = <&pinctrl_uart4>;
0258         uart-has-rtscts;
0259         linux,rs485-enabled-at-boot-time;
0260         rs485-rts-active-low;
0261         rs485-rx-during-tx;
0262         status = "okay";
0263 };
0264 
0265 &uart5 {
0266         pinctrl-names = "default";
0267         pinctrl-0 = <&pinctrl_uart5>;
0268         uart-has-rtscts;
0269         status = "okay";
0270 };
0271 
0272 &usbh1 {
0273         disable-over-current;
0274         status = "okay";
0275 };
0276 
0277 &usbotg {
0278         pinctrl-names = "default";
0279         pinctrl-0 = <&pinctrl_usbotg>;
0280         power-active-high;
0281         over-current-active-low;
0282         srp-disable;
0283         hnp-disable;
0284         adp-disable;
0285         dr_mode = "otg";
0286         status = "okay";
0287 };
0288 
0289 /* SD card slot */
0290 &usdhc2 {
0291         pinctrl-names = "default";
0292         pinctrl-0 = <&pinctrl_usdhc2>;
0293         vmmc-supply = <&reg_mba6_3p3v>;
0294         bus-width = <4>;
0295         no-1-8-v;
0296         no-mmc;
0297         no-sdio;
0298         cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
0299         wp-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
0300         status = "okay";
0301 };
0302 
0303 &wdog1 {
0304         pinctrl-names = "default";
0305         pinctrl-0 = <&pinctrl_wdog1>;
0306         /* does not work on unmodified starter kit */
0307         /* fsl,ext-reset-output; */
0308         status = "okay";
0309 };
0310 
0311 &iomuxc {
0312         pinctrl-names = "default";
0313         pinctrl-0 = <&pinctrl_hog>;
0314 
0315         pinctrl_audmux: audmuxgrp {
0316                 fsl,pins = <
0317                         MX6QDL_PAD_CSI0_DAT7__AUD3_RXD  0x1b0b0
0318                         MX6QDL_PAD_CSI0_DAT4__AUD3_TXC  0x1b0b0
0319                         MX6QDL_PAD_CSI0_DAT5__AUD3_TXD  0x1b0b0
0320                         MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x1b0b0
0321                 >;
0322         };
0323 
0324         pinctrl_can1: can1grp {
0325                 fsl,pins = <
0326                         MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX 0xb099
0327                         MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX 0xb099
0328                 >;
0329         };
0330 
0331         pinctrl_can2: can2grp {
0332                 fsl,pins = <
0333                         MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX 0xb099
0334                         MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX 0xb099
0335                 >;
0336         };
0337 
0338         pinctrl_codec: codecgrp {
0339                 fsl,pins = <
0340                         MX6QDL_PAD_CSI0_MCLK__CCM_CLKO1 0xb0 /* CLK */
0341                 >;
0342         };
0343 
0344         pinctrl_ecspi1_mba6: ecspimba6grp {
0345                 fsl,pins = <
0346                         MX6QDL_PAD_EIM_D24__GPIO3_IO24 0xb099 /* eCSPI1 SS2 */
0347                 >;
0348         };
0349 
0350         pinctrl_enet: enetgrp {
0351                 fsl,pins = <
0352                         /* FEC phy IRQ */
0353                         MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28     0x00011008
0354                         /* FEC phy reset */
0355                         MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25   0x1b099
0356                         /* DSE = 100, 100k up, SPEED = MED */
0357                         MX6QDL_PAD_ENET_MDIO__ENET_MDIO       0xb0a0
0358                         MX6QDL_PAD_ENET_MDC__ENET_MDC         0xb0a0
0359                         /* DSE = 111, pull 100k up */
0360                         MX6QDL_PAD_RGMII_TXC__RGMII_TXC       0xb038
0361                         MX6QDL_PAD_RGMII_TD0__RGMII_TD0       0xb038
0362                         MX6QDL_PAD_RGMII_TD1__RGMII_TD1       0xb038
0363                         MX6QDL_PAD_RGMII_TD2__RGMII_TD2       0xb038
0364                         MX6QDL_PAD_RGMII_TD3__RGMII_TD3       0xb038
0365                         MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0xb038
0366                         /* DSE = 111, pull external */
0367                         MX6QDL_PAD_RGMII_RXC__RGMII_RXC       0x0038
0368                         MX6QDL_PAD_RGMII_RD0__RGMII_RD0       0x0038
0369                         MX6QDL_PAD_RGMII_RD1__RGMII_RD1       0x0038
0370                         MX6QDL_PAD_RGMII_RD2__RGMII_RD2       0x0038
0371                         MX6QDL_PAD_RGMII_RD3__RGMII_RD3       0x0038
0372                         MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x0038
0373                         /* HYS = 1, DSE = 111, 100k up, SPEED = HIGH */
0374                         MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK  0x1b0f0
0375                 >;
0376         };
0377 
0378         pinctrl_gpiobeeper: gpiobeepergrp {
0379                 fsl,pins = <
0380                         MX6QDL_PAD_SD1_DAT3__GPIO1_IO21 0xb099
0381                 >;
0382         };
0383 
0384         pinctrl_gpiobuttons: gpiobuttongrp {
0385                 fsl,pins = <
0386                         MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x0001b099
0387                         MX6QDL_PAD_GPIO_18__GPIO7_IO13 0x0001b099
0388                         MX6QDL_PAD_GPIO_8__GPIO1_IO08 0x0001b099
0389                 >;
0390         };
0391 
0392         pinctrl_gpioled: gpioledgrp {
0393                 fsl,pins = <
0394                         MX6QDL_PAD_NANDF_CS3__GPIO6_IO16 0xb099 /* LED V15 */
0395                         MX6QDL_PAD_EIM_BCLK__GPIO6_IO31 0xb099 /* LED V16 */
0396                 >;
0397         };
0398 
0399         pinctrl_hog: hoggrp {
0400                 fsl,pins = <
0401                         MX6QDL_PAD_DI0_PIN4__GPIO4_IO20 0x0001b099
0402 
0403                         MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x0001b099
0404                         MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x0001b099
0405                         MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x0001b099
0406 
0407                         MX6QDL_PAD_NANDF_D1__GPIO2_IO01 0x0001b099
0408                         MX6QDL_PAD_NANDF_D2__GPIO2_IO02 0x0001b099
0409                         MX6QDL_PAD_NANDF_D3__GPIO2_IO03 0x0001b099
0410                         MX6QDL_PAD_SD4_DAT0__GPIO2_IO08 0x0001b099
0411                         MX6QDL_PAD_EIM_CS0__GPIO2_IO23 0x0001b099
0412                         MX6QDL_PAD_EIM_CS1__GPIO2_IO24 0x0001b099
0413                         MX6QDL_PAD_EIM_OE__GPIO2_IO25 0x0001b099
0414 
0415                         MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x0001b099
0416                         MX6QDL_PAD_EIM_D26__GPIO3_IO26 0x0001b099
0417                         MX6QDL_PAD_EIM_D27__GPIO3_IO27 0x0001b099
0418                         MX6QDL_PAD_EIM_D28__GPIO3_IO28 0x0001b099
0419                         MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x0001b099
0420 
0421                         MX6QDL_PAD_KEY_COL0__GPIO4_IO06 0x0001b099
0422                         MX6QDL_PAD_KEY_ROW0__GPIO4_IO07 0x0001b099
0423                         MX6QDL_PAD_KEY_COL1__GPIO4_IO08 0x0001b099
0424                         MX6QDL_PAD_KEY_ROW1__GPIO4_IO09 0x0001b099
0425 
0426                         MX6QDL_PAD_CSI0_PIXCLK__GPIO5_IO18 0x0001b099
0427                         MX6QDL_PAD_CSI0_DATA_EN__GPIO5_IO20 0x0001b099
0428                         MX6QDL_PAD_CSI0_VSYNC__GPIO5_IO21 0x0001b099
0429 
0430                         MX6QDL_PAD_NANDF_ALE__GPIO6_IO08 0x0001b099
0431                         MX6QDL_PAD_NANDF_CS1__GPIO6_IO14 0x0001b099
0432                 >;
0433         };
0434 
0435         pinctrl_pcie: pciegrp {
0436                 fsl,pins = <
0437                         /* HYS = 1, DSE = 110, 100k up, SPEED = HIGH (11)*/
0438                         MX6QDL_PAD_SD4_DAT3__GPIO2_IO11 0x001b0f0 /* #PCIE.WAKE */
0439                         MX6QDL_PAD_NANDF_CLE__GPIO6_IO07 0x001b0f0 /* #PCIE.RST */
0440                         MX6QDL_PAD_NANDF_CS0__GPIO6_IO11 0x001b0f0 /* #PCIE.DIS */
0441                 >;
0442         };
0443 
0444         pinctrl_pwm1: pwm1grp {
0445                 fsl,pins = <
0446                         /* 100 k PD, DSE 120 OHM, SPPEED LO */
0447                         MX6QDL_PAD_GPIO_9__PWM1_OUT 0x00003050
0448                 >;
0449         };
0450 
0451         pinctrl_pwm3: pwm3grp {
0452                 fsl,pins = <
0453                         /* 100 k PD, DSE 120 OHM, SPPEED LO */
0454                         MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x00003050
0455                 >;
0456         };
0457 
0458         pinctrl_pwm4: pwm4grp {
0459                 fsl,pins = <
0460                         /* 100 k PD, DSE 120 OHM, SPPEED LO */
0461                         MX6QDL_PAD_SD4_DAT2__PWM4_OUT 0x00003050
0462                 >;
0463         };
0464 
0465         pinctrl_regpcie: regpciegrp {
0466                 fsl,pins = <
0467                         /* HYS = 1, DSE = 110, PUE+PKE, SPEED = HIGH (11)*/
0468                         MX6QDL_PAD_NANDF_D0__GPIO2_IO00 0x00130f0 /* PCIE.PWR_EN */
0469                 >;
0470         };
0471 
0472         pinctrl_uart2: uart2grp {
0473                 fsl,pins = <
0474                         MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA 0x1b099
0475                         MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA 0x1b099
0476                 >;
0477         };
0478 
0479         pinctrl_uart3: uart3grp {
0480                 fsl,pins = <
0481                         MX6QDL_PAD_SD4_CLK__UART3_RX_DATA 0x1b0b1
0482                         MX6QDL_PAD_SD4_CMD__UART3_TX_DATA 0x1b0b1
0483                         MX6QDL_PAD_EIM_D30__UART3_CTS_B   0x1b0b1
0484                         MX6QDL_PAD_EIM_D31__UART3_RTS_B   0x1b0b1
0485                 >;
0486         };
0487 
0488         pinctrl_uart4: uart4grp {
0489                 fsl,pins = <
0490                         MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA 0x1b0b1
0491                         MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA 0x1b0b1
0492                         MX6QDL_PAD_CSI0_DAT16__UART4_RTS_B 0x1b0b1
0493                         MX6QDL_PAD_CSI0_DAT17__UART4_CTS_B 0x1b0b1
0494                 >;
0495         };
0496 
0497         pinctrl_uart5: uart5grp {
0498                 fsl,pins = <
0499                         MX6QDL_PAD_CSI0_DAT14__UART5_TX_DATA 0x1b0b1
0500                         MX6QDL_PAD_CSI0_DAT15__UART5_RX_DATA 0x1b0b1
0501                         MX6QDL_PAD_CSI0_DAT18__UART5_RTS_B 0x1b0b1
0502                         MX6QDL_PAD_CSI0_DAT19__UART5_CTS_B 0x1b0b1
0503                 >;
0504         };
0505 
0506         pinctrl_usdhc2: usdhc2grp {
0507                 fsl,pins = <
0508                         /* CLK: 47k Pup SPD_LOW DSE 40Ohm SRE_FAST HYS */
0509                         MX6QDL_PAD_SD2_CLK__SD2_CLK    0x00017071
0510                         /* SD2: 47k Pup SPD_LOW DSE 80Ohm SRE_FAST HYS */
0511                         MX6QDL_PAD_SD2_CMD__SD2_CMD    0x00017059
0512                         MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x00017059
0513                         MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x00017059
0514                         MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x00017059
0515                         MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x00017059
0516 
0517                         MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x0001b099 /* usdhc2 CD */
0518                         MX6QDL_PAD_GPIO_2__GPIO1_IO02  0x0001b099 /* usdhc2 WP */
0519                 >;
0520         };
0521 
0522         pinctrl_usbotg: usbotggrp {
0523                 fsl,pins = <
0524                         MX6QDL_PAD_EIM_D21__USB_OTG_OC  0x0001b0b0
0525                         MX6QDL_PAD_GPIO_1__USB_OTG_ID   0x00017059
0526                         MX6QDL_PAD_EIM_D22__USB_OTG_PWR 0x0001b099
0527                 >;
0528         };
0529 
0530         pinctrl_wdog1: wdog1grp {
0531                 fsl,pins = <
0532                          /* Watchdog out */
0533                         MX6QDL_PAD_SD1_DAT2__WDOG1_B 0x0000b099
0534                 >;
0535         };
0536 };