Commit 44d379cf3d846b046b2edf2df5c302159a5b1ac5
1 parent
2a0a07c753
Exists in
smarc-imx_v2018.03_4.14.78_1.0.0_ga
Make changes for hardware rev. 00E0
Showing 2 changed files with 7 additions and 7 deletions Inline Diff
arch/arm/dts/fsl-smarcimx8mq.dts
1 | /* | 1 | /* |
2 | * Copyright (C) 2016 Freescale Semiconductor, Inc. | 2 | * Copyright (C) 2016 Freescale Semiconductor, Inc. |
3 | * Copyright 2017 NXP | 3 | * Copyright 2017 NXP |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or | 5 | * This program is free software; you can redistribute it and/or |
6 | * modify it under the terms of the GNU General Public License | 6 | * modify it under the terms of the GNU General Public License |
7 | * as published by the Free Software Foundation; either version 2 | 7 | * as published by the Free Software Foundation; either version 2 |
8 | * of the License, or (at your option) any later version. | 8 | * of the License, or (at your option) any later version. |
9 | * | 9 | * |
10 | * This program is distributed in the hope that it will be useful, | 10 | * This program is distributed in the hope that it will be useful, |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | * GNU General Public License for more details. | 13 | * GNU General Public License for more details. |
14 | */ | 14 | */ |
15 | 15 | ||
16 | /dts-v1/; | 16 | /dts-v1/; |
17 | 17 | ||
18 | /* First 128KB is for PSCI ATF. */ | 18 | /* First 128KB is for PSCI ATF. */ |
19 | /memreserve/ 0x40000000 0x00020000; | 19 | /memreserve/ 0x40000000 0x00020000; |
20 | 20 | ||
21 | #include "fsl-imx8mq.dtsi" | 21 | #include "fsl-imx8mq.dtsi" |
22 | 22 | ||
23 | / { | 23 | / { |
24 | model = "Embedian SMARC-iMX8M Computer on Module"; | 24 | model = "Embedian SMARC-iMX8M Computer on Module"; |
25 | compatible = "embedian,imx8mq-smarcimx8m", "fsl,imx8mq"; | 25 | compatible = "embedian,imx8mq-smarcimx8m", "fsl,imx8mq"; |
26 | 26 | ||
27 | regulators { | 27 | regulators { |
28 | compatible = "simple-bus"; | 28 | compatible = "simple-bus"; |
29 | #address-cells = <1>; | 29 | #address-cells = <1>; |
30 | #size-cells = <0>; | 30 | #size-cells = <0>; |
31 | 31 | ||
32 | reg_usdhc2_vmmc: usdhc2_vmmc { | 32 | reg_usdhc2_vmmc: usdhc2_vmmc { |
33 | compatible = "regulator-fixed"; | 33 | compatible = "regulator-fixed"; |
34 | regulator-name = "VSD_3V3"; | 34 | regulator-name = "VSD_3V3"; |
35 | regulator-min-microvolt = <3300000>; | 35 | regulator-min-microvolt = <3300000>; |
36 | regulator-max-microvolt = <3300000>; | 36 | regulator-max-microvolt = <3300000>; |
37 | gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>; | 37 | gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>; |
38 | enable-active-high; | 38 | enable-active-high; |
39 | }; | 39 | }; |
40 | }; | 40 | }; |
41 | 41 | ||
42 | backlight: backlight { | 42 | backlight: backlight { |
43 | compatible = "pwm-backlight"; | 43 | compatible = "pwm-backlight"; |
44 | pwms = <&pwm1 0 1000000 0>; | 44 | pwms = <&pwm1 0 1000000 0>; |
45 | brightness-levels = < 0 1 2 3 4 5 6 7 8 9 | 45 | brightness-levels = < 0 1 2 3 4 5 6 7 8 9 |
46 | 10 11 12 13 14 15 16 17 18 19 | 46 | 10 11 12 13 14 15 16 17 18 19 |
47 | 20 21 22 23 24 25 26 27 28 29 | 47 | 20 21 22 23 24 25 26 27 28 29 |
48 | 30 31 32 33 34 35 36 37 38 39 | 48 | 30 31 32 33 34 35 36 37 38 39 |
49 | 40 41 42 43 44 45 46 47 48 49 | 49 | 40 41 42 43 44 45 46 47 48 49 |
50 | 50 51 52 53 54 55 56 57 58 59 | 50 | 50 51 52 53 54 55 56 57 58 59 |
51 | 60 61 62 63 64 65 66 67 68 69 | 51 | 60 61 62 63 64 65 66 67 68 69 |
52 | 70 71 72 73 74 75 76 77 78 79 | 52 | 70 71 72 73 74 75 76 77 78 79 |
53 | 80 81 82 83 84 85 86 87 88 89 | 53 | 80 81 82 83 84 85 86 87 88 89 |
54 | 90 91 92 93 94 95 96 97 98 99 | 54 | 90 91 92 93 94 95 96 97 98 99 |
55 | 100>; | 55 | 100>; |
56 | default-brightness-level = <80>; | 56 | default-brightness-level = <80>; |
57 | status = "disabled"; | 57 | status = "disabled"; |
58 | }; | 58 | }; |
59 | }; | 59 | }; |
60 | 60 | ||
61 | &iomuxc { | 61 | &iomuxc { |
62 | pinctrl-names = "default"; | 62 | pinctrl-names = "default"; |
63 | 63 | ||
64 | smarc-imx8mq { | 64 | smarc-imx8mq { |
65 | pinctrl_fec1: fec1grp { | 65 | pinctrl_fec1: fec1grp { |
66 | fsl,pins = < | 66 | fsl,pins = < |
67 | MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC 0x3 | 67 | MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC 0x3 |
68 | MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO 0x23 | 68 | MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO 0x23 |
69 | MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f | 69 | MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f |
70 | MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f | 70 | MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f |
71 | MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f | 71 | MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f |
72 | MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f | 72 | MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f |
73 | MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91 | 73 | MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91 |
74 | MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91 | 74 | MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91 |
75 | MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91 | 75 | MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91 |
76 | MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91 | 76 | MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91 |
77 | MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f | 77 | MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f |
78 | MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91 | 78 | MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91 |
79 | MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91 | 79 | MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91 |
80 | MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f | 80 | MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f |
81 | >; | 81 | >; |
82 | }; | 82 | }; |
83 | 83 | ||
84 | pinctrl_i2c1: i2c1grp { | 84 | pinctrl_i2c1: i2c1grp { |
85 | fsl,pins = < | 85 | fsl,pins = < |
86 | MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL 0x4000007f | 86 | MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL 0x4000007f |
87 | MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA 0x4000007f | 87 | MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA 0x4000007f |
88 | >; | 88 | >; |
89 | }; | 89 | }; |
90 | 90 | ||
91 | pinctrl_i2c2: i2c2grp { | 91 | pinctrl_i2c2: i2c2grp { |
92 | fsl,pins = < | 92 | fsl,pins = < |
93 | MX8MQ_IOMUXC_I2C2_SCL_I2C2_SCL 0x4000007f | 93 | MX8MQ_IOMUXC_I2C2_SCL_I2C2_SCL 0x4000007f |
94 | MX8MQ_IOMUXC_I2C2_SDA_I2C2_SDA 0x4000007f | 94 | MX8MQ_IOMUXC_I2C2_SDA_I2C2_SDA 0x4000007f |
95 | >; | 95 | >; |
96 | }; | 96 | }; |
97 | 97 | ||
98 | pinctrl_i2c3: i2c3grp { | 98 | pinctrl_i2c3: i2c3grp { |
99 | fsl,pins = < | 99 | fsl,pins = < |
100 | MX8MQ_IOMUXC_I2C3_SCL_I2C3_SCL 0x4000007f | 100 | MX8MQ_IOMUXC_I2C3_SCL_I2C3_SCL 0x4000007f |
101 | MX8MQ_IOMUXC_I2C3_SDA_I2C3_SDA 0x4000007f | 101 | MX8MQ_IOMUXC_I2C3_SDA_I2C3_SDA 0x4000007f |
102 | >; | 102 | >; |
103 | }; | 103 | }; |
104 | 104 | ||
105 | pinctrl_i2c4: i2c4grp { | 105 | pinctrl_i2c4: i2c4grp { |
106 | fsl,pins = < | 106 | fsl,pins = < |
107 | MX8MQ_IOMUXC_I2C4_SCL_I2C4_SCL 0x4000007f | 107 | MX8MQ_IOMUXC_I2C4_SCL_I2C4_SCL 0x4000007f |
108 | MX8MQ_IOMUXC_I2C4_SDA_I2C4_SDA 0x4000007f | 108 | MX8MQ_IOMUXC_I2C4_SDA_I2C4_SDA 0x4000007f |
109 | >; | 109 | >; |
110 | }; | 110 | }; |
111 | 111 | ||
112 | 112 | ||
113 | pinctrl_pcie0: pcie0grp { | 113 | pinctrl_pcie0: pcie0grp { |
114 | fsl,pins = < | 114 | fsl,pins = < |
115 | MX8MQ_IOMUXC_NAND_CE2_B_GPIO3_IO3 0x16 | 115 | MX8MQ_IOMUXC_NAND_CE2_B_GPIO3_IO3 0x16 |
116 | >; | 116 | >; |
117 | }; | 117 | }; |
118 | 118 | ||
119 | pinctrl_pcie1: pcie1grp { | 119 | pinctrl_pcie1: pcie1grp { |
120 | fsl,pins = < | 120 | fsl,pins = < |
121 | MX8MQ_IOMUXC_NAND_CE3_B_GPIO3_IO4 0x16 | 121 | MX8MQ_IOMUXC_NAND_CE3_B_GPIO3_IO4 0x16 |
122 | >; | 122 | >; |
123 | }; | 123 | }; |
124 | 124 | ||
125 | pinctrl_pwm1: pwm1grp { | 125 | pinctrl_pwm1: pwm1grp { |
126 | fsl,pins = < | 126 | fsl,pins = < |
127 | MX8MQ_IOMUXC_SPDIF_EXT_CLK_PWM1_OUT 0x16 | 127 | MX8MQ_IOMUXC_SPDIF_EXT_CLK_PWM1_OUT 0x16 |
128 | >; | 128 | >; |
129 | }; | 129 | }; |
130 | 130 | ||
131 | pinctrl_qspi: qspigrp { | 131 | pinctrl_qspi: qspigrp { |
132 | fsl,pins = < | 132 | fsl,pins = < |
133 | MX8MQ_IOMUXC_NAND_ALE_QSPI_A_SCLK 0x82 | 133 | MX8MQ_IOMUXC_NAND_ALE_QSPI_A_SCLK 0x82 |
134 | MX8MQ_IOMUXC_NAND_CE0_B_QSPI_A_SS0_B 0x82 | 134 | MX8MQ_IOMUXC_NAND_CE0_B_QSPI_A_SS0_B 0x82 |
135 | MX8MQ_IOMUXC_NAND_CE1_B_QSPI_A_SS1_B 0x82 | 135 | MX8MQ_IOMUXC_NAND_CE1_B_QSPI_A_SS1_B 0x82 |
136 | MX8MQ_IOMUXC_NAND_DATA00_QSPI_A_DATA0 0x82 | 136 | MX8MQ_IOMUXC_NAND_DATA00_QSPI_A_DATA0 0x82 |
137 | MX8MQ_IOMUXC_NAND_DATA01_QSPI_A_DATA1 0x82 | 137 | MX8MQ_IOMUXC_NAND_DATA01_QSPI_A_DATA1 0x82 |
138 | MX8MQ_IOMUXC_NAND_DATA02_QSPI_A_DATA2 0x82 | 138 | MX8MQ_IOMUXC_NAND_DATA02_QSPI_A_DATA2 0x82 |
139 | MX8MQ_IOMUXC_NAND_DATA03_QSPI_A_DATA3 0x82 | 139 | MX8MQ_IOMUXC_NAND_DATA03_QSPI_A_DATA3 0x82 |
140 | 140 | ||
141 | >; | 141 | >; |
142 | }; | 142 | }; |
143 | 143 | ||
144 | pinctrl_uart1: uart1grp { | 144 | pinctrl_uart1: uart1grp { |
145 | fsl,pins = < | 145 | fsl,pins = < |
146 | MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX 0x79 | 146 | MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX 0x79 |
147 | MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX 0x79 | 147 | MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX 0x79 |
148 | >; | 148 | >; |
149 | }; | 149 | }; |
150 | 150 | ||
151 | pinctrl_uart2: uart2grp { | 151 | pinctrl_uart2: uart2grp { |
152 | fsl,pins = < | 152 | fsl,pins = < |
153 | MX8MQ_IOMUXC_UART2_RXD_UART2_DCE_RX 0x79 | 153 | MX8MQ_IOMUXC_UART2_RXD_UART2_DCE_RX 0x79 |
154 | MX8MQ_IOMUXC_UART2_TXD_UART2_DCE_TX 0x79 | 154 | MX8MQ_IOMUXC_UART2_TXD_UART2_DCE_TX 0x79 |
155 | MX8MQ_IOMUXC_ECSPI2_MOSI_GPIO5_IO11 0x19 /* RTS */ | 155 | MX8MQ_IOMUXC_UART4_TXD_UART2_DCE_RTS_B 0x79 /* RTS */ |
156 | MX8MQ_IOMUXC_ECSPI2_SCLK_GPIO5_IO10 0x19 /* CTS */ | 156 | MX8MQ_IOMUXC_UART4_RXD_UART2_DCE_CTS_B 0x79 /* CTS */ |
157 | |||
158 | >; | 157 | >; |
159 | }; | 158 | }; |
160 | 159 | ||
161 | pinctrl_uart3: uart3grp { | 160 | pinctrl_uart3: uart3grp { |
162 | fsl,pins = < | 161 | fsl,pins = < |
163 | MX8MQ_IOMUXC_UART3_RXD_UART3_DCE_RX 0x79 | 162 | MX8MQ_IOMUXC_UART3_RXD_UART3_DCE_RX 0x79 |
164 | MX8MQ_IOMUXC_UART3_TXD_UART3_DCE_TX 0x79 | 163 | MX8MQ_IOMUXC_UART3_TXD_UART3_DCE_TX 0x79 |
165 | >; | 164 | >; |
166 | }; | 165 | }; |
167 | 166 | ||
168 | pinctrl_uart4: uart4grp { | 167 | pinctrl_uart4: uart4grp { |
169 | fsl,pins = < | 168 | fsl,pins = < |
170 | MX8MQ_IOMUXC_UART4_RXD_UART4_DCE_RX 0x79 | 169 | MX8MQ_IOMUXC_UART4_RXD_UART4_DCE_RX 0x79 |
171 | MX8MQ_IOMUXC_UART4_TXD_UART4_DCE_TX 0x79 | 170 | MX8MQ_IOMUXC_UART4_TXD_UART4_DCE_TX 0x79 |
172 | >; | 171 | >; |
173 | }; | 172 | }; |
174 | 173 | ||
175 | pinctrl_usdhc1: usdhc1grp { | 174 | pinctrl_usdhc1: usdhc1grp { |
176 | fsl,pins = < | 175 | fsl,pins = < |
177 | MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x83 | 176 | MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x83 |
178 | MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc3 | 177 | MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc3 |
179 | MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc3 | 178 | MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc3 |
180 | MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc3 | 179 | MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc3 |
181 | MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc3 | 180 | MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc3 |
182 | MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc3 | 181 | MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc3 |
183 | MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc3 | 182 | MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc3 |
184 | MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc3 | 183 | MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc3 |
185 | MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc3 | 184 | MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc3 |
186 | MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc3 | 185 | MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc3 |
187 | MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x83 | 186 | MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x83 |
188 | MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1 | 187 | MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1 |
189 | >; | 188 | >; |
190 | }; | 189 | }; |
191 | 190 | ||
192 | pinctrl_usdhc1_100mhz: usdhc1grp100mhz { | 191 | pinctrl_usdhc1_100mhz: usdhc1grp100mhz { |
193 | fsl,pins = < | 192 | fsl,pins = < |
194 | MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x8d | 193 | MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x8d |
195 | MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xcd | 194 | MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xcd |
196 | MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xcd | 195 | MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xcd |
197 | MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xcd | 196 | MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xcd |
198 | MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xcd | 197 | MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xcd |
199 | MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xcd | 198 | MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xcd |
200 | MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xcd | 199 | MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xcd |
201 | MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xcd | 200 | MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xcd |
202 | MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xcd | 201 | MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xcd |
203 | MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xcd | 202 | MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xcd |
204 | MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x8d | 203 | MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x8d |
205 | MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1 | 204 | MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1 |
206 | >; | 205 | >; |
207 | }; | 206 | }; |
208 | 207 | ||
209 | pinctrl_usdhc1_200mhz: usdhc1grp200mhz { | 208 | pinctrl_usdhc1_200mhz: usdhc1grp200mhz { |
210 | fsl,pins = < | 209 | fsl,pins = < |
211 | MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x9f | 210 | MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x9f |
212 | MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xdf | 211 | MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xdf |
213 | MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xdf | 212 | MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xdf |
214 | MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xdf | 213 | MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xdf |
215 | MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xdf | 214 | MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xdf |
216 | MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xdf | 215 | MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xdf |
217 | MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xdf | 216 | MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xdf |
218 | MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xdf | 217 | MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xdf |
219 | MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xdf | 218 | MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xdf |
220 | MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xdf | 219 | MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xdf |
221 | MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x9f | 220 | MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x9f |
222 | MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1 | 221 | MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1 |
223 | >; | 222 | >; |
224 | }; | 223 | }; |
225 | 224 | ||
226 | pinctrl_usdhc2_gpio: usdhc2grpgpio { | 225 | pinctrl_usdhc2_gpio: usdhc2grpgpio { |
227 | fsl,pins = < | 226 | fsl,pins = < |
228 | MX8MQ_IOMUXC_SD2_WP_GPIO2_IO20 0x41 | 227 | MX8MQ_IOMUXC_SD2_WP_GPIO2_IO20 0x41 |
229 | MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12 0x41 | 228 | MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12 0x41 |
230 | MX8MQ_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41 | 229 | MX8MQ_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41 |
231 | >; | 230 | >; |
232 | }; | 231 | }; |
233 | 232 | ||
234 | pinctrl_usdhc2: usdhc2grp { | 233 | pinctrl_usdhc2: usdhc2grp { |
235 | fsl,pins = < | 234 | fsl,pins = < |
236 | MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x83 | 235 | MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x83 |
237 | MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc3 | 236 | MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc3 |
238 | MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc3 | 237 | MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc3 |
239 | MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc3 | 238 | MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc3 |
240 | MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc3 | 239 | MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc3 |
241 | MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc3 | 240 | MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc3 |
242 | >; | 241 | >; |
243 | }; | 242 | }; |
244 | 243 | ||
245 | pinctrl_usdhc2_100mhz: usdhc2grp100mhz { | 244 | pinctrl_usdhc2_100mhz: usdhc2grp100mhz { |
246 | fsl,pins = < | 245 | fsl,pins = < |
247 | MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x8d | 246 | MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x8d |
248 | MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xcd | 247 | MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xcd |
249 | MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xcd | 248 | MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xcd |
250 | MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xcd | 249 | MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xcd |
251 | MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xcd | 250 | MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xcd |
252 | MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xcd | 251 | MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xcd |
253 | >; | 252 | >; |
254 | }; | 253 | }; |
255 | 254 | ||
256 | pinctrl_usdhc2_200mhz: usdhc2grp200mhz { | 255 | pinctrl_usdhc2_200mhz: usdhc2grp200mhz { |
257 | fsl,pins = < | 256 | fsl,pins = < |
258 | MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x9f | 257 | MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x9f |
259 | MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xdf | 258 | MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xdf |
260 | MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xdf | 259 | MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xdf |
261 | MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xdf | 260 | MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xdf |
262 | MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xdf | 261 | MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xdf |
263 | MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xdf | 262 | MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xdf |
264 | >; | 263 | >; |
265 | }; | 264 | }; |
266 | 265 | ||
267 | pinctrl_sai2: sai2grp { | 266 | pinctrl_sai2: sai2grp { |
268 | fsl,pins = < | 267 | fsl,pins = < |
269 | MX8MQ_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC 0xd6 | 268 | MX8MQ_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC 0xd6 |
270 | MX8MQ_IOMUXC_SAI2_TXC_SAI2_TX_BCLK 0xd6 | 269 | MX8MQ_IOMUXC_SAI2_TXC_SAI2_TX_BCLK 0xd6 |
271 | MX8MQ_IOMUXC_SAI2_MCLK_SAI2_MCLK 0xd6 | 270 | MX8MQ_IOMUXC_SAI2_MCLK_SAI2_MCLK 0xd6 |
272 | MX8MQ_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0 0xd6 | 271 | MX8MQ_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0 0xd6 |
273 | MX8MQ_IOMUXC_GPIO1_IO08_GPIO1_IO8 0xd6 | 272 | MX8MQ_IOMUXC_GPIO1_IO08_GPIO1_IO8 0xd6 |
274 | >; | 273 | >; |
275 | }; | 274 | }; |
276 | 275 | ||
277 | pinctrl_wdog: wdoggrp { | 276 | pinctrl_wdog: wdoggrp { |
278 | fsl,pins = < | 277 | fsl,pins = < |
279 | MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0xc6 | 278 | MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0xc6 |
280 | >; | 279 | >; |
281 | }; | 280 | }; |
282 | }; | 281 | }; |
283 | }; | 282 | }; |
284 | 283 | ||
285 | &fec1 { | 284 | &fec1 { |
286 | pinctrl-names = "default"; | 285 | pinctrl-names = "default"; |
287 | pinctrl-0 = <&pinctrl_fec1>; | 286 | pinctrl-0 = <&pinctrl_fec1>; |
288 | phy-mode = "rgmii-id"; | 287 | phy-mode = "rgmii-id"; |
289 | phy-handle = <ðphy0>; | 288 | phy-handle = <ðphy0>; |
290 | fsl,magic-packet; | 289 | fsl,magic-packet; |
291 | interrupt-parent = <&gpio1>; | 290 | interrupt-parent = <&gpio1>; |
292 | interrupts = <11 IRQ_TYPE_EDGE_FALLING>; | 291 | interrupts = <11 IRQ_TYPE_EDGE_FALLING>; |
293 | status = "okay"; | 292 | status = "okay"; |
294 | 293 | ||
295 | mdio { | 294 | mdio { |
296 | #address-cells = <1>; | 295 | #address-cells = <1>; |
297 | #size-cells = <0>; | 296 | #size-cells = <0>; |
298 | 297 | ||
299 | ethphy0: ethernet-phy@0 { | 298 | ethphy0: ethernet-phy@0 { |
300 | compatible = "ethernet-phy-ieee802.3-c22"; | 299 | compatible = "ethernet-phy-ieee802.3-c22"; |
301 | reg = <0>; | 300 | reg = <0>; |
302 | at803x,led-act-blind-workaround; | 301 | at803x,led-act-blind-workaround; |
303 | at803x,eee-disabled; | 302 | at803x,eee-disabled; |
304 | }; | 303 | }; |
305 | }; | 304 | }; |
306 | }; | 305 | }; |
307 | 306 | ||
308 | &i2c1 { | 307 | &i2c1 { |
309 | clock-frequency = <100000>; | 308 | clock-frequency = <100000>; |
310 | pinctrl-names = "default"; | 309 | pinctrl-names = "default"; |
311 | pinctrl-0 = <&pinctrl_i2c1>; | 310 | pinctrl-0 = <&pinctrl_i2c1>; |
312 | status = "okay"; | 311 | status = "okay"; |
313 | 312 | ||
314 | pmic: pfuze100@08 { | 313 | pmic: pfuze100@08 { |
315 | compatible = "fsl,pfuze100"; | 314 | compatible = "fsl,pfuze100"; |
316 | reg = <0x08>; | 315 | reg = <0x08>; |
317 | 316 | ||
318 | regulators { | 317 | regulators { |
319 | sw1a_reg: sw1ab { | 318 | sw1a_reg: sw1ab { |
320 | regulator-min-microvolt = <300000>; | 319 | regulator-min-microvolt = <300000>; |
321 | regulator-max-microvolt = <1875000>; | 320 | regulator-max-microvolt = <1875000>; |
322 | regulator-always-on; | 321 | regulator-always-on; |
323 | }; | 322 | }; |
324 | 323 | ||
325 | sw1c_reg: sw1c { | 324 | sw1c_reg: sw1c { |
326 | regulator-min-microvolt = <300000>; | 325 | regulator-min-microvolt = <300000>; |
327 | regulator-max-microvolt = <1875000>; | 326 | regulator-max-microvolt = <1875000>; |
328 | regulator-always-on; | 327 | regulator-always-on; |
329 | }; | 328 | }; |
330 | 329 | ||
331 | sw2_reg: sw2 { | 330 | sw2_reg: sw2 { |
332 | regulator-min-microvolt = <800000>; | 331 | regulator-min-microvolt = <800000>; |
333 | regulator-max-microvolt = <3300000>; | 332 | regulator-max-microvolt = <3300000>; |
334 | regulator-always-on; | 333 | regulator-always-on; |
335 | }; | 334 | }; |
336 | 335 | ||
337 | sw3a_reg: sw3ab { | 336 | sw3a_reg: sw3ab { |
338 | regulator-min-microvolt = <400000>; | 337 | regulator-min-microvolt = <400000>; |
339 | regulator-max-microvolt = <1975000>; | 338 | regulator-max-microvolt = <1975000>; |
340 | regulator-always-on; | 339 | regulator-always-on; |
341 | }; | 340 | }; |
342 | 341 | ||
343 | sw4_reg: sw4 { | 342 | sw4_reg: sw4 { |
344 | regulator-min-microvolt = <800000>; | 343 | regulator-min-microvolt = <800000>; |
345 | regulator-max-microvolt = <3300000>; | 344 | regulator-max-microvolt = <3300000>; |
346 | regulator-always-on; | 345 | regulator-always-on; |
347 | }; | 346 | }; |
348 | 347 | ||
349 | swbst_reg: swbst { | 348 | swbst_reg: swbst { |
350 | regulator-min-microvolt = <5000000>; | 349 | regulator-min-microvolt = <5000000>; |
351 | regulator-max-microvolt = <5150000>; | 350 | regulator-max-microvolt = <5150000>; |
352 | }; | 351 | }; |
353 | 352 | ||
354 | snvs_reg: vsnvs { | 353 | snvs_reg: vsnvs { |
355 | regulator-min-microvolt = <1000000>; | 354 | regulator-min-microvolt = <1000000>; |
356 | regulator-max-microvolt = <3000000>; | 355 | regulator-max-microvolt = <3000000>; |
357 | regulator-always-on; | 356 | regulator-always-on; |
358 | }; | 357 | }; |
359 | 358 | ||
360 | vref_reg: vrefddr { | 359 | vref_reg: vrefddr { |
361 | regulator-always-on; | 360 | regulator-always-on; |
362 | }; | 361 | }; |
363 | 362 | ||
364 | vgen1_reg: vgen1 { | 363 | vgen1_reg: vgen1 { |
365 | regulator-min-microvolt = <800000>; | 364 | regulator-min-microvolt = <800000>; |
366 | regulator-max-microvolt = <1550000>; | 365 | regulator-max-microvolt = <1550000>; |
367 | }; | 366 | }; |
368 | 367 | ||
369 | vgen2_reg: vgen2 { | 368 | vgen2_reg: vgen2 { |
370 | regulator-min-microvolt = <800000>; | 369 | regulator-min-microvolt = <800000>; |
371 | regulator-max-microvolt = <1550000>; | 370 | regulator-max-microvolt = <1550000>; |
372 | regulator-always-on; | 371 | regulator-always-on; |
373 | }; | 372 | }; |
374 | 373 | ||
375 | vgen3_reg: vgen3 { | 374 | vgen3_reg: vgen3 { |
376 | regulator-min-microvolt = <1800000>; | 375 | regulator-min-microvolt = <1800000>; |
377 | regulator-max-microvolt = <3300000>; | 376 | regulator-max-microvolt = <3300000>; |
378 | regulator-always-on; | 377 | regulator-always-on; |
379 | }; | 378 | }; |
380 | 379 | ||
381 | vgen4_reg: vgen4 { | 380 | vgen4_reg: vgen4 { |
382 | regulator-min-microvolt = <1800000>; | 381 | regulator-min-microvolt = <1800000>; |
383 | regulator-max-microvolt = <3300000>; | 382 | regulator-max-microvolt = <3300000>; |
384 | regulator-always-on; | 383 | regulator-always-on; |
385 | }; | 384 | }; |
386 | 385 | ||
387 | vgen5_reg: vgen5 { | 386 | vgen5_reg: vgen5 { |
388 | regulator-min-microvolt = <1800000>; | 387 | regulator-min-microvolt = <1800000>; |
389 | regulator-max-microvolt = <3300000>; | 388 | regulator-max-microvolt = <3300000>; |
390 | regulator-always-on; | 389 | regulator-always-on; |
391 | }; | 390 | }; |
392 | 391 | ||
393 | vgen6_reg: vgen6 { | 392 | vgen6_reg: vgen6 { |
394 | regulator-min-microvolt = <1800000>; | 393 | regulator-min-microvolt = <1800000>; |
395 | regulator-max-microvolt = <3300000>; | 394 | regulator-max-microvolt = <3300000>; |
396 | regulator-always-on; | ||
397 | }; | 395 | }; |
398 | }; | 396 | }; |
399 | }; | 397 | }; |
400 | 398 | ||
401 | s35390a: s35390a@30 { | 399 | s35390a: s35390a@30 { |
402 | compatible = "s35390a"; | 400 | compatible = "s35390a"; |
403 | reg = <0x30>; | 401 | reg = <0x30>; |
404 | }; | 402 | }; |
405 | 403 | ||
406 | cape_eeprom0: cape_eeprom@57 { | 404 | cape_eeprom0: cape_eeprom@57 { |
407 | compatible = "at,24c256"; | 405 | compatible = "at,24c256"; |
408 | reg = <0x57>; | 406 | reg = <0x57>; |
409 | }; | 407 | }; |
410 | }; | 408 | }; |
411 | 409 | ||
412 | &i2c2 { | 410 | &i2c2 { |
413 | clock-frequency = <100000>; | 411 | clock-frequency = <100000>; |
414 | pinctrl-names = "default"; | 412 | pinctrl-names = "default"; |
415 | pinctrl-0 = <&pinctrl_i2c2>; | 413 | pinctrl-0 = <&pinctrl_i2c2>; |
416 | status = "okay"; | 414 | status = "okay"; |
417 | 415 | ||
418 | baseboard_eeprom: baseboard_eeprom@50 { | 416 | baseboard_eeprom: baseboard_eeprom@50 { |
419 | compatible = "at,24c256"; | 417 | compatible = "at,24c256"; |
420 | reg = <0x50>; | 418 | reg = <0x50>; |
421 | }; | 419 | }; |
422 | 420 | ||
423 | dsi_lvds_bridge: sn65dsi84@2c { | 421 | dsi_lvds_bridge: sn65dsi84@2c { |
424 | status = "disabled"; | 422 | status = "disabled"; |
425 | reg = <0x2c>; | 423 | reg = <0x2c>; |
426 | compatible = "ti,sn65dsi84"; | 424 | compatible = "ti,sn65dsi84"; |
427 | enable-gpios = <&gpio4 2 GPIO_ACTIVE_HIGH>; | 425 | enable-gpios = <&gpio4 2 GPIO_ACTIVE_HIGH>; |
428 | interrupt-parent = <&gpio4>; | 426 | interrupt-parent = <&gpio4>; |
429 | interrupts = <4 IRQ_TYPE_EDGE_FALLING>; | 427 | interrupts = <4 IRQ_TYPE_EDGE_FALLING>; |
430 | 428 | ||
431 | /* AUO G070VW01 7-inch 800x480 LVDS Display */ | 429 | /* AUO G070VW01 7-inch 800x480 LVDS Display */ |
432 | sn65dsi84,addresses = < 0x09 0x0A 0x0B 0x0D 0x10 0x11 0x12 0x13 | 430 | sn65dsi84,addresses = < 0x09 0x0A 0x0B 0x0D 0x10 0x11 0x12 0x13 |
433 | 0x18 0x19 0x1A 0x1B 0x20 0x21 0x22 0x23 | 431 | 0x18 0x19 0x1A 0x1B 0x20 0x21 0x22 0x23 |
434 | 0x24 0x25 0x26 0x27 0x28 0x29 0x2A 0x2B | 432 | 0x24 0x25 0x26 0x27 0x28 0x29 0x2A 0x2B |
435 | 0x2C 0x2D 0x2E 0x2F 0x30 0x31 0x32 0x33 | 433 | 0x2C 0x2D 0x2E 0x2F 0x30 0x31 0x32 0x33 |
436 | 0x34 0x35 0x36 0x37 0x38 0x39 0x3A 0x3B | 434 | 0x34 0x35 0x36 0x37 0x38 0x39 0x3A 0x3B |
437 | 0x3C 0x3D 0x3E 0xE0 0x0D>; | 435 | 0x3C 0x3D 0x3E 0xE0 0x0D>; |
438 | 436 | ||
439 | sn65dsi84,values = < 0x00 0x01 0x10 0x00 0x26 0x00 0x13 0x00 | 437 | sn65dsi84,values = < 0x00 0x01 0x10 0x00 0x26 0x00 0x13 0x00 |
440 | 0x78 0x00 0x03 0x00 0x20 0x03 0x00 0x00 | 438 | 0x78 0x00 0x03 0x00 0x20 0x03 0x00 0x00 |
441 | 0x00 0x00 0x00 0x00 0x21 0x00 0x00 0x00 | 439 | 0x00 0x00 0x00 0x00 0x21 0x00 0x00 0x00 |
442 | 0x80 0x00 0x00 0x00 0x0e 0x00 0x00 0x00 | 440 | 0x80 0x00 0x00 0x00 0x0e 0x00 0x00 0x00 |
443 | 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | 441 | 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00 |
444 | 0x00 0x00 0x00 0x01 0x01>; | 442 | 0x00 0x00 0x00 0x01 0x01>; |
445 | 443 | ||
446 | /* AUO G185XW01 18.5-inch 1366x768 LVDS Display */ | 444 | /* AUO G185XW01 18.5-inch 1366x768 LVDS Display */ |
447 | /*sn65dsi84,addresses = < 0x09 0x0A 0x0B 0x0D 0x10 0x11 0x12 0x13 | 445 | /*sn65dsi84,addresses = < 0x09 0x0A 0x0B 0x0D 0x10 0x11 0x12 0x13 |
448 | 0x18 0x19 0x1A 0x1B 0x20 0x21 0x22 0x23 | 446 | 0x18 0x19 0x1A 0x1B 0x20 0x21 0x22 0x23 |
449 | 0x24 0x25 0x26 0x27 0x28 0x29 0x2A 0x2B | 447 | 0x24 0x25 0x26 0x27 0x28 0x29 0x2A 0x2B |
450 | 0x2C 0x2D 0x2E 0x2F 0x30 0x31 0x32 0x33 | 448 | 0x2C 0x2D 0x2E 0x2F 0x30 0x31 0x32 0x33 |
451 | 0x34 0x35 0x36 0x37 0x38 0x39 0x3A 0x3B | 449 | 0x34 0x35 0x36 0x37 0x38 0x39 0x3A 0x3B |
452 | 0x3C 0x3D 0x3E 0xE0 0x0D>; | 450 | 0x3C 0x3D 0x3E 0xE0 0x0D>; |
453 | 451 | ||
454 | sn65dsi84,values = < 0x00 0x05 0x10 0x00 0x26 0x00 0x2E 0x00 | 452 | sn65dsi84,values = < 0x00 0x05 0x10 0x00 0x26 0x00 0x2E 0x00 |
455 | 0x78 0x00 0x03 0x00 0x56 0x05 0x00 0x00 | 453 | 0x78 0x00 0x03 0x00 0x56 0x05 0x00 0x00 |
456 | 0x00 0x00 0x00 0x00 0x21 0x00 0x00 0x00 | 454 | 0x00 0x00 0x00 0x00 0x21 0x00 0x00 0x00 |
457 | 0x78 0x00 0x00 0x00 0x12 0x00 0x00 0x00 | 455 | 0x78 0x00 0x00 0x00 0x12 0x00 0x00 0x00 |
458 | 0x3C 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | 456 | 0x3C 0x00 0x00 0x00 0x00 0x00 0x00 0x00 |
459 | 0x00 0x00 0x00 0x01 0x01>;*/ | 457 | 0x00 0x00 0x00 0x01 0x01>;*/ |
460 | 458 | ||
461 | /* AUO G240HW01 V0 24-inch 1920x1080 LVDS Display */ | 459 | /* AUO G240HW01 V0 24-inch 1920x1080 LVDS Display */ |
462 | /*sn65dsi84,addresses = < 0x09 0x0A 0x0B 0x0D 0x10 0x11 0x12 0x13 | 460 | /*sn65dsi84,addresses = < 0x09 0x0A 0x0B 0x0D 0x10 0x11 0x12 0x13 |
463 | 0x18 0x19 0x1A 0x1B 0x20 0x21 0x22 0x23 | 461 | 0x18 0x19 0x1A 0x1B 0x20 0x21 0x22 0x23 |
464 | 0x24 0x25 0x26 0x27 0x28 0x29 0x2A 0x2B | 462 | 0x24 0x25 0x26 0x27 0x28 0x29 0x2A 0x2B |
465 | 0x2C 0x2D 0x2E 0x2F 0x30 0x31 0x32 0x33 | 463 | 0x2C 0x2D 0x2E 0x2F 0x30 0x31 0x32 0x33 |
466 | 0x34 0x35 0x36 0x37 0x38 0x39 0x3A 0x3B | 464 | 0x34 0x35 0x36 0x37 0x38 0x39 0x3A 0x3B |
467 | 0x3C 0x3D 0x3E 0xE0 0x0D>; | 465 | 0x3C 0x3D 0x3E 0xE0 0x0D>; |
468 | 466 | ||
469 | sn65dsi84,values = < 0x00 0x05 0x20 0x00 0x26 0x00 0x4E 0x00 | 467 | sn65dsi84,values = < 0x00 0x05 0x20 0x00 0x26 0x00 0x4E 0x00 |
470 | 0x6C 0x00 0x03 0x00 0x80 0x07 0x00 0x00 | 468 | 0x6C 0x00 0x03 0x00 0x80 0x07 0x00 0x00 |
471 | 0x00 0x00 0x00 0x00 0xC3 0x00 0x00 0x00 | 469 | 0x00 0x00 0x00 0x00 0xC3 0x00 0x00 0x00 |
472 | 0x32 0x00 0x00 0x00 0x14 0x00 0x00 0x00 | 470 | 0x32 0x00 0x00 0x00 0x14 0x00 0x00 0x00 |
473 | 0x19 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | 471 | 0x19 0x00 0x00 0x00 0x00 0x00 0x00 0x00 |
474 | 0x00 0x00 0x00 0x01 0x01>;*/ | 472 | 0x00 0x00 0x00 0x01 0x01>;*/ |
475 | }; | 473 | }; |
476 | }; | 474 | }; |
477 | 475 | ||
478 | &i2c3 { | 476 | &i2c3 { |
479 | clock-frequency = <100000>; | 477 | clock-frequency = <100000>; |
480 | pinctrl-names = "default"; | 478 | pinctrl-names = "default"; |
481 | pinctrl-0 = <&pinctrl_i2c3>; | 479 | pinctrl-0 = <&pinctrl_i2c3>; |
482 | status = "okay"; | 480 | status = "okay"; |
483 | }; | 481 | }; |
484 | 482 | ||
485 | &i2c4 { | 483 | &i2c4 { |
486 | clock-frequency = <100000>; | 484 | clock-frequency = <100000>; |
487 | pinctrl-names = "default"; | 485 | pinctrl-names = "default"; |
488 | pinctrl-0 = <&pinctrl_i2c4>; | 486 | pinctrl-0 = <&pinctrl_i2c4>; |
489 | status = "okay"; | 487 | status = "okay"; |
490 | }; | 488 | }; |
491 | 489 | ||
492 | &pcie0{ | 490 | &pcie0{ |
493 | pinctrl-names = "default"; | 491 | pinctrl-names = "default"; |
494 | pinctrl-0 = <&pinctrl_pcie0>; | 492 | pinctrl-0 = <&pinctrl_pcie0>; |
495 | reset-gpio = <&gpio3 3 GPIO_ACTIVE_LOW>; | 493 | reset-gpio = <&gpio3 3 GPIO_ACTIVE_LOW>; |
496 | status = "okay"; | 494 | status = "okay"; |
497 | }; | 495 | }; |
498 | 496 | ||
499 | &pcie1{ | 497 | &pcie1{ |
500 | pinctrl-names = "default"; | 498 | pinctrl-names = "default"; |
501 | pinctrl-0 = <&pinctrl_pcie1>; | 499 | pinctrl-0 = <&pinctrl_pcie1>; |
502 | reset-gpio = <&gpio3 4 GPIO_ACTIVE_LOW>; | 500 | reset-gpio = <&gpio3 4 GPIO_ACTIVE_LOW>; |
503 | status = "okay"; | 501 | status = "okay"; |
504 | }; | 502 | }; |
505 | 503 | ||
506 | &pwm1 { | 504 | &pwm1 { |
507 | pinctrl-names = "default"; | 505 | pinctrl-names = "default"; |
508 | pinctrl-0 = <&pinctrl_pwm1>; | 506 | pinctrl-0 = <&pinctrl_pwm1>; |
509 | status = "okay"; | 507 | status = "okay"; |
510 | }; | 508 | }; |
511 | 509 | ||
512 | &uart1 { /* console */ | 510 | &uart1 { /* console */ |
513 | pinctrl-names = "default"; | 511 | pinctrl-names = "default"; |
514 | pinctrl-0 = <&pinctrl_uart1>; | 512 | pinctrl-0 = <&pinctrl_uart1>; |
515 | assigned-clocks = <&clk IMX8MQ_CLK_UART1_SRC>; | 513 | assigned-clocks = <&clk IMX8MQ_CLK_UART1_SRC>; |
516 | assigned-clock-parents = <&clk IMX8MQ_CLK_25M>; | 514 | assigned-clock-parents = <&clk IMX8MQ_CLK_25M>; |
517 | status = "okay"; | 515 | status = "okay"; |
518 | }; | 516 | }; |
519 | 517 | ||
520 | &lcdif { | 518 | &lcdif { |
521 | status = "okay"; | 519 | status = "okay"; |
522 | disp-dev = "mipi_dsi_northwest"; | 520 | disp-dev = "mipi_dsi_northwest"; |
523 | display = <&display0>; | 521 | display = <&display0>; |
524 | 522 | ||
525 | display0: display@0 { | 523 | display0: display@0 { |
526 | bits-per-pixel = <24>; | 524 | bits-per-pixel = <24>; |
527 | bus-width = <24>; | 525 | bus-width = <24>; |
528 | 526 | ||
529 | display-timings { | 527 | display-timings { |
530 | native-mode = <&timing0>; | 528 | native-mode = <&timing0>; |
531 | timing0: timing0 { | 529 | timing0: timing0 { |
532 | clock-frequency = <9200000>; | 530 | clock-frequency = <9200000>; |
533 | hactive = <480>; | 531 | hactive = <480>; |
534 | vactive = <272>; | 532 | vactive = <272>; |
535 | hfront-porch = <8>; | 533 | hfront-porch = <8>; |
536 | hback-porch = <4>; | 534 | hback-porch = <4>; |
537 | hsync-len = <41>; | 535 | hsync-len = <41>; |
538 | vback-porch = <2>; | 536 | vback-porch = <2>; |
539 | vfront-porch = <4>; | 537 | vfront-porch = <4>; |
540 | vsync-len = <10>; | 538 | vsync-len = <10>; |
541 | 539 | ||
542 | hsync-active = <0>; | 540 | hsync-active = <0>; |
543 | vsync-active = <0>; | 541 | vsync-active = <0>; |
544 | de-active = <1>; | 542 | de-active = <1>; |
545 | pixelclk-active = <0>; | 543 | pixelclk-active = <0>; |
546 | }; | 544 | }; |
547 | }; | 545 | }; |
548 | }; | 546 | }; |
549 | port@0 { | 547 | port@0 { |
550 | lcdif_mipi_dsi: mipi-dsi-endpoint { | 548 | lcdif_mipi_dsi: mipi-dsi-endpoint { |
551 | remote-endpoint = <&mipi_dsi_in>; | 549 | remote-endpoint = <&mipi_dsi_in>; |
552 | }; | 550 | }; |
553 | }; | 551 | }; |
554 | }; | 552 | }; |
555 | 553 | ||
556 | &qspi { | 554 | &qspi { |
557 | pinctrl-names = "default"; | 555 | pinctrl-names = "default"; |
558 | pinctrl-0 = <&pinctrl_qspi>; | 556 | pinctrl-0 = <&pinctrl_qspi>; |
559 | status = "okay"; | 557 | status = "okay"; |
560 | }; | 558 | }; |
561 | 559 | ||
562 | &mipi_dsi { | 560 | &mipi_dsi { |
563 | reset = <&src>; | 561 | reset = <&src>; |
564 | mux-sel = <&gpr>; /* lcdif or dcss */ | 562 | mux-sel = <&gpr>; /* lcdif or dcss */ |
565 | status = "okay"; | 563 | status = "okay"; |
566 | 564 | ||
567 | port@1 { | 565 | port@1 { |
568 | mipi_dsi_in: endpoint { | 566 | mipi_dsi_in: endpoint { |
569 | remote-endpoint = <&lcdif_mipi_dsi>; | 567 | remote-endpoint = <&lcdif_mipi_dsi>; |
570 | }; | 568 | }; |
571 | }; | 569 | }; |
572 | }; | 570 | }; |
573 | 571 | ||
574 | &uart2 { | 572 | &uart2 { |
575 | pinctrl-names = "default"; | 573 | pinctrl-names = "default"; |
576 | pinctrl-0 = <&pinctrl_uart2>; | 574 | pinctrl-0 = <&pinctrl_uart2>; |
577 | assigned-clocks = <&clk IMX8MQ_CLK_UART2_SRC>; | 575 | assigned-clocks = <&clk IMX8MQ_CLK_UART2_SRC>; |
578 | assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>; | 576 | assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>; |
579 | fsl,uart-has-rtscts; | 577 | fsl,uart-has-rtscts; |
580 | status = "okay"; | 578 | status = "okay"; |
581 | }; | 579 | }; |
582 | 580 | ||
583 | &uart3 { | 581 | &uart3 { |
584 | pinctrl-names = "default"; | 582 | pinctrl-names = "default"; |
585 | pinctrl-0 = <&pinctrl_uart3>; | 583 | pinctrl-0 = <&pinctrl_uart3>; |
586 | assigned-clocks = <&clk IMX8MQ_CLK_UART3_SRC>; | 584 | assigned-clocks = <&clk IMX8MQ_CLK_UART3_SRC>; |
587 | assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>; | 585 | assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>; |
588 | status = "okay"; | 586 | status = "okay"; |
589 | }; | 587 | }; |
590 | 588 | ||
591 | &uart4 { | 589 | &uart4 { |
592 | pinctrl-names = "default"; | 590 | pinctrl-names = "default"; |
593 | pinctrl-0 = <&pinctrl_uart4>; | 591 | pinctrl-0 = <&pinctrl_uart4>; |
594 | assigned-clocks = <&clk IMX8MQ_CLK_UART4_SRC>; | 592 | assigned-clocks = <&clk IMX8MQ_CLK_UART4_SRC>; |
595 | assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>; | 593 | assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>; |
596 | fsl,uart-has-rtscts; | 594 | fsl,uart-has-rtscts; |
597 | status = "okay"; | 595 | status = "okay"; |
598 | }; | 596 | }; |
599 | 597 | ||
600 | &usdhc1 { | 598 | &usdhc1 { |
601 | pinctrl-names = "default", "state_100mhz", "state_200mhz"; | 599 | pinctrl-names = "default", "state_100mhz", "state_200mhz"; |
602 | pinctrl-0 = <&pinctrl_usdhc1>; | 600 | pinctrl-0 = <&pinctrl_usdhc1>; |
603 | pinctrl-1 = <&pinctrl_usdhc1_100mhz>; | 601 | pinctrl-1 = <&pinctrl_usdhc1_100mhz>; |
604 | pinctrl-2 = <&pinctrl_usdhc1_200mhz>; | 602 | pinctrl-2 = <&pinctrl_usdhc1_200mhz>; |
605 | bus-width = <8>; | 603 | bus-width = <8>; |
606 | non-removable; | 604 | non-removable; |
607 | status = "okay"; | 605 | status = "okay"; |
608 | }; | 606 | }; |
609 | 607 | ||
610 | &usdhc2 { | 608 | &usdhc2 { |
611 | pinctrl-names = "default", "state_100mhz", "state_200mhz"; | 609 | pinctrl-names = "default", "state_100mhz", "state_200mhz"; |
612 | pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>; | 610 | pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>; |
613 | pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>; | 611 | pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>; |
614 | pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>; | 612 | pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>; |
615 | bus-width = <4>; | 613 | bus-width = <4>; |
616 | cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>; | 614 | cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>; |
617 | vmmc-supply = <®_usdhc2_vmmc>; | 615 | vmmc-supply = <®_usdhc2_vmmc>; |
618 | status = "okay"; | 616 | status = "okay"; |
619 | }; | 617 | }; |
620 | 618 | ||
621 | &usb3_phy0 { | 619 | &usb3_phy0 { |
622 | status = "okay"; | 620 | status = "okay"; |
623 | }; | 621 | }; |
624 | 622 | ||
625 | &usb3_0 { | 623 | &usb3_0 { |
626 | status = "okay"; | 624 | status = "okay"; |
627 | }; | 625 | }; |
628 | 626 | ||
629 | &usb_dwc3_0 { | 627 | &usb_dwc3_0 { |
630 | status = "okay"; | 628 | status = "okay"; |
631 | dr_mode = "peripheral"; | 629 | dr_mode = "peripheral"; |
632 | }; | 630 | }; |
633 | 631 | ||
634 | &usb3_phy1 { | 632 | &usb3_phy1 { |
635 | status = "okay"; | 633 | status = "okay"; |
636 | }; | 634 | }; |
637 | 635 | ||
638 | &usb3_1 { | 636 | &usb3_1 { |
639 | status = "disabled"; | 637 | status = "disabled"; |
640 | }; | 638 | }; |
641 | 639 | ||
642 | &usb_dwc3_1 { | 640 | &usb_dwc3_1 { |
643 | status = "okay"; | 641 | status = "okay"; |
644 | dr_mode = "host"; | 642 | dr_mode = "host"; |
645 | }; | 643 | }; |
646 | 644 | ||
647 | &sai2 { | 645 | &sai2 { |
648 | pinctrl-names = "default"; | 646 | pinctrl-names = "default"; |
649 | pinctrl-0 = <&pinctrl_sai2>; | 647 | pinctrl-0 = <&pinctrl_sai2>; |
650 | assigned-clocks = <&clk IMX8MQ_CLK_SAI2_SRC>, | 648 | assigned-clocks = <&clk IMX8MQ_CLK_SAI2_SRC>, |
651 | <&clk IMX8MQ_AUDIO_PLL1>, | 649 | <&clk IMX8MQ_AUDIO_PLL1>, |
652 | <&clk IMX8MQ_CLK_SAI2_PRE_DIV>, | 650 | <&clk IMX8MQ_CLK_SAI2_PRE_DIV>, |
653 | <&clk IMX8MQ_CLK_SAI2_DIV>; | 651 | <&clk IMX8MQ_CLK_SAI2_DIV>; |
654 | assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1_OUT>; | 652 | assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1_OUT>; |
655 | assigned-clock-rates = <0>, <786432000>, <98306000>, <24576000>; | 653 | assigned-clock-rates = <0>, <786432000>, <98306000>, <24576000>; |
656 | status = "okay"; | 654 | status = "okay"; |
657 | }; | 655 | }; |
658 | 656 | ||
659 | &gpu { | 657 | &gpu { |
660 | status = "okay"; | 658 | status = "okay"; |
661 | }; | 659 | }; |
662 | 660 | ||
663 | &vpu { | 661 | &vpu { |
664 | status = "okay"; | 662 | status = "okay"; |
665 | }; | 663 | }; |
666 | 664 | ||
667 | &wdog1 { | 665 | &wdog1 { |
668 | pinctrl-names = "default"; | 666 | pinctrl-names = "default"; |
669 | pinctrl-0 = <&pinctrl_wdog>; | 667 | pinctrl-0 = <&pinctrl_wdog>; |
670 | fsl,ext-reset-output; | 668 | fsl,ext-reset-output; |
671 | status = "okay"; | 669 | status = "okay"; |
672 | }; | 670 | }; |
673 | 671 |
board/embedian/smarcimx8mq/smarcimx8mq.c
1 | /* | 1 | /* |
2 | * Copyright 2016 Freescale Semiconductor, Inc. | 2 | * Copyright 2016 Freescale Semiconductor, Inc. |
3 | * Copyright 2017-2018 NXP | 3 | * Copyright 2017-2018 NXP |
4 | * | 4 | * |
5 | * SPDX-License-Identifier: GPL-2.0+ | 5 | * SPDX-License-Identifier: GPL-2.0+ |
6 | */ | 6 | */ |
7 | 7 | ||
8 | #include <common.h> | 8 | #include <common.h> |
9 | #include <malloc.h> | 9 | #include <malloc.h> |
10 | #include <errno.h> | 10 | #include <errno.h> |
11 | #include <asm/io.h> | 11 | #include <asm/io.h> |
12 | #include <miiphy.h> | 12 | #include <miiphy.h> |
13 | #include <netdev.h> | 13 | #include <netdev.h> |
14 | #include <asm/mach-imx/iomux-v3.h> | 14 | #include <asm/mach-imx/iomux-v3.h> |
15 | #include <asm-generic/gpio.h> | 15 | #include <asm-generic/gpio.h> |
16 | #include <fsl_esdhc.h> | 16 | #include <fsl_esdhc.h> |
17 | #include <mmc.h> | 17 | #include <mmc.h> |
18 | #include <asm/arch/imx8mq_pins.h> | 18 | #include <asm/arch/imx8mq_pins.h> |
19 | #include <asm/arch/sys_proto.h> | 19 | #include <asm/arch/sys_proto.h> |
20 | #include <asm/mach-imx/gpio.h> | 20 | #include <asm/mach-imx/gpio.h> |
21 | #include <asm/mach-imx/mxc_i2c.h> | 21 | #include <asm/mach-imx/mxc_i2c.h> |
22 | #include <asm/arch/clock.h> | 22 | #include <asm/arch/clock.h> |
23 | #include <asm/mach-imx/video.h> | 23 | #include <asm/mach-imx/video.h> |
24 | #include <asm/arch/video_common.h> | 24 | #include <asm/arch/video_common.h> |
25 | #include <spl.h> | 25 | #include <spl.h> |
26 | #include <power/pmic.h> | 26 | #include <power/pmic.h> |
27 | #include <power/pfuze100_pmic.h> | 27 | #include <power/pfuze100_pmic.h> |
28 | #include <dm.h> | 28 | #include <dm.h> |
29 | #include "../../freescale/common/tcpc.h" | 29 | #include "../../freescale/common/tcpc.h" |
30 | #include "../../freescale/common/pfuze.h" | 30 | #include "../../freescale/common/pfuze.h" |
31 | #include "../../freescale/common/mmc.c" | 31 | #include "../../freescale/common/mmc.c" |
32 | #include <usb.h> | 32 | #include <usb.h> |
33 | #include <dwc3-uboot.h> | 33 | #include <dwc3-uboot.h> |
34 | 34 | ||
35 | DECLARE_GLOBAL_DATA_PTR; | 35 | DECLARE_GLOBAL_DATA_PTR; |
36 | 36 | ||
37 | #define QSPI_PAD_CTRL (PAD_CTL_DSE2 | PAD_CTL_HYS) | 37 | #define QSPI_PAD_CTRL (PAD_CTL_DSE2 | PAD_CTL_HYS) |
38 | 38 | ||
39 | #define UART_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_FSEL1) | 39 | #define UART_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_FSEL1) |
40 | 40 | ||
41 | #define WDOG_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE) | 41 | #define WDOG_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE) |
42 | 42 | ||
43 | #define WEAK_PULLUP (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE) | 43 | #define WEAK_PULLUP (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE) |
44 | 44 | ||
45 | #define I2C_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE) | 45 | #define I2C_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE) |
46 | 46 | ||
47 | static iomux_v3_cfg_t const wdog_pads[] = { | 47 | static iomux_v3_cfg_t const wdog_pads[] = { |
48 | IMX8MQ_PAD_GPIO1_IO02__WDOG1_WDOG_B | MUX_PAD_CTRL(WDOG_PAD_CTRL), | 48 | IMX8MQ_PAD_GPIO1_IO02__WDOG1_WDOG_B | MUX_PAD_CTRL(WDOG_PAD_CTRL), |
49 | }; | 49 | }; |
50 | 50 | ||
51 | #ifdef CONFIG_FSL_QSPI | 51 | #ifdef CONFIG_FSL_QSPI |
52 | static iomux_v3_cfg_t const qspi_pads[] = { | 52 | static iomux_v3_cfg_t const qspi_pads[] = { |
53 | IMX8MQ_PAD_NAND_ALE__QSPI_A_SCLK | MUX_PAD_CTRL(QSPI_PAD_CTRL), | 53 | IMX8MQ_PAD_NAND_ALE__QSPI_A_SCLK | MUX_PAD_CTRL(QSPI_PAD_CTRL), |
54 | IMX8MQ_PAD_NAND_CE0_B__QSPI_A_SS0_B | MUX_PAD_CTRL(QSPI_PAD_CTRL), | 54 | IMX8MQ_PAD_NAND_CE0_B__QSPI_A_SS0_B | MUX_PAD_CTRL(QSPI_PAD_CTRL), |
55 | 55 | ||
56 | IMX8MQ_PAD_NAND_DATA00__QSPI_A_DATA0 | MUX_PAD_CTRL(QSPI_PAD_CTRL), | 56 | IMX8MQ_PAD_NAND_DATA00__QSPI_A_DATA0 | MUX_PAD_CTRL(QSPI_PAD_CTRL), |
57 | IMX8MQ_PAD_NAND_DATA01__QSPI_A_DATA1 | MUX_PAD_CTRL(QSPI_PAD_CTRL), | 57 | IMX8MQ_PAD_NAND_DATA01__QSPI_A_DATA1 | MUX_PAD_CTRL(QSPI_PAD_CTRL), |
58 | IMX8MQ_PAD_NAND_DATA02__QSPI_A_DATA2 | MUX_PAD_CTRL(QSPI_PAD_CTRL), | 58 | IMX8MQ_PAD_NAND_DATA02__QSPI_A_DATA2 | MUX_PAD_CTRL(QSPI_PAD_CTRL), |
59 | IMX8MQ_PAD_NAND_DATA03__QSPI_A_DATA3 | MUX_PAD_CTRL(QSPI_PAD_CTRL), | 59 | IMX8MQ_PAD_NAND_DATA03__QSPI_A_DATA3 | MUX_PAD_CTRL(QSPI_PAD_CTRL), |
60 | }; | 60 | }; |
61 | 61 | ||
62 | int board_qspi_init(void) | 62 | int board_qspi_init(void) |
63 | { | 63 | { |
64 | imx_iomux_v3_setup_multiple_pads(qspi_pads, ARRAY_SIZE(qspi_pads)); | 64 | imx_iomux_v3_setup_multiple_pads(qspi_pads, ARRAY_SIZE(qspi_pads)); |
65 | 65 | ||
66 | set_clk_qspi(); | 66 | set_clk_qspi(); |
67 | 67 | ||
68 | return 0; | 68 | return 0; |
69 | } | 69 | } |
70 | #endif | 70 | #endif |
71 | 71 | ||
72 | #ifdef CONFIG_CONSOLE_SER3 | 72 | #ifdef CONFIG_CONSOLE_SER3 |
73 | static iomux_v3_cfg_t const uart1_pads[] = { | 73 | static iomux_v3_cfg_t const uart1_pads[] = { |
74 | IMX8MQ_PAD_UART1_RXD__UART1_RX | MUX_PAD_CTRL(UART_PAD_CTRL), | 74 | IMX8MQ_PAD_UART1_RXD__UART1_RX | MUX_PAD_CTRL(UART_PAD_CTRL), |
75 | IMX8MQ_PAD_UART1_TXD__UART1_TX | MUX_PAD_CTRL(UART_PAD_CTRL), | 75 | IMX8MQ_PAD_UART1_TXD__UART1_TX | MUX_PAD_CTRL(UART_PAD_CTRL), |
76 | }; | 76 | }; |
77 | #endif | 77 | #endif |
78 | 78 | ||
79 | #ifdef CONFIG_CONSOLE_SER2 | 79 | #ifdef CONFIG_CONSOLE_SER2 |
80 | static iomux_v3_cfg_t const uart2_pads[] = { | 80 | static iomux_v3_cfg_t const uart2_pads[] = { |
81 | IMX8MQ_PAD_UART2_RXD__UART2_RX | MUX_PAD_CTRL(UART_PAD_CTRL), | 81 | IMX8MQ_PAD_UART2_RXD__UART2_RX | MUX_PAD_CTRL(UART_PAD_CTRL), |
82 | IMX8MQ_PAD_UART2_TXD__UART2_TX | MUX_PAD_CTRL(UART_PAD_CTRL), | 82 | IMX8MQ_PAD_UART2_TXD__UART2_TX | MUX_PAD_CTRL(UART_PAD_CTRL), |
83 | IMX8MQ_PAD_UART4_TXD__UART2_RTS_B | MUX_PAD_CTRL(UART_PAD_CTRL), | ||
84 | IMX8MQ_PAD_UART4_RXD__UART2_CTS_B | MUX_PAD_CTRL(UART_PAD_CTRL), | ||
83 | }; | 85 | }; |
84 | #endif | 86 | #endif |
85 | 87 | ||
86 | #ifdef CONFIG_CONSOLE_SER1 | 88 | #ifdef CONFIG_CONSOLE_SER1 |
87 | static iomux_v3_cfg_t const uart3_pads[] = { | 89 | static iomux_v3_cfg_t const uart3_pads[] = { |
88 | IMX8MQ_PAD_UART3_RXD__UART3_RX | MUX_PAD_CTRL(UART_PAD_CTRL), | 90 | IMX8MQ_PAD_UART3_RXD__UART3_RX | MUX_PAD_CTRL(UART_PAD_CTRL), |
89 | IMX8MQ_PAD_UART3_TXD__UART3_TX | MUX_PAD_CTRL(UART_PAD_CTRL), | 91 | IMX8MQ_PAD_UART3_TXD__UART3_TX | MUX_PAD_CTRL(UART_PAD_CTRL), |
90 | }; | 92 | }; |
91 | #endif | 93 | #endif |
92 | 94 | ||
93 | #ifdef CONFIG_CONSOLE_SER0 | 95 | #ifdef CONFIG_CONSOLE_SER0 |
94 | static iomux_v3_cfg_t const uart4_pads[] = { | 96 | static iomux_v3_cfg_t const uart4_pads[] = { |
95 | IMX8MQ_PAD_UART4_RXD__UART4_RX | MUX_PAD_CTRL(UART_PAD_CTRL), | 97 | IMX8MQ_PAD_ECSPI2_SCLK__UART4_RX | MUX_PAD_CTRL(UART_PAD_CTRL), |
96 | IMX8MQ_PAD_ECSPI2_SS0__UART4_RTS_B | MUX_PAD_CTRL(UART_PAD_CTRL), | 98 | IMX8MQ_PAD_ECSPI2_SS0__UART4_RTS_B | MUX_PAD_CTRL(UART_PAD_CTRL), |
97 | IMX8MQ_PAD_ECSPI2_MISO__UART4_CTS_B | MUX_PAD_CTRL(UART_PAD_CTRL), | 99 | IMX8MQ_PAD_ECSPI2_MISO__UART4_CTS_B | MUX_PAD_CTRL(UART_PAD_CTRL), |
98 | IMX8MQ_PAD_UART4_TXD__UART4_TX | MUX_PAD_CTRL(UART_PAD_CTRL), | 100 | IMX8MQ_PAD_ECSPI2_MOSI__UART4_TX | MUX_PAD_CTRL(UART_PAD_CTRL), |
99 | }; | 101 | }; |
100 | #endif | 102 | #endif |
101 | 103 | ||
102 | /* SPI0*/ | 104 | /* SPI0*/ |
103 | static iomux_v3_cfg_t const ecspi1_pads[] = { | 105 | static iomux_v3_cfg_t const ecspi1_pads[] = { |
104 | IMX8MQ_PAD_ECSPI1_MISO__ECSPI1_MISO | MUX_PAD_CTRL(QSPI_PAD_CTRL), | 106 | IMX8MQ_PAD_ECSPI1_MISO__ECSPI1_MISO | MUX_PAD_CTRL(QSPI_PAD_CTRL), |
105 | IMX8MQ_PAD_ECSPI1_MOSI__ECSPI1_MOSI | MUX_PAD_CTRL(QSPI_PAD_CTRL), | 107 | IMX8MQ_PAD_ECSPI1_MOSI__ECSPI1_MOSI | MUX_PAD_CTRL(QSPI_PAD_CTRL), |
106 | IMX8MQ_PAD_ECSPI1_SCLK__ECSPI1_SCLK | MUX_PAD_CTRL(QSPI_PAD_CTRL), | 108 | IMX8MQ_PAD_ECSPI1_SCLK__ECSPI1_SCLK | MUX_PAD_CTRL(QSPI_PAD_CTRL), |
107 | 109 | ||
108 | IMX8MQ_PAD_ECSPI1_SS0__GPIO5_IO9 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS0#*/ | 110 | IMX8MQ_PAD_ECSPI1_SS0__GPIO5_IO9 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS0#*/ |
109 | IMX8MQ_PAD_GPIO1_IO00__GPIO1_IO0 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS1#*/ | 111 | IMX8MQ_PAD_GPIO1_IO00__GPIO1_IO0 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS1#*/ |
110 | IMX8MQ_PAD_NAND_RE_B__GPIO3_IO15 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS2#*/ | 112 | IMX8MQ_PAD_NAND_RE_B__GPIO3_IO15 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS2#*/ |
111 | IMX8MQ_PAD_NAND_WE_B__GPIO3_IO17 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS3#*/ | 113 | IMX8MQ_PAD_NAND_WE_B__GPIO3_IO17 | MUX_PAD_CTRL(NO_PAD_CTRL), /*SS3#*/ |
112 | }; | 114 | }; |
113 | 115 | ||
114 | /* MISC PINs */ | 116 | /* MISC PINs */ |
115 | static iomux_v3_cfg_t const misc_pads[] = { | 117 | static iomux_v3_cfg_t const misc_pads[] = { |
116 | IMX8MQ_PAD_NAND_CLE__GPIO3_IO5 | MUX_PAD_CTRL(WEAK_PULLUP), /*S146, PCIE_WAKE*/ | 118 | IMX8MQ_PAD_NAND_CLE__GPIO3_IO5 | MUX_PAD_CTRL(WEAK_PULLUP), /*S146, PCIE_WAKE*/ |
117 | IMX8MQ_PAD_GPIO1_IO09__GPIO1_IO9 | MUX_PAD_CTRL(WEAK_PULLUP), /*S148, LID#*/ | 119 | IMX8MQ_PAD_GPIO1_IO09__GPIO1_IO9 | MUX_PAD_CTRL(WEAK_PULLUP), /*S148, LID#*/ |
118 | IMX8MQ_PAD_GPIO1_IO12__GPIO1_IO12 | MUX_PAD_CTRL(WEAK_PULLUP), /*S149, SLEEP#*/ | 120 | IMX8MQ_PAD_GPIO1_IO12__GPIO1_IO12 | MUX_PAD_CTRL(WEAK_PULLUP), /*S149, SLEEP#*/ |
119 | IMX8MQ_PAD_GPIO1_IO01__GPIO1_IO1 | MUX_PAD_CTRL(WEAK_PULLUP), /*S151, CHARGING#*/ | 121 | IMX8MQ_PAD_NAND_DATA05__GPIO3_IO11 | MUX_PAD_CTRL(WEAK_PULLUP), /*S151, CHARGING#*/ |
120 | IMX8MQ_PAD_SAI2_RXC__GPIO4_IO22 | MUX_PAD_CTRL(WEAK_PULLUP), /*S152, CHARGER_PRSNT#*/ | 122 | IMX8MQ_PAD_SAI2_RXC__GPIO4_IO22 | MUX_PAD_CTRL(WEAK_PULLUP), /*S152, CHARGER_PRSNT#*/ |
121 | IMX8MQ_PAD_SAI3_MCLK__GPIO5_IO2 | MUX_PAD_CTRL(WEAK_PULLUP), /*S153, CARRIER_STBY#*/ | 123 | IMX8MQ_PAD_SAI3_MCLK__GPIO5_IO2 | MUX_PAD_CTRL(WEAK_PULLUP), /*S153, CARRIER_STBY#*/ |
122 | IMX8MQ_PAD_SAI2_RXFS__GPIO4_IO21 | MUX_PAD_CTRL(WEAK_PULLUP), /*S156, BATLOW#*/ | 124 | IMX8MQ_PAD_SAI2_RXFS__GPIO4_IO21 | MUX_PAD_CTRL(WEAK_PULLUP), /*S156, BATLOW#*/ |
123 | IMX8MQ_PAD_NAND_WP_B__GPIO3_IO18 | MUX_PAD_CTRL(WEAK_PULLUP), /*CAN0_INT#*/ | 125 | IMX8MQ_PAD_NAND_WP_B__GPIO3_IO18 | MUX_PAD_CTRL(WEAK_PULLUP), /*CAN0_INT#*/ |
124 | IMX8MQ_PAD_NAND_READY_B__GPIO3_IO16 | MUX_PAD_CTRL(WEAK_PULLUP), /*CAN1_INT#*/ | 126 | IMX8MQ_PAD_NAND_READY_B__GPIO3_IO16 | MUX_PAD_CTRL(WEAK_PULLUP), /*CAN1_INT#*/ |
125 | }; | 127 | }; |
126 | 128 | ||
127 | static void setup_iomux_misc(void) | 129 | static void setup_iomux_misc(void) |
128 | { | 130 | { |
129 | imx_iomux_v3_setup_multiple_pads(misc_pads, ARRAY_SIZE(misc_pads)); | 131 | imx_iomux_v3_setup_multiple_pads(misc_pads, ARRAY_SIZE(misc_pads)); |
130 | 132 | ||
131 | /* Set CARRIER_LID# as Input*/ | 133 | /* Set CARRIER_LID# as Input*/ |
132 | gpio_request(IMX_GPIO_NR(1, 9), "LID#"); | 134 | gpio_request(IMX_GPIO_NR(1, 9), "LID#"); |
133 | gpio_direction_input(IMX_GPIO_NR(1, 9)); | 135 | gpio_direction_input(IMX_GPIO_NR(1, 9)); |
134 | /* Set CARRIER_SLEEP# as Input*/ | 136 | /* Set CARRIER_SLEEP# as Input*/ |
135 | gpio_request(IMX_GPIO_NR(1, 12), "SLEEP#"); | 137 | gpio_request(IMX_GPIO_NR(1, 12), "SLEEP#"); |
136 | gpio_direction_input(IMX_GPIO_NR(1, 12)); | 138 | gpio_direction_input(IMX_GPIO_NR(1, 12)); |
137 | /* Set CARRIER_CHARGING# as Input*/ | 139 | /* Set CARRIER_CHARGING# as Input*/ |
138 | gpio_request(IMX_GPIO_NR(1, 01), "CHARGING#"); | 140 | gpio_request(IMX_GPIO_NR(1, 01), "CHARGING#"); |
139 | gpio_direction_input(IMX_GPIO_NR(1, 01)); | 141 | gpio_direction_input(IMX_GPIO_NR(1, 01)); |
140 | /* Set CARRIER_CHARGER_PRSNT# as Input*/ | 142 | /* Set CARRIER_CHARGER_PRSNT# as Input*/ |
141 | gpio_request(IMX_GPIO_NR(4, 22), "CHARGER_PRSNT#"); | 143 | gpio_request(IMX_GPIO_NR(4, 22), "CHARGER_PRSNT#"); |
142 | gpio_direction_input(IMX_GPIO_NR(4, 22)); | 144 | gpio_direction_input(IMX_GPIO_NR(4, 22)); |
143 | /* Set CARRIER_STBY# as Output High*/ | 145 | /* Set CARRIER_STBY# as Output High*/ |
144 | gpio_request(IMX_GPIO_NR(5, 02), "CARRIER_STBY#"); | 146 | gpio_request(IMX_GPIO_NR(5, 02), "CARRIER_STBY#"); |
145 | gpio_direction_output(IMX_GPIO_NR(5, 02) , 1); | 147 | gpio_direction_output(IMX_GPIO_NR(5, 02) , 1); |
146 | /* Set CARRIER_BATLOW# as Input*/ | 148 | /* Set CARRIER_BATLOW# as Input*/ |
147 | gpio_request(IMX_GPIO_NR(4, 21), "BATLOW#"); | 149 | gpio_request(IMX_GPIO_NR(4, 21), "BATLOW#"); |
148 | gpio_direction_input(IMX_GPIO_NR(4, 21)); | 150 | gpio_direction_input(IMX_GPIO_NR(4, 21)); |
149 | /* Set PCIE_WAKE# as Input*/ | 151 | /* Set PCIE_WAKE# as Input*/ |
150 | gpio_request(IMX_GPIO_NR(3, 5), "PCIE_WAKE#"); | 152 | gpio_request(IMX_GPIO_NR(3, 5), "PCIE_WAKE#"); |
151 | gpio_direction_input(IMX_GPIO_NR(3, 5)); | 153 | gpio_direction_input(IMX_GPIO_NR(3, 5)); |
152 | /* Set CAN0_INT# as Input*/ | 154 | /* Set CAN0_INT# as Input*/ |
153 | gpio_request(IMX_GPIO_NR(3, 18), "CAN0_INT#"); | 155 | gpio_request(IMX_GPIO_NR(3, 18), "CAN0_INT#"); |
154 | gpio_direction_input(IMX_GPIO_NR(3, 18)); | 156 | gpio_direction_input(IMX_GPIO_NR(3, 18)); |
155 | /* Set CAN1_INT# as Input*/ | 157 | /* Set CAN1_INT# as Input*/ |
156 | gpio_request(IMX_GPIO_NR(3, 16), "CAN1_INT#"); | 158 | gpio_request(IMX_GPIO_NR(3, 16), "CAN1_INT#"); |
157 | gpio_direction_input(IMX_GPIO_NR(3, 16)); | 159 | gpio_direction_input(IMX_GPIO_NR(3, 16)); |
158 | } | 160 | } |
159 | 161 | ||
160 | /* GPIO PINs, By SMARC specification, GPIO0~GPIO5 are recommended set as Output Low by default and GPIO6~GPIO11 are recommended set as Input*/ | 162 | /* GPIO PINs, By SMARC specification, GPIO0~GPIO5 are recommended set as Output Low by default and GPIO6~GPIO11 are recommended set as Input*/ |
161 | static iomux_v3_cfg_t const gpio_pads[] = { | 163 | static iomux_v3_cfg_t const gpio_pads[] = { |
162 | IMX8MQ_PAD_SAI5_MCLK__GPIO3_IO25 | MUX_PAD_CTRL(WEAK_PULLUP), /*P108, GPIO0*/ | 164 | IMX8MQ_PAD_SAI5_MCLK__GPIO3_IO25 | MUX_PAD_CTRL(WEAK_PULLUP), /*P108, GPIO0*/ |
163 | IMX8MQ_PAD_SAI5_RXFS__GPIO3_IO19 | MUX_PAD_CTRL(WEAK_PULLUP), /*P109, GPIO1*/ | 165 | IMX8MQ_PAD_SAI5_RXFS__GPIO3_IO19 | MUX_PAD_CTRL(WEAK_PULLUP), /*P109, GPIO1*/ |
164 | IMX8MQ_PAD_SAI5_RXC__GPIO3_IO20 | MUX_PAD_CTRL(WEAK_PULLUP), /*P110, GPIO2*/ | 166 | IMX8MQ_PAD_SAI5_RXC__GPIO3_IO20 | MUX_PAD_CTRL(WEAK_PULLUP), /*P110, GPIO2*/ |
165 | IMX8MQ_PAD_SAI5_RXD0__GPIO3_IO21 | MUX_PAD_CTRL(WEAK_PULLUP), /*P111, GPIO3*/ | 167 | IMX8MQ_PAD_SAI5_RXD0__GPIO3_IO21 | MUX_PAD_CTRL(WEAK_PULLUP), /*P111, GPIO3*/ |
166 | IMX8MQ_PAD_SAI5_RXD1__GPIO3_IO22 | MUX_PAD_CTRL(WEAK_PULLUP), /*P112, GPIO4*/ | 168 | IMX8MQ_PAD_SAI5_RXD1__GPIO3_IO22 | MUX_PAD_CTRL(WEAK_PULLUP), /*P112, GPIO4*/ |
167 | IMX8MQ_PAD_SPDIF_TX__GPIO5_IO3 | MUX_PAD_CTRL(WEAK_PULLUP), /*P113, GPIO5*/ | 169 | IMX8MQ_PAD_SPDIF_TX__GPIO5_IO3 | MUX_PAD_CTRL(WEAK_PULLUP), /*P113, GPIO5*/ |
168 | IMX8MQ_PAD_SPDIF_RX__GPIO5_IO4 | MUX_PAD_CTRL(WEAK_PULLUP), /*P114, GPIO6*/ | 170 | IMX8MQ_PAD_SPDIF_RX__GPIO5_IO4 | MUX_PAD_CTRL(WEAK_PULLUP), /*P114, GPIO6*/ |
169 | IMX8MQ_PAD_SAI5_RXD2__GPIO3_IO23 | MUX_PAD_CTRL(WEAK_PULLUP), /*P115, GPIO7*/ | 171 | IMX8MQ_PAD_SAI5_RXD2__GPIO3_IO23 | MUX_PAD_CTRL(WEAK_PULLUP), /*P115, GPIO7*/ |
170 | IMX8MQ_PAD_SAI5_RXD3__GPIO3_IO24 | MUX_PAD_CTRL(WEAK_PULLUP), /*P116, GPIO8*/ | 172 | IMX8MQ_PAD_SAI5_RXD3__GPIO3_IO24 | MUX_PAD_CTRL(WEAK_PULLUP), /*P116, GPIO8*/ |
171 | IMX8MQ_PAD_SAI1_TXC__GPIO4_IO11 | MUX_PAD_CTRL(WEAK_PULLUP), /*P114, GPIO9*/ | 173 | IMX8MQ_PAD_SAI1_TXC__GPIO4_IO11 | MUX_PAD_CTRL(WEAK_PULLUP), /*P114, GPIO9*/ |
172 | IMX8MQ_PAD_SAI1_TXFS__GPIO4_IO10 | MUX_PAD_CTRL(WEAK_PULLUP), /*P115, GPIO10*/ | 174 | IMX8MQ_PAD_SAI1_TXFS__GPIO4_IO10 | MUX_PAD_CTRL(WEAK_PULLUP), /*P115, GPIO10*/ |
173 | IMX8MQ_PAD_SAI1_MCLK__GPIO4_IO20 | MUX_PAD_CTRL(WEAK_PULLUP), /*P116, GPIO11*/ | 175 | IMX8MQ_PAD_SAI1_MCLK__GPIO4_IO20 | MUX_PAD_CTRL(WEAK_PULLUP), /*P116, GPIO11*/ |
174 | }; | 176 | }; |
175 | 177 | ||
176 | static void setup_iomux_gpio(void) | 178 | static void setup_iomux_gpio(void) |
177 | { | 179 | { |
178 | imx_iomux_v3_setup_multiple_pads(gpio_pads, ARRAY_SIZE(gpio_pads)); | 180 | imx_iomux_v3_setup_multiple_pads(gpio_pads, ARRAY_SIZE(gpio_pads)); |
179 | 181 | ||
180 | /* Set GPIO0 as Output Low*/ | 182 | /* Set GPIO0 as Output Low*/ |
181 | gpio_request(IMX_GPIO_NR(3, 25), "GPIO0"); | 183 | gpio_request(IMX_GPIO_NR(3, 25), "GPIO0"); |
182 | gpio_direction_output(IMX_GPIO_NR(3, 25), 0); | 184 | gpio_direction_output(IMX_GPIO_NR(3, 25), 0); |
183 | /* Set GPIO1 as Output Low*/ | 185 | /* Set GPIO1 as Output Low*/ |
184 | gpio_request(IMX_GPIO_NR(3, 19), "GPIO1"); | 186 | gpio_request(IMX_GPIO_NR(3, 19), "GPIO1"); |
185 | gpio_direction_output(IMX_GPIO_NR(3, 19), 0); | 187 | gpio_direction_output(IMX_GPIO_NR(3, 19), 0); |
186 | /* Set GPIO2 as Output Low*/ | 188 | /* Set GPIO2 as Output Low*/ |
187 | gpio_request(IMX_GPIO_NR(3, 20), "GPIO2"); | 189 | gpio_request(IMX_GPIO_NR(3, 20), "GPIO2"); |
188 | gpio_direction_output(IMX_GPIO_NR(3, 20), 0); | 190 | gpio_direction_output(IMX_GPIO_NR(3, 20), 0); |
189 | /* Set GPIO3 as Output Low*/ | 191 | /* Set GPIO3 as Output Low*/ |
190 | gpio_request(IMX_GPIO_NR(3, 21), "GPIO3"); | 192 | gpio_request(IMX_GPIO_NR(3, 21), "GPIO3"); |
191 | gpio_direction_output(IMX_GPIO_NR(3, 21), 0); | 193 | gpio_direction_output(IMX_GPIO_NR(3, 21), 0); |
192 | /* Set GPIO4 as Output Low*/ | 194 | /* Set GPIO4 as Output Low*/ |
193 | gpio_request(IMX_GPIO_NR(3, 22), "GPIO4"); | 195 | gpio_request(IMX_GPIO_NR(3, 22), "GPIO4"); |
194 | gpio_direction_output(IMX_GPIO_NR(3, 22), 0); | 196 | gpio_direction_output(IMX_GPIO_NR(3, 22), 0); |
195 | /* Set GPIO5 as Output Low*/ | 197 | /* Set GPIO5 as Output Low*/ |
196 | gpio_request(IMX_GPIO_NR(5, 3), "GPIO5"); | 198 | gpio_request(IMX_GPIO_NR(5, 3), "GPIO5"); |
197 | gpio_direction_output(IMX_GPIO_NR(5, 3), 0); | 199 | gpio_direction_output(IMX_GPIO_NR(5, 3), 0); |
198 | /* Set GPIO6 as Input*/ | 200 | /* Set GPIO6 as Input*/ |
199 | gpio_request(IMX_GPIO_NR(5, 4), "GPIO6"); | 201 | gpio_request(IMX_GPIO_NR(5, 4), "GPIO6"); |
200 | gpio_direction_input(IMX_GPIO_NR(5, 4)); | 202 | gpio_direction_input(IMX_GPIO_NR(5, 4)); |
201 | /* Set GPIO7 as Input*/ | 203 | /* Set GPIO7 as Input*/ |
202 | gpio_request(IMX_GPIO_NR(3, 23), "GPIO7"); | 204 | gpio_request(IMX_GPIO_NR(3, 23), "GPIO7"); |
203 | gpio_direction_input(IMX_GPIO_NR(3, 23)); | 205 | gpio_direction_input(IMX_GPIO_NR(3, 23)); |
204 | /* Set GPIO8 as Input*/ | 206 | /* Set GPIO8 as Input*/ |
205 | gpio_request(IMX_GPIO_NR(3, 24), "GPIO8"); | 207 | gpio_request(IMX_GPIO_NR(3, 24), "GPIO8"); |
206 | gpio_direction_input(IMX_GPIO_NR(3, 24)); | 208 | gpio_direction_input(IMX_GPIO_NR(3, 24)); |
207 | /* Set GPIO9 as Input*/ | 209 | /* Set GPIO9 as Input*/ |
208 | gpio_request(IMX_GPIO_NR(4, 11), "GPIO9"); | 210 | gpio_request(IMX_GPIO_NR(4, 11), "GPIO9"); |
209 | gpio_direction_input(IMX_GPIO_NR(4, 11)); | 211 | gpio_direction_input(IMX_GPIO_NR(4, 11)); |
210 | /* Set GPIO10 as Input*/ | 212 | /* Set GPIO10 as Input*/ |
211 | gpio_request(IMX_GPIO_NR(4, 10), "GPIO10"); | 213 | gpio_request(IMX_GPIO_NR(4, 10), "GPIO10"); |
212 | gpio_direction_input(IMX_GPIO_NR(4, 10)); | 214 | gpio_direction_input(IMX_GPIO_NR(4, 10)); |
213 | /* Set GPIO11 as Input*/ | 215 | /* Set GPIO11 as Input*/ |
214 | gpio_request(IMX_GPIO_NR(4, 20), "GPIO11"); | 216 | gpio_request(IMX_GPIO_NR(4, 20), "GPIO11"); |
215 | gpio_direction_input(IMX_GPIO_NR(4, 20)); | 217 | gpio_direction_input(IMX_GPIO_NR(4, 20)); |
216 | } | 218 | } |
217 | 219 | ||
218 | 220 | ||
219 | int board_early_init_f(void) | 221 | int board_early_init_f(void) |
220 | { | 222 | { |
221 | struct wdog_regs *wdog = (struct wdog_regs *)WDOG1_BASE_ADDR; | 223 | struct wdog_regs *wdog = (struct wdog_regs *)WDOG1_BASE_ADDR; |
222 | 224 | ||
223 | imx_iomux_v3_setup_multiple_pads(wdog_pads, ARRAY_SIZE(wdog_pads)); | 225 | imx_iomux_v3_setup_multiple_pads(wdog_pads, ARRAY_SIZE(wdog_pads)); |
224 | 226 | ||
225 | set_wdog_reset(wdog); | 227 | set_wdog_reset(wdog); |
226 | 228 | ||
227 | #ifdef CONFIG_CONSOLE_SER0 | 229 | #ifdef CONFIG_CONSOLE_SER0 |
228 | imx_iomux_v3_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads)); | 230 | imx_iomux_v3_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads)); |
229 | #endif | 231 | #endif |
230 | #ifdef CONFIG_CONSOLE_SER1 | 232 | #ifdef CONFIG_CONSOLE_SER1 |
231 | imx_iomux_v3_setup_multiple_pads(uart3_pads, ARRAY_SIZE(uart3_pads)); | 233 | imx_iomux_v3_setup_multiple_pads(uart3_pads, ARRAY_SIZE(uart3_pads)); |
232 | #endif | 234 | #endif |
233 | #ifdef CONFIG_CONSOLE_SER2 | 235 | #ifdef CONFIG_CONSOLE_SER2 |
234 | imx_iomux_v3_setup_multiple_pads(uart2_pads, ARRAY_SIZE(uart2_pads)); | 236 | imx_iomux_v3_setup_multiple_pads(uart2_pads, ARRAY_SIZE(uart2_pads)); |
235 | #endif | 237 | #endif |
236 | #ifdef CONFIG_CONSOLE_SER3 | 238 | #ifdef CONFIG_CONSOLE_SER3 |
237 | imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads)); | 239 | imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads)); |
238 | #endif | 240 | #endif |
239 | 241 | ||
240 | return 0; | 242 | return 0; |
241 | } | 243 | } |
242 | 244 | ||
243 | #ifdef CONFIG_BOARD_POSTCLK_INIT | 245 | #ifdef CONFIG_BOARD_POSTCLK_INIT |
244 | int board_postclk_init(void) | 246 | int board_postclk_init(void) |
245 | { | 247 | { |
246 | /* TODO */ | 248 | /* TODO */ |
247 | return 0; | 249 | return 0; |
248 | } | 250 | } |
249 | #endif | 251 | #endif |
250 | 252 | ||
251 | int dram_init(void) | 253 | int dram_init(void) |
252 | { | 254 | { |
253 | /* rom_pointer[1] contains the size of TEE occupies */ | 255 | /* rom_pointer[1] contains the size of TEE occupies */ |
254 | if (rom_pointer[1]) | 256 | if (rom_pointer[1]) |
255 | gd->ram_size = PHYS_SDRAM_SIZE - rom_pointer[1]; | 257 | gd->ram_size = PHYS_SDRAM_SIZE - rom_pointer[1]; |
256 | else | 258 | else |
257 | gd->ram_size = PHYS_SDRAM_SIZE; | 259 | gd->ram_size = PHYS_SDRAM_SIZE; |
258 | 260 | ||
259 | return 0; | 261 | return 0; |
260 | } | 262 | } |
261 | 263 | ||
262 | #ifdef CONFIG_SYS_I2C | 264 | #ifdef CONFIG_SYS_I2C |
263 | /*I2C2, I2C_CAM0 and I2C_LCD*/ | 265 | /*I2C2, I2C_CAM0 and I2C_LCD*/ |
264 | struct i2c_pads_info i2c_pad_info2 = { | 266 | struct i2c_pads_info i2c_pad_info2 = { |
265 | .scl = { | 267 | .scl = { |
266 | .i2c_mode = IMX8MQ_PAD_I2C2_SCL__I2C2_SCL | I2C_PAD_CTRL, | 268 | .i2c_mode = IMX8MQ_PAD_I2C2_SCL__I2C2_SCL | I2C_PAD_CTRL, |
267 | .gpio_mode = IMX8MQ_PAD_I2C2_SCL__GPIO5_IO16 | I2C_PAD_CTRL, | 269 | .gpio_mode = IMX8MQ_PAD_I2C2_SCL__GPIO5_IO16 | I2C_PAD_CTRL, |
268 | .gp = IMX_GPIO_NR(5, 16), | 270 | .gp = IMX_GPIO_NR(5, 16), |
269 | }, | 271 | }, |
270 | .sda = { | 272 | .sda = { |
271 | .i2c_mode = IMX8MQ_PAD_I2C2_SDA__I2C2_SDA | I2C_PAD_CTRL, | 273 | .i2c_mode = IMX8MQ_PAD_I2C2_SDA__I2C2_SDA | I2C_PAD_CTRL, |
272 | .gpio_mode = IMX8MQ_PAD_I2C2_SDA__GPIO5_IO17 | I2C_PAD_CTRL, | 274 | .gpio_mode = IMX8MQ_PAD_I2C2_SDA__GPIO5_IO17 | I2C_PAD_CTRL, |
273 | .gp = IMX_GPIO_NR(5, 17), | 275 | .gp = IMX_GPIO_NR(5, 17), |
274 | }, | 276 | }, |
275 | }; | 277 | }; |
276 | 278 | ||
277 | /*I2C3, I2C_GP*/ | 279 | /*I2C3, I2C_GP*/ |
278 | struct i2c_pads_info i2c_pad_info3 = { | 280 | struct i2c_pads_info i2c_pad_info3 = { |
279 | .scl = { | 281 | .scl = { |
280 | .i2c_mode = IMX8MQ_PAD_I2C3_SCL__I2C3_SCL | I2C_PAD_CTRL, | 282 | .i2c_mode = IMX8MQ_PAD_I2C3_SCL__I2C3_SCL | I2C_PAD_CTRL, |
281 | .gpio_mode = IMX8MQ_PAD_I2C3_SCL__GPIO5_IO18 | I2C_PAD_CTRL, | 283 | .gpio_mode = IMX8MQ_PAD_I2C3_SCL__GPIO5_IO18 | I2C_PAD_CTRL, |
282 | .gp = IMX_GPIO_NR(5, 18), | 284 | .gp = IMX_GPIO_NR(5, 18), |
283 | }, | 285 | }, |
284 | .sda = { | 286 | .sda = { |
285 | .i2c_mode = IMX8MQ_PAD_I2C3_SDA__I2C3_SDA | I2C_PAD_CTRL, | 287 | .i2c_mode = IMX8MQ_PAD_I2C3_SDA__I2C3_SDA | I2C_PAD_CTRL, |
286 | .gpio_mode = IMX8MQ_PAD_I2C3_SDA__GPIO5_IO19 | I2C_PAD_CTRL, | 288 | .gpio_mode = IMX8MQ_PAD_I2C3_SDA__GPIO5_IO19 | I2C_PAD_CTRL, |
287 | .gp = IMX_GPIO_NR(5, 19), | 289 | .gp = IMX_GPIO_NR(5, 19), |
288 | }, | 290 | }, |
289 | }; | 291 | }; |
290 | 292 | ||
291 | /*I2C4, I2C_CAM1*/ | 293 | /*I2C4, I2C_CAM1*/ |
292 | struct i2c_pads_info i2c_pad_info4 = { | 294 | struct i2c_pads_info i2c_pad_info4 = { |
293 | .scl = { | 295 | .scl = { |
294 | .i2c_mode = IMX8MQ_PAD_I2C4_SCL__I2C4_SCL | I2C_PAD_CTRL, | 296 | .i2c_mode = IMX8MQ_PAD_I2C4_SCL__I2C4_SCL | I2C_PAD_CTRL, |
295 | .gpio_mode = IMX8MQ_PAD_I2C4_SCL__GPIO5_IO20 | I2C_PAD_CTRL, | 297 | .gpio_mode = IMX8MQ_PAD_I2C4_SCL__GPIO5_IO20 | I2C_PAD_CTRL, |
296 | .gp = IMX_GPIO_NR(5, 20), | 298 | .gp = IMX_GPIO_NR(5, 20), |
297 | }, | 299 | }, |
298 | .sda = { | 300 | .sda = { |
299 | .i2c_mode = IMX8MQ_PAD_I2C4_SDA__I2C4_SDA | I2C_PAD_CTRL, | 301 | .i2c_mode = IMX8MQ_PAD_I2C4_SDA__I2C4_SDA | I2C_PAD_CTRL, |
300 | .gpio_mode = IMX8MQ_PAD_I2C4_SDA__GPIO5_IO21 | I2C_PAD_CTRL, | 302 | .gpio_mode = IMX8MQ_PAD_I2C4_SDA__GPIO5_IO21 | I2C_PAD_CTRL, |
301 | .gp = IMX_GPIO_NR(5, 21), | 303 | .gp = IMX_GPIO_NR(5, 21), |
302 | }, | 304 | }, |
303 | }; | 305 | }; |
304 | #endif | 306 | #endif |
305 | 307 | ||
306 | #ifdef CONFIG_OF_BOARD_SETUP | 308 | #ifdef CONFIG_OF_BOARD_SETUP |
307 | int ft_board_setup(void *blob, bd_t *bd) | 309 | int ft_board_setup(void *blob, bd_t *bd) |
308 | { | 310 | { |
309 | return 0; | 311 | return 0; |
310 | } | 312 | } |
311 | #endif | 313 | #endif |
312 | 314 | ||
313 | /* Get the top of usable RAM */ | 315 | /* Get the top of usable RAM */ |
314 | ulong board_get_usable_ram_top(ulong total_size) | 316 | ulong board_get_usable_ram_top(ulong total_size) |
315 | { | 317 | { |
316 | 318 | ||
317 | //printf("board_get_usable_ram_top total_size is 0x%lx \n", total_size); | 319 | //printf("board_get_usable_ram_top total_size is 0x%lx \n", total_size); |
318 | 320 | ||
319 | if(gd->ram_top > 0x100000000) | 321 | if(gd->ram_top > 0x100000000) |
320 | gd->ram_top = 0x100000000; | 322 | gd->ram_top = 0x100000000; |
321 | 323 | ||
322 | return gd->ram_top; | 324 | return gd->ram_top; |
323 | } | 325 | } |
324 | 326 | ||
325 | #ifdef CONFIG_FEC_MXC | 327 | #ifdef CONFIG_FEC_MXC |
326 | #define FEC_RST_PAD IMX_GPIO_NR(1, 11) | 328 | #define FEC_RST_PAD IMX_GPIO_NR(1, 11) |
327 | static iomux_v3_cfg_t const fec1_irq_pads[] = { | 329 | static iomux_v3_cfg_t const fec1_irq_pads[] = { |
328 | IMX8MQ_PAD_GPIO1_IO11__GPIO1_IO11 | MUX_PAD_CTRL(WEAK_PULLUP), | 330 | IMX8MQ_PAD_GPIO1_IO11__GPIO1_IO11 | MUX_PAD_CTRL(WEAK_PULLUP), |
329 | }; | 331 | }; |
330 | 332 | ||
331 | static void setup_iomux_fec(void) | 333 | static void setup_iomux_fec(void) |
332 | { | 334 | { |
333 | imx_iomux_v3_setup_multiple_pads(fec1_irq_pads, | 335 | imx_iomux_v3_setup_multiple_pads(fec1_irq_pads, |
334 | ARRAY_SIZE(fec1_irq_pads)); | 336 | ARRAY_SIZE(fec1_irq_pads)); |
335 | 337 | ||
336 | gpio_request(IMX_GPIO_NR(1, 11), "fec1_irq"); | 338 | gpio_request(IMX_GPIO_NR(1, 11), "fec1_irq"); |
337 | gpio_direction_input(IMX_GPIO_NR(1, 11)); | 339 | gpio_direction_input(IMX_GPIO_NR(1, 11)); |
338 | } | 340 | } |
339 | 341 | ||
340 | static int setup_fec(void) | 342 | static int setup_fec(void) |
341 | { | 343 | { |
342 | struct iomuxc_gpr_base_regs *const iomuxc_gpr_regs | 344 | struct iomuxc_gpr_base_regs *const iomuxc_gpr_regs |
343 | = (struct iomuxc_gpr_base_regs *) IOMUXC_GPR_BASE_ADDR; | 345 | = (struct iomuxc_gpr_base_regs *) IOMUXC_GPR_BASE_ADDR; |
344 | 346 | ||
345 | setup_iomux_fec(); | 347 | setup_iomux_fec(); |
346 | 348 | ||
347 | /* Use 125M anatop REF_CLK1 for ENET1, not from external */ | 349 | /* Use 125M anatop REF_CLK1 for ENET1, not from external */ |
348 | clrsetbits_le32(&iomuxc_gpr_regs->gpr[1], | 350 | clrsetbits_le32(&iomuxc_gpr_regs->gpr[1], |
349 | IOMUXC_GPR_GPR1_GPR_ENET1_TX_CLK_SEL_SHIFT, 0); | 351 | IOMUXC_GPR_GPR1_GPR_ENET1_TX_CLK_SEL_SHIFT, 0); |
350 | return set_clk_enet(ENET_125MHZ); | 352 | return set_clk_enet(ENET_125MHZ); |
351 | } | 353 | } |
352 | 354 | ||
353 | 355 | ||
354 | int board_phy_config(struct phy_device *phydev) | 356 | int board_phy_config(struct phy_device *phydev) |
355 | { | 357 | { |
356 | /* enable rgmii rxc skew and phy mode select to RGMII copper */ | 358 | /* enable rgmii rxc skew and phy mode select to RGMII copper */ |
357 | phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x1f); | 359 | phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x1f); |
358 | phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x8); | 360 | phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x8); |
359 | 361 | ||
360 | phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05); | 362 | phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05); |
361 | phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x100); | 363 | phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x100); |
362 | 364 | ||
363 | if (phydev->drv->config) | 365 | if (phydev->drv->config) |
364 | phydev->drv->config(phydev); | 366 | phydev->drv->config(phydev); |
365 | return 0; | 367 | return 0; |
366 | } | 368 | } |
367 | #endif | 369 | #endif |
368 | 370 | ||
369 | static void setup_iomux_ecspi1(void) | 371 | static void setup_iomux_ecspi1(void) |
370 | { | 372 | { |
371 | imx_iomux_v3_setup_multiple_pads(ecspi1_pads, | 373 | imx_iomux_v3_setup_multiple_pads(ecspi1_pads, |
372 | ARRAY_SIZE(ecspi1_pads)); | 374 | ARRAY_SIZE(ecspi1_pads)); |
373 | } | 375 | } |
374 | 376 | ||
375 | int board_spi_cs_gpio(unsigned bus, unsigned cs) | 377 | int board_spi_cs_gpio(unsigned bus, unsigned cs) |
376 | { | 378 | { |
377 | gpio_request(IMX_GPIO_NR(5, 9), "espi1_cs0"); | 379 | gpio_request(IMX_GPIO_NR(5, 9), "espi1_cs0"); |
378 | return (bus == 0 && cs == 0) ? (IMX_GPIO_NR(5, 9)) : -1; | 380 | return (bus == 0 && cs == 0) ? (IMX_GPIO_NR(5, 9)) : -1; |
379 | gpio_request(IMX_GPIO_NR(1, 0), "espi1_cs1"); | 381 | gpio_request(IMX_GPIO_NR(1, 0), "espi1_cs1"); |
380 | return (bus == 0 && cs == 1) ? (IMX_GPIO_NR(1, 0)) : -1; | 382 | return (bus == 0 && cs == 1) ? (IMX_GPIO_NR(1, 0)) : -1; |
381 | gpio_request(IMX_GPIO_NR(3, 15), "espi1_cs2"); | 383 | gpio_request(IMX_GPIO_NR(3, 15), "espi1_cs2"); |
382 | return (bus == 0 && cs == 2) ? (IMX_GPIO_NR(3, 15)) : -1; | 384 | return (bus == 0 && cs == 2) ? (IMX_GPIO_NR(3, 15)) : -1; |
383 | gpio_request(IMX_GPIO_NR(3, 17), "espi1_cs3"); | 385 | gpio_request(IMX_GPIO_NR(3, 17), "espi1_cs3"); |
384 | return (bus == 0 && cs == 3) ? (IMX_GPIO_NR(3, 17)) : -1; | 386 | return (bus == 0 && cs == 3) ? (IMX_GPIO_NR(3, 17)) : -1; |
385 | } | 387 | } |
386 | 388 | ||
387 | #ifdef CONFIG_USB_DWC3 | 389 | #ifdef CONFIG_USB_DWC3 |
388 | 390 | ||
389 | #define USB_PHY_CTRL0 0xF0040 | 391 | #define USB_PHY_CTRL0 0xF0040 |
390 | #define USB_PHY_CTRL0_REF_SSP_EN BIT(2) | 392 | #define USB_PHY_CTRL0_REF_SSP_EN BIT(2) |
391 | 393 | ||
392 | #define USB_PHY_CTRL1 0xF0044 | 394 | #define USB_PHY_CTRL1 0xF0044 |
393 | #define USB_PHY_CTRL1_RESET BIT(0) | 395 | #define USB_PHY_CTRL1_RESET BIT(0) |
394 | #define USB_PHY_CTRL1_COMMONONN BIT(1) | 396 | #define USB_PHY_CTRL1_COMMONONN BIT(1) |
395 | #define USB_PHY_CTRL1_ATERESET BIT(3) | 397 | #define USB_PHY_CTRL1_ATERESET BIT(3) |
396 | #define USB_PHY_CTRL1_VDATSRCENB0 BIT(19) | 398 | #define USB_PHY_CTRL1_VDATSRCENB0 BIT(19) |
397 | #define USB_PHY_CTRL1_VDATDETENB0 BIT(20) | 399 | #define USB_PHY_CTRL1_VDATDETENB0 BIT(20) |
398 | 400 | ||
399 | #define USB_PHY_CTRL2 0xF0048 | 401 | #define USB_PHY_CTRL2 0xF0048 |
400 | #define USB_PHY_CTRL2_TXENABLEN0 BIT(8) | 402 | #define USB_PHY_CTRL2_TXENABLEN0 BIT(8) |
401 | 403 | ||
402 | static struct dwc3_device dwc3_device_data = { | 404 | static struct dwc3_device dwc3_device_data = { |
403 | #ifdef CONFIG_SPL_BUILD | 405 | #ifdef CONFIG_SPL_BUILD |
404 | .maximum_speed = USB_SPEED_HIGH, | 406 | .maximum_speed = USB_SPEED_HIGH, |
405 | #else | 407 | #else |
406 | .maximum_speed = USB_SPEED_SUPER, | 408 | .maximum_speed = USB_SPEED_SUPER, |
407 | #endif | 409 | #endif |
408 | .base = USB1_BASE_ADDR, | 410 | .base = USB1_BASE_ADDR, |
409 | .dr_mode = USB_DR_MODE_PERIPHERAL, | 411 | .dr_mode = USB_DR_MODE_PERIPHERAL, |
410 | .index = 0, | 412 | .index = 0, |
411 | .power_down_scale = 2, | 413 | .power_down_scale = 2, |
412 | }; | 414 | }; |
413 | 415 | ||
414 | int usb_gadget_handle_interrupts(void) | 416 | int usb_gadget_handle_interrupts(void) |
415 | { | 417 | { |
416 | dwc3_uboot_handle_interrupt(0); | 418 | dwc3_uboot_handle_interrupt(0); |
417 | return 0; | 419 | return 0; |
418 | } | 420 | } |
419 | 421 | ||
420 | static void dwc3_nxp_usb_phy_init(struct dwc3_device *dwc3) | 422 | static void dwc3_nxp_usb_phy_init(struct dwc3_device *dwc3) |
421 | { | 423 | { |
422 | u32 RegData; | 424 | u32 RegData; |
423 | 425 | ||
424 | RegData = readl(dwc3->base + USB_PHY_CTRL1); | 426 | RegData = readl(dwc3->base + USB_PHY_CTRL1); |
425 | RegData &= ~(USB_PHY_CTRL1_VDATSRCENB0 | USB_PHY_CTRL1_VDATDETENB0 | | 427 | RegData &= ~(USB_PHY_CTRL1_VDATSRCENB0 | USB_PHY_CTRL1_VDATDETENB0 | |
426 | USB_PHY_CTRL1_COMMONONN); | 428 | USB_PHY_CTRL1_COMMONONN); |
427 | RegData |= USB_PHY_CTRL1_RESET | USB_PHY_CTRL1_ATERESET; | 429 | RegData |= USB_PHY_CTRL1_RESET | USB_PHY_CTRL1_ATERESET; |
428 | writel(RegData, dwc3->base + USB_PHY_CTRL1); | 430 | writel(RegData, dwc3->base + USB_PHY_CTRL1); |
429 | 431 | ||
430 | RegData = readl(dwc3->base + USB_PHY_CTRL0); | 432 | RegData = readl(dwc3->base + USB_PHY_CTRL0); |
431 | RegData |= USB_PHY_CTRL0_REF_SSP_EN; | 433 | RegData |= USB_PHY_CTRL0_REF_SSP_EN; |
432 | writel(RegData, dwc3->base + USB_PHY_CTRL0); | 434 | writel(RegData, dwc3->base + USB_PHY_CTRL0); |
433 | 435 | ||
434 | RegData = readl(dwc3->base + USB_PHY_CTRL2); | 436 | RegData = readl(dwc3->base + USB_PHY_CTRL2); |
435 | RegData |= USB_PHY_CTRL2_TXENABLEN0; | 437 | RegData |= USB_PHY_CTRL2_TXENABLEN0; |
436 | writel(RegData, dwc3->base + USB_PHY_CTRL2); | 438 | writel(RegData, dwc3->base + USB_PHY_CTRL2); |
437 | 439 | ||
438 | RegData = readl(dwc3->base + USB_PHY_CTRL1); | 440 | RegData = readl(dwc3->base + USB_PHY_CTRL1); |
439 | RegData &= ~(USB_PHY_CTRL1_RESET | USB_PHY_CTRL1_ATERESET); | 441 | RegData &= ~(USB_PHY_CTRL1_RESET | USB_PHY_CTRL1_ATERESET); |
440 | writel(RegData, dwc3->base + USB_PHY_CTRL1); | 442 | writel(RegData, dwc3->base + USB_PHY_CTRL1); |
441 | } | 443 | } |
442 | #endif | 444 | #endif |
443 | 445 | ||
444 | /*USB Enable Over-Current Pin Setting*/ | 446 | /*USB Enable Over-Current Pin Setting*/ |
445 | static iomux_v3_cfg_t const usb_en_oc_pads[] = { | 447 | static iomux_v3_cfg_t const usb_en_oc_pads[] = { |
446 | IMX8MQ_PAD_NAND_DATA04__GPIO3_IO10 | MUX_PAD_CTRL(WEAK_PULLUP), | 448 | IMX8MQ_PAD_NAND_DATA04__GPIO3_IO10 | MUX_PAD_CTRL(WEAK_PULLUP), |
447 | IMX8MQ_PAD_NAND_DATA06__GPIO3_IO12 | MUX_PAD_CTRL(WEAK_PULLUP), | 449 | IMX8MQ_PAD_NAND_DATA06__GPIO3_IO12 | MUX_PAD_CTRL(WEAK_PULLUP), |
448 | IMX8MQ_PAD_NAND_DATA07__GPIO3_IO13 | MUX_PAD_CTRL(WEAK_PULLUP), | 450 | IMX8MQ_PAD_NAND_DATA07__GPIO3_IO13 | MUX_PAD_CTRL(WEAK_PULLUP), |
449 | }; | 451 | }; |
450 | 452 | ||
451 | static void setup_iomux_usb_en_oc(void) | 453 | static void setup_iomux_usb_en_oc(void) |
452 | { | 454 | { |
453 | imx_iomux_v3_setup_multiple_pads(usb_en_oc_pads, | 455 | imx_iomux_v3_setup_multiple_pads(usb_en_oc_pads, |
454 | ARRAY_SIZE(usb_en_oc_pads)); | 456 | ARRAY_SIZE(usb_en_oc_pads)); |
455 | 457 | ||
456 | gpio_request(IMX_GPIO_NR(3, 10), "usb0_en_oc#"); | 458 | gpio_request(IMX_GPIO_NR(3, 10), "usb0_en_oc#"); |
457 | gpio_direction_input(IMX_GPIO_NR(3, 10)); | 459 | gpio_direction_input(IMX_GPIO_NR(3, 10)); |
458 | gpio_request(IMX_GPIO_NR(3, 12), "usb2_en_oc#"); | 460 | gpio_request(IMX_GPIO_NR(3, 12), "usb2_en_oc#"); |
459 | gpio_direction_input(IMX_GPIO_NR(3, 12)); | 461 | gpio_direction_input(IMX_GPIO_NR(3, 12)); |
460 | gpio_request(IMX_GPIO_NR(3, 13), "usb3_en_oc#"); | 462 | gpio_request(IMX_GPIO_NR(3, 13), "usb3_en_oc#"); |
461 | gpio_direction_input(IMX_GPIO_NR(3, 13)); | 463 | gpio_direction_input(IMX_GPIO_NR(3, 13)); |
462 | } | 464 | } |
463 | 465 | ||
464 | #ifdef CONFIG_USB_TCPC | 466 | #ifdef CONFIG_USB_TCPC |
465 | struct tcpc_port port; | 467 | struct tcpc_port port; |
466 | struct tcpc_port_config port_config = { | 468 | struct tcpc_port_config port_config = { |
467 | .i2c_bus = 0, | 469 | .i2c_bus = 0, |
468 | .addr = 0x50, | 470 | .addr = 0x50, |
469 | .port_type = TYPEC_PORT_UFP, | 471 | .port_type = TYPEC_PORT_UFP, |
470 | .max_snk_mv = 20000, | 472 | .max_snk_mv = 20000, |
471 | .max_snk_ma = 3000, | 473 | .max_snk_ma = 3000, |
472 | .max_snk_mw = 15000, | 474 | .max_snk_mw = 15000, |
473 | .op_snk_mv = 9000, | 475 | .op_snk_mv = 9000, |
474 | }; | 476 | }; |
475 | 477 | ||
476 | #define USB_TYPEC_SEL IMX_GPIO_NR(3, 15) | 478 | #define USB_TYPEC_SEL IMX_GPIO_NR(3, 15) |
477 | 479 | ||
478 | static iomux_v3_cfg_t ss_mux_gpio[] = { | 480 | static iomux_v3_cfg_t ss_mux_gpio[] = { |
479 | IMX8MQ_PAD_NAND_RE_B__GPIO3_IO15 | MUX_PAD_CTRL(NO_PAD_CTRL), | 481 | IMX8MQ_PAD_NAND_RE_B__GPIO3_IO15 | MUX_PAD_CTRL(NO_PAD_CTRL), |
480 | }; | 482 | }; |
481 | 483 | ||
482 | void ss_mux_select(enum typec_cc_polarity pol) | 484 | void ss_mux_select(enum typec_cc_polarity pol) |
483 | { | 485 | { |
484 | if (pol == TYPEC_POLARITY_CC1) | 486 | if (pol == TYPEC_POLARITY_CC1) |
485 | gpio_direction_output(USB_TYPEC_SEL, 1); | 487 | gpio_direction_output(USB_TYPEC_SEL, 1); |
486 | else | 488 | else |
487 | gpio_direction_output(USB_TYPEC_SEL, 0); | 489 | gpio_direction_output(USB_TYPEC_SEL, 0); |
488 | } | 490 | } |
489 | 491 | ||
490 | static int setup_typec(void) | 492 | static int setup_typec(void) |
491 | { | 493 | { |
492 | int ret; | 494 | int ret; |
493 | 495 | ||
494 | imx_iomux_v3_setup_multiple_pads(ss_mux_gpio, ARRAY_SIZE(ss_mux_gpio)); | 496 | imx_iomux_v3_setup_multiple_pads(ss_mux_gpio, ARRAY_SIZE(ss_mux_gpio)); |
495 | gpio_request(USB_TYPEC_SEL, "typec_sel"); | 497 | gpio_request(USB_TYPEC_SEL, "typec_sel"); |
496 | 498 | ||
497 | ret = tcpc_init(&port, port_config, &ss_mux_select); | 499 | ret = tcpc_init(&port, port_config, &ss_mux_select); |
498 | if (ret) { | 500 | if (ret) { |
499 | printf("%s: tcpc init failed, err=%d\n", | 501 | printf("%s: tcpc init failed, err=%d\n", |
500 | __func__, ret); | 502 | __func__, ret); |
501 | } | 503 | } |
502 | 504 | ||
503 | return ret; | 505 | return ret; |
504 | } | 506 | } |
505 | #endif | 507 | #endif |
506 | 508 | ||
507 | #if defined(CONFIG_USB_DWC3) || defined(CONFIG_USB_XHCI_IMX8M) | 509 | #if defined(CONFIG_USB_DWC3) || defined(CONFIG_USB_XHCI_IMX8M) |
508 | int board_usb_init(int index, enum usb_init_type init) | 510 | int board_usb_init(int index, enum usb_init_type init) |
509 | { | 511 | { |
510 | int ret = 0; | 512 | int ret = 0; |
511 | imx8m_usb_power(index, true); | 513 | imx8m_usb_power(index, true); |
512 | 514 | ||
513 | if (index == 0 && init == USB_INIT_DEVICE) { | 515 | if (index == 0 && init == USB_INIT_DEVICE) { |
514 | #ifdef CONFIG_USB_TCPC | 516 | #ifdef CONFIG_USB_TCPC |
515 | ret = tcpc_setup_ufp_mode(&port); | 517 | ret = tcpc_setup_ufp_mode(&port); |
516 | #endif | 518 | #endif |
517 | dwc3_nxp_usb_phy_init(&dwc3_device_data); | 519 | dwc3_nxp_usb_phy_init(&dwc3_device_data); |
518 | return dwc3_uboot_init(&dwc3_device_data); | 520 | return dwc3_uboot_init(&dwc3_device_data); |
519 | } else if (index == 0 && init == USB_INIT_HOST) { | 521 | } else if (index == 0 && init == USB_INIT_HOST) { |
520 | #ifdef CONFIG_USB_TCPC | 522 | #ifdef CONFIG_USB_TCPC |
521 | ret = tcpc_setup_dfp_mode(&port); | 523 | ret = tcpc_setup_dfp_mode(&port); |
522 | #endif | 524 | #endif |
523 | return ret; | 525 | return ret; |
524 | } | 526 | } |
525 | 527 | ||
526 | return 0; | 528 | return 0; |
527 | } | 529 | } |
528 | 530 | ||
529 | int board_usb_cleanup(int index, enum usb_init_type init) | 531 | int board_usb_cleanup(int index, enum usb_init_type init) |
530 | { | 532 | { |
531 | int ret = 0; | 533 | int ret = 0; |
532 | if (index == 0 && init == USB_INIT_DEVICE) { | 534 | if (index == 0 && init == USB_INIT_DEVICE) { |
533 | dwc3_uboot_exit(index); | 535 | dwc3_uboot_exit(index); |
534 | } else if (index == 0 && init == USB_INIT_HOST) { | 536 | } else if (index == 0 && init == USB_INIT_HOST) { |
535 | #ifdef CONFIG_USB_TCPC | 537 | #ifdef CONFIG_USB_TCPC |
536 | ret = tcpc_disable_src_vbus(&port); | 538 | ret = tcpc_disable_src_vbus(&port); |
537 | #endif | 539 | #endif |
538 | } | 540 | } |
539 | 541 | ||
540 | imx8m_usb_power(index, false); | 542 | imx8m_usb_power(index, false); |
541 | 543 | ||
542 | return ret; | 544 | return ret; |
543 | } | 545 | } |
544 | #endif | 546 | #endif |
545 | 547 | ||
546 | int board_init(void) | 548 | int board_init(void) |
547 | { | 549 | { |
548 | board_qspi_init(); | 550 | board_qspi_init(); |
549 | setup_iomux_usb_en_oc(); | 551 | setup_iomux_usb_en_oc(); |
550 | setup_iomux_misc(); | 552 | setup_iomux_misc(); |
551 | setup_iomux_gpio(); | 553 | setup_iomux_gpio(); |
552 | 554 | ||
553 | #ifdef CONFIG_FEC_MXC | 555 | #ifdef CONFIG_FEC_MXC |
554 | setup_fec(); | 556 | setup_fec(); |
555 | #endif | 557 | #endif |
556 | 558 | ||
557 | #if defined(CONFIG_USB_DWC3) || defined(CONFIG_USB_XHCI_IMX8M) | 559 | #if defined(CONFIG_USB_DWC3) || defined(CONFIG_USB_XHCI_IMX8M) |
558 | init_usb_clk(); | 560 | init_usb_clk(); |
559 | #endif | 561 | #endif |
560 | 562 | ||
561 | #ifdef CONFIG_USB_TCPC | 563 | #ifdef CONFIG_USB_TCPC |
562 | setup_typec(); | 564 | setup_typec(); |
563 | #endif | 565 | #endif |
564 | return 0; | 566 | return 0; |
565 | } | 567 | } |
566 | 568 | ||
567 | int board_mmc_get_env_dev(int devno) | 569 | int board_mmc_get_env_dev(int devno) |
568 | { | 570 | { |
569 | return devno; | 571 | return devno; |
570 | } | 572 | } |
571 | 573 | ||
572 | int board_late_init(void) | 574 | int board_late_init(void) |
573 | { | 575 | { |
574 | setup_iomux_ecspi1(); | 576 | setup_iomux_ecspi1(); |
575 | 577 | ||
576 | /* Read Module Information from on module EEPROM and pass | 578 | /* Read Module Information from on module EEPROM and pass |
577 | * mac address to kernel | 579 | * mac address to kernel |
578 | */ | 580 | */ |
579 | struct udevice *dev; | 581 | struct udevice *dev; |
580 | int ret; | 582 | int ret; |
581 | u8 name[8]; | 583 | u8 name[8]; |
582 | u8 serial[12]; | 584 | u8 serial[12]; |
583 | u8 revision[4]; | 585 | u8 revision[4]; |
584 | u8 mac[6]; | 586 | u8 mac[6]; |
585 | 587 | ||
586 | ret = i2c_get_chip_for_busnum(2, 0x50, 2, &dev); | 588 | ret = i2c_get_chip_for_busnum(2, 0x50, 2, &dev); |
587 | if (ret) { | 589 | if (ret) { |
588 | debug("failed to get eeprom\n"); | 590 | debug("failed to get eeprom\n"); |
589 | return 0; | 591 | return 0; |
590 | } | 592 | } |
591 | 593 | ||
592 | /* Board ID */ | 594 | /* Board ID */ |
593 | ret = dm_i2c_read(dev, 0x4, name, 8); | 595 | ret = dm_i2c_read(dev, 0x4, name, 8); |
594 | if (ret) { | 596 | if (ret) { |
595 | debug("failed to read board ID from EEPROM\n"); | 597 | debug("failed to read board ID from EEPROM\n"); |
596 | return 0; | 598 | return 0; |
597 | } | 599 | } |
598 | puts("---------Embedian SMARC-iMX8M------------\n"); | 600 | puts("---------Embedian SMARC-iMX8M------------\n"); |
599 | printf(" Board ID: %c%c%c%c%c%c%c%c\n", | 601 | printf(" Board ID: %c%c%c%c%c%c%c%c\n", |
600 | name[0], name[1], name[2], name[3], name[4], name[5], name[6], name[7]); | 602 | name[0], name[1], name[2], name[3], name[4], name[5], name[6], name[7]); |
601 | 603 | ||
602 | /* Board Hardware Revision */ | 604 | /* Board Hardware Revision */ |
603 | ret = dm_i2c_read(dev, 0xc, revision, 4); | 605 | ret = dm_i2c_read(dev, 0xc, revision, 4); |
604 | if (ret) { | 606 | if (ret) { |
605 | debug("failed to read hardware revison from EEPROM\n"); | 607 | debug("failed to read hardware revison from EEPROM\n"); |
606 | return 0; | 608 | return 0; |
607 | } | 609 | } |
608 | printf(" Hardware Revision: %c%c%c%c\n", | 610 | printf(" Hardware Revision: %c%c%c%c\n", |
609 | revision[0], revision[1], revision[2], revision[3]); | 611 | revision[0], revision[1], revision[2], revision[3]); |
610 | 612 | ||
611 | /* Serial number */ | 613 | /* Serial number */ |
612 | ret = dm_i2c_read(dev, 0x10, serial, 12); | 614 | ret = dm_i2c_read(dev, 0x10, serial, 12); |
613 | if (ret) { | 615 | if (ret) { |
614 | debug("failed to read srial number from EEPROM\n"); | 616 | debug("failed to read srial number from EEPROM\n"); |
615 | return 0; | 617 | return 0; |
616 | } | 618 | } |
617 | printf(" Serial Number#: %c%c%c%c%c%c%c%c%c%c%c%c\n", | 619 | printf(" Serial Number#: %c%c%c%c%c%c%c%c%c%c%c%c\n", |
618 | serial[0], serial[1], serial[2], serial[3], serial[4], serial[5], serial[6], serial[7], serial[8], serial[9], serial[10], serial[11]); | 620 | serial[0], serial[1], serial[2], serial[3], serial[4], serial[5], serial[6], serial[7], serial[8], serial[9], serial[10], serial[11]); |
619 | 621 | ||
620 | /*MAC address */ | 622 | /*MAC address */ |
621 | ret = dm_i2c_read(dev, 0x3c, mac, 6); | 623 | ret = dm_i2c_read(dev, 0x3c, mac, 6); |
622 | if (ret) { | 624 | if (ret) { |
623 | debug("failed to read eth0 mac address from EEPROM\n"); | 625 | debug("failed to read eth0 mac address from EEPROM\n"); |
624 | return 0; | 626 | return 0; |
625 | } | 627 | } |
626 | 628 | ||
627 | if (is_valid_ethaddr(mac)) | 629 | if (is_valid_ethaddr(mac)) |
628 | printf(" MAC Address: %02x:%02x:%02x:%02x:%02x:%02x\n", | 630 | printf(" MAC Address: %02x:%02x:%02x:%02x:%02x:%02x\n", |
629 | mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); | 631 | mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); |
630 | eth_env_set_enetaddr("ethaddr", mac); | 632 | eth_env_set_enetaddr("ethaddr", mac); |
631 | puts("-----------------------------------------\n"); | 633 | puts("-----------------------------------------\n"); |
632 | 634 | ||
633 | #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG | 635 | #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG |
634 | env_set("board_name", "SMARC-iMX8M"); | 636 | env_set("board_name", "SMARC-iMX8M"); |
635 | env_set("board_rev", "iMX8MQ"); | 637 | env_set("board_rev", "iMX8MQ"); |
636 | #endif | 638 | #endif |
637 | 639 | ||
638 | #ifdef CONFIG_ENV_IS_IN_MMC | 640 | #ifdef CONFIG_ENV_IS_IN_MMC |
639 | board_late_mmc_env_init(); | 641 | board_late_mmc_env_init(); |
640 | #endif | 642 | #endif |
641 | 643 | ||
642 | /* SMARC BOOT_SEL*/ | 644 | /* SMARC BOOT_SEL*/ |
643 | gpio_request(IMX_GPIO_NR(1, 8), "BOOT_SEL_1"); | 645 | gpio_request(IMX_GPIO_NR(1, 8), "BOOT_SEL_1"); |
644 | gpio_request(IMX_GPIO_NR(1, 5), "BOOT_SEL_2"); | 646 | gpio_request(IMX_GPIO_NR(1, 5), "BOOT_SEL_2"); |
645 | gpio_request(IMX_GPIO_NR(1, 6), "BOOT_SEL_3"); | 647 | gpio_request(IMX_GPIO_NR(1, 6), "BOOT_SEL_3"); |
646 | if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) { | 648 | if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) { |
647 | puts("BOOT_SEL Detected: OFF OFF OFF, Boot from Carrier SATA is not supported...\n"); | 649 | puts("BOOT_SEL Detected: OFF OFF OFF, Boot from Carrier SATA is not supported...\n"); |
648 | hang(); | 650 | hang(); |
649 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) { | 651 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) { |
650 | puts("BOOT_SEL Detected: OFF OFF ON, Load Image from USB0...\n"); | 652 | puts("BOOT_SEL Detected: OFF OFF ON, Load Image from USB0...\n"); |
651 | env_set_ulong("usb dev", 1); | 653 | env_set_ulong("usb dev", 1); |
652 | env_set("bootcmd", "usb start; run loadusbbootenv; run importusbbootenv; run uenvcmd; loadusbimage; run usbboot;"); | 654 | env_set("bootcmd", "usb start; run loadusbbootenv; run importusbbootenv; run uenvcmd; loadusbimage; run usbboot;"); |
653 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) { | 655 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) { |
654 | puts("BOOT_SEL Detected: OFF ON OFF, Boot from Carrier eSPI is not supported...\n"); | 656 | puts("BOOT_SEL Detected: OFF ON OFF, Boot from Carrier eSPI is not supported...\n"); |
655 | hang(); | 657 | hang(); |
656 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) { | 658 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) { |
657 | puts("BOOT_SEL Detected: ON OFF OFF, Load Image from Carrier SD Card...\n"); | 659 | puts("BOOT_SEL Detected: ON OFF OFF, Load Image from Carrier SD Card...\n"); |
658 | env_set_ulong("mmcdev", 1); | 660 | env_set_ulong("mmcdev", 1); |
659 | env_set("bootcmd", "mmc rescan; run loadbootenv; run importbootenv; run uenvcmd; run loadimage; run mmcboot;"); | 661 | env_set("bootcmd", "mmc rescan; run loadbootenv; run importbootenv; run uenvcmd; run loadimage; run mmcboot;"); |
660 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) { | 662 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) { |
661 | puts("BOOT_SEL Detected: OFF ON ON, Load Image from Module eMMC Flash...\n"); | 663 | puts("BOOT_SEL Detected: OFF ON ON, Load Image from Module eMMC Flash...\n"); |
662 | env_set_ulong("mmcdev", 0); | 664 | env_set_ulong("mmcdev", 0); |
663 | env_set("bootcmd", "mmc rescan; run loadbootenv; run importbootenv; run uenvcmd; run loadimage; run mmcboot;"); | 665 | env_set("bootcmd", "mmc rescan; run loadbootenv; run importbootenv; run uenvcmd; run loadimage; run mmcboot;"); |
664 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) { | 666 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) { |
665 | puts("BOOT_SEL Detected: ON OFF ON, Load zImage from GBE...\n"); | 667 | puts("BOOT_SEL Detected: ON OFF ON, Load zImage from GBE...\n"); |
666 | env_set("bootcmd", "run netboot;"); | 668 | env_set("bootcmd", "run netboot;"); |
667 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) { | 669 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) { |
668 | puts("Carrier SPI Boot is not supported...\n"); | 670 | puts("Carrier SPI Boot is not supported...\n"); |
669 | hang(); | 671 | hang(); |
670 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) { | 672 | } else if ((gpio_get_value(IMX_GPIO_NR(1, 8)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) { |
671 | puts("BOOT_SEL Detected: ON ON ON, Boot from Module SPI is not supported...\n"); | 673 | puts("BOOT_SEL Detected: ON ON ON, Boot from Module SPI is not supported...\n"); |
672 | hang(); | 674 | hang(); |
673 | } else { | 675 | } else { |
674 | puts("unsupported boot devices\n"); | 676 | puts("unsupported boot devices\n"); |
675 | hang(); | 677 | hang(); |
676 | } | 678 | } |
677 | 679 | ||
678 | return 0; | 680 | return 0; |
679 | } | 681 | } |
680 | 682 | ||
681 | #ifdef CONFIG_FSL_FASTBOOT | 683 | #ifdef CONFIG_FSL_FASTBOOT |
682 | #ifdef CONFIG_ANDROID_RECOVERY | 684 | #ifdef CONFIG_ANDROID_RECOVERY |
683 | #define LID_KEY IMX_GPIO_NR(1, 9) | 685 | #define LID_KEY IMX_GPIO_NR(1, 9) |
684 | #define LID_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE) | 686 | #define LID_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE) |
685 | 687 | ||
686 | static iomux_v3_cfg_t const lid_pads[] = { | 688 | static iomux_v3_cfg_t const lid_pads[] = { |
687 | IMX8MQ_PAD_GPIO1_IO09__GPIO1_IO9 | MUX_PAD_CTRL(LID_PAD_CTRL), | 689 | IMX8MQ_PAD_GPIO1_IO09__GPIO1_IO9 | MUX_PAD_CTRL(LID_PAD_CTRL), |
688 | }; | 690 | }; |
689 | 691 | ||
690 | int is_recovery_key_pressing(void) | 692 | int is_recovery_key_pressing(void) |
691 | { | 693 | { |
692 | imx_iomux_v3_setup_multiple_pads(lid_pads, ARRAY_SIZE(lid_pads)); | 694 | imx_iomux_v3_setup_multiple_pads(lid_pads, ARRAY_SIZE(lid_pads)); |
693 | gpio_request(LID_KEY, "LID"); | 695 | gpio_request(LID_KEY, "LID"); |
694 | gpio_direction_input(LID_KEY); | 696 | gpio_direction_input(LID_KEY); |
695 | if (gpio_get_value(LID_KEY) == 0) { /* LID key is low assert */ | 697 | if (gpio_get_value(LID_KEY) == 0) { /* LID key is low assert */ |
696 | printf("Recovery key pressed\n"); | 698 | printf("Recovery key pressed\n"); |
697 | return 1; | 699 | return 1; |
698 | } | 700 | } |
699 | return 0; | 701 | return 0; |
700 | } | 702 | } |
701 | #endif /*CONFIG_ANDROID_RECOVERY*/ | 703 | #endif /*CONFIG_ANDROID_RECOVERY*/ |
702 | #endif /*CONFIG_FSL_FASTBOOT*/ | 704 | #endif /*CONFIG_FSL_FASTBOOT*/ |
703 | 705 | ||
704 | #if defined(CONFIG_VIDEO_IMXDCSS) | 706 | #if defined(CONFIG_VIDEO_IMXDCSS) |
705 | 707 | ||
706 | struct display_info_t const displays[] = {{ | 708 | struct display_info_t const displays[] = {{ |
707 | .bus = 0, /* Unused */ | 709 | .bus = 0, /* Unused */ |
708 | .addr = 0, /* Unused */ | 710 | .addr = 0, /* Unused */ |
709 | .pixfmt = GDF_32BIT_X888RGB, | 711 | .pixfmt = GDF_32BIT_X888RGB, |
710 | .detect = NULL, | 712 | .detect = NULL, |
711 | .enable = NULL, | 713 | .enable = NULL, |
712 | #ifndef CONFIG_VIDEO_IMXDCSS_1080P | 714 | #ifndef CONFIG_VIDEO_IMXDCSS_1080P |
713 | .mode = { | 715 | .mode = { |
714 | .name = "HDMI", /* 720P60 */ | 716 | .name = "HDMI", /* 720P60 */ |
715 | .refresh = 60, | 717 | .refresh = 60, |
716 | .xres = 1280, | 718 | .xres = 1280, |
717 | .yres = 720, | 719 | .yres = 720, |
718 | .pixclock = 13468, /* 74250 kHz */ | 720 | .pixclock = 13468, /* 74250 kHz */ |
719 | .left_margin = 110, | 721 | .left_margin = 110, |
720 | .right_margin = 220, | 722 | .right_margin = 220, |
721 | .upper_margin = 5, | 723 | .upper_margin = 5, |
722 | .lower_margin = 20, | 724 | .lower_margin = 20, |
723 | .hsync_len = 40, | 725 | .hsync_len = 40, |
724 | .vsync_len = 5, | 726 | .vsync_len = 5, |
725 | .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, | 727 | .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, |
726 | .vmode = FB_VMODE_NONINTERLACED | 728 | .vmode = FB_VMODE_NONINTERLACED |
727 | } | 729 | } |
728 | #else | 730 | #else |
729 | .mode = { | 731 | .mode = { |
730 | .name = "HDMI", /* 1080P60 */ | 732 | .name = "HDMI", /* 1080P60 */ |
731 | .refresh = 60, | 733 | .refresh = 60, |
732 | .xres = 1920, | 734 | .xres = 1920, |
733 | .yres = 1080, | 735 | .yres = 1080, |
734 | .pixclock = 6734, /* 148500 kHz */ | 736 | .pixclock = 6734, /* 148500 kHz */ |
735 | .left_margin = 148, | 737 | .left_margin = 148, |
736 | .right_margin = 88, | 738 | .right_margin = 88, |
737 | .upper_margin = 36, | 739 | .upper_margin = 36, |
738 | .lower_margin = 4, | 740 | .lower_margin = 4, |
739 | .hsync_len = 44, | 741 | .hsync_len = 44, |
740 | .vsync_len = 5, | 742 | .vsync_len = 5, |
741 | .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, | 743 | .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, |
742 | .vmode = FB_VMODE_NONINTERLACED | 744 | .vmode = FB_VMODE_NONINTERLACED |
743 | } | 745 | } |
744 | #endif | 746 | #endif |
745 | } }; | 747 | } }; |
746 | size_t display_count = ARRAY_SIZE(displays); | 748 | size_t display_count = ARRAY_SIZE(displays); |
747 | 749 | ||
748 | #endif /* CONFIG_VIDEO_IMXDCSS */ | 750 | #endif /* CONFIG_VIDEO_IMXDCSS */ |
749 | 751 | ||
750 | /* return hard code board id for imx8m_ref */ | 752 | /* return hard code board id for imx8m_ref */ |
751 | #if defined(CONFIG_ANDROID_THINGS_SUPPORT) && defined(CONFIG_ARCH_IMX8M) | 753 | #if defined(CONFIG_ANDROID_THINGS_SUPPORT) && defined(CONFIG_ARCH_IMX8M) |
752 | int get_imx8m_baseboard_id(void) | 754 | int get_imx8m_baseboard_id(void) |
753 | { | 755 | { |
754 | return IMX8M_REF_3G; | 756 | return IMX8M_REF_3G; |
755 | } | 757 | } |
756 | #endif | 758 | #endif |
757 | 759 |