Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'imx-dt-3.8' of git://git.linaro.org/people/shawnguo/linux-2.6 into next/dt

From Shawn Guo <shawn.guo@linaro.org>:
It's based on imx/multiplatform branch. Most of them are dts changes.
There are also a few imx6 improvement patches in there.

* tag 'imx-dt-3.8' of git://git.linaro.org/people/shawnguo/linux-2.6:
ARM: imx6q: select ARM and PL310 errata
ARM: imx6q: print silicon version on boot
ARM i.MX dts: Consistently add labels to devicenodes
ARM: dts: imx6q-sabresd: add volume up/down gpio keys
ARM: dts: imx53: pinctl update
ARM: imx: enable cpufreq for imx6q
ARM: dts: imx6q: enable snvs lp rtc
ARM: dts: imx6q-sabreauto: Add basic support
ARM: imx6q: let users input debug uart port number
ARM: dts: imx53-qsb: Make DA9053 regulator functional
ARM: dts: imx53-qsb: Use pinctrl for gpio-led
ARM i.MX dtsi: Add default bus-width property for esdhc controller

Signed-off-by: Arnd Bregmann <arnd@arndb.de>

+389 -139
+4
Documentation/devicetree/bindings/arm/fsl.txt
··· 41 41 Required root node properties: 42 42 - compatible = "fsl,imx6q-sabresd", "fsl,imx6q"; 43 43 44 + i.MX6 Quad SABRE Automotive Board 45 + Required root node properties: 46 + - compatible = "fsl,imx6q-sabreauto", "fsl,imx6q"; 47 + 44 48 Generic i.MX boards 45 49 ------------------- 46 50
+13 -13
arch/arm/Kconfig.debug
··· 226 226 Say Y here if you want kernel low-level debugging support 227 227 on i.MX50 or i.MX53. 228 228 229 - config DEBUG_IMX6Q_UART2 230 - bool "i.MX6Q Debug UART2" 229 + config DEBUG_IMX6Q_UART 230 + bool "i.MX6Q Debug UART" 231 231 depends on SOC_IMX6Q 232 232 help 233 233 Say Y here if you want kernel low-level debugging support 234 - on i.MX6Q UART2. This is correct for e.g. the SabreLite 235 - board. 236 - 237 - config DEBUG_IMX6Q_UART4 238 - bool "i.MX6Q Debug UART4" 239 - depends on SOC_IMX6Q 240 - help 241 - Say Y here if you want kernel low-level debugging support 242 - on i.MX6Q UART4. 234 + on i.MX6Q. 243 235 244 236 config DEBUG_MMP_UART2 245 237 bool "Kernel low-level debugging message via MMP UART2" ··· 418 426 419 427 endchoice 420 428 429 + config DEBUG_IMX6Q_UART_PORT 430 + int "i.MX6Q Debug UART Port (1-5)" if DEBUG_IMX6Q_UART 431 + range 1 5 432 + default 1 433 + depends on SOC_IMX6Q 434 + help 435 + Choose UART port on which kernel low-level debug messages 436 + should be output. 437 + 421 438 config DEBUG_LL_INCLUDE 422 439 string 423 440 default "debug/icedcc.S" if DEBUG_ICEDCC ··· 436 435 DEBUG_IMX31_IMX35_UART || \ 437 436 DEBUG_IMX51_UART || \ 438 437 DEBUG_IMX50_IMX53_UART ||\ 439 - DEBUG_IMX6Q_UART2 || \ 440 - DEBUG_IMX6Q_UART4 438 + DEBUG_IMX6Q_UART 441 439 default "debug/highbank.S" if DEBUG_HIGHBANK_UART 442 440 default "debug/mvebu.S" if DEBUG_MVEBU_UART 443 441 default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART
+1
arch/arm/boot/dts/Makefile
··· 51 51 imx53-qsb.dtb \ 52 52 imx53-smd.dtb \ 53 53 imx6q-arm2.dtb \ 54 + imx6q-sabreauto.dtb \ 54 55 imx6q-sabrelite.dtb \ 55 56 imx6q-sabresd.dtb 56 57 dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \
+3 -2
arch/arm/boot/dts/imx27.dtsi
··· 58 58 reg = <0x10000000 0x10000000>; 59 59 ranges; 60 60 61 - wdog@10002000 { 61 + wdog: wdog@10002000 { 62 62 compatible = "fsl,imx27-wdt", "fsl,imx21-wdt"; 63 63 reg = <0x10002000 0x4000>; 64 64 interrupts = <27>; ··· 218 218 status = "disabled"; 219 219 }; 220 220 }; 221 - nand@d8000000 { 221 + 222 + nfc: nand@d8000000 { 222 223 #address-cells = <1>; 223 224 #size-cells = <1>; 224 225
+23 -20
arch/arm/boot/dts/imx51.dtsi
··· 76 76 reg = <0x70000000 0x40000>; 77 77 ranges; 78 78 79 - esdhc@70004000 { /* ESDHC1 */ 79 + esdhc1: esdhc@70004000 { 80 80 compatible = "fsl,imx51-esdhc"; 81 81 reg = <0x70004000 0x4000>; 82 82 interrupts = <1>; 83 83 status = "disabled"; 84 84 }; 85 85 86 - esdhc@70008000 { /* ESDHC2 */ 86 + esdhc2: esdhc@70008000 { 87 87 compatible = "fsl,imx51-esdhc"; 88 88 reg = <0x70008000 0x4000>; 89 89 interrupts = <2>; 90 + bus-width = <4>; 90 91 status = "disabled"; 91 92 }; 92 93 ··· 98 97 status = "disabled"; 99 98 }; 100 99 101 - ecspi@70010000 { /* ECSPI1 */ 100 + ecspi1: ecspi@70010000 { 102 101 #address-cells = <1>; 103 102 #size-cells = <0>; 104 103 compatible = "fsl,imx51-ecspi"; ··· 116 115 status = "disabled"; 117 116 }; 118 117 119 - esdhc@70020000 { /* ESDHC3 */ 118 + esdhc3: esdhc@70020000 { 120 119 compatible = "fsl,imx51-esdhc"; 121 120 reg = <0x70020000 0x4000>; 122 121 interrupts = <3>; 122 + bus-width = <4>; 123 123 status = "disabled"; 124 124 }; 125 125 126 - esdhc@70024000 { /* ESDHC4 */ 126 + esdhc4: esdhc@70024000 { 127 127 compatible = "fsl,imx51-esdhc"; 128 128 reg = <0x70024000 0x4000>; 129 129 interrupts = <4>; 130 + bus-width = <4>; 130 131 status = "disabled"; 131 132 }; 132 133 }; 133 134 134 - usb@73f80000 { 135 + usbotg: usb@73f80000 { 135 136 compatible = "fsl,imx51-usb", "fsl,imx27-usb"; 136 137 reg = <0x73f80000 0x0200>; 137 138 interrupts = <18>; 138 139 status = "disabled"; 139 140 }; 140 141 141 - usb@73f80200 { 142 + usbh1: usb@73f80200 { 142 143 compatible = "fsl,imx51-usb", "fsl,imx27-usb"; 143 144 reg = <0x73f80200 0x0200>; 144 145 interrupts = <14>; 145 146 status = "disabled"; 146 147 }; 147 148 148 - usb@73f80400 { 149 + usbh2: usb@73f80400 { 149 150 compatible = "fsl,imx51-usb", "fsl,imx27-usb"; 150 151 reg = <0x73f80400 0x0200>; 151 152 interrupts = <16>; 152 153 status = "disabled"; 153 154 }; 154 155 155 - usb@73f80600 { 156 + usbh3: usb@73f80600 { 156 157 compatible = "fsl,imx51-usb", "fsl,imx27-usb"; 157 158 reg = <0x73f80600 0x0200>; 158 159 interrupts = <17>; ··· 201 198 #interrupt-cells = <2>; 202 199 }; 203 200 204 - wdog@73f98000 { /* WDOG1 */ 201 + wdog1: wdog@73f98000 { 205 202 compatible = "fsl,imx51-wdt", "fsl,imx21-wdt"; 206 203 reg = <0x73f98000 0x4000>; 207 204 interrupts = <58>; 208 205 }; 209 206 210 - wdog@73f9c000 { /* WDOG2 */ 207 + wdog2: wdog@73f9c000 { 211 208 compatible = "fsl,imx51-wdt", "fsl,imx21-wdt"; 212 209 reg = <0x73f9c000 0x4000>; 213 210 interrupts = <59>; 214 211 status = "disabled"; 215 212 }; 216 213 217 - iomuxc@73fa8000 { 214 + iomuxc: iomuxc@73fa8000 { 218 215 compatible = "fsl,imx51-iomuxc"; 219 216 reg = <0x73fa8000 0x4000>; 220 217 ··· 352 349 reg = <0x80000000 0x10000000>; 353 350 ranges; 354 351 355 - ecspi@83fac000 { /* ECSPI2 */ 352 + ecspi2: ecspi@83fac000 { 356 353 #address-cells = <1>; 357 354 #size-cells = <0>; 358 355 compatible = "fsl,imx51-ecspi"; ··· 361 358 status = "disabled"; 362 359 }; 363 360 364 - sdma@83fb0000 { 361 + sdma: sdma@83fb0000 { 365 362 compatible = "fsl,imx51-sdma", "fsl,imx35-sdma"; 366 363 reg = <0x83fb0000 0x4000>; 367 364 interrupts = <6>; 368 365 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx51.bin"; 369 366 }; 370 367 371 - cspi@83fc0000 { 368 + cspi: cspi@83fc0000 { 372 369 #address-cells = <1>; 373 370 #size-cells = <0>; 374 371 compatible = "fsl,imx51-cspi", "fsl,imx35-cspi"; ··· 377 374 status = "disabled"; 378 375 }; 379 376 380 - i2c@83fc4000 { /* I2C2 */ 377 + i2c2: i2c@83fc4000 { 381 378 #address-cells = <1>; 382 379 #size-cells = <0>; 383 380 compatible = "fsl,imx51-i2c", "fsl,imx21-i2c"; ··· 386 383 status = "disabled"; 387 384 }; 388 385 389 - i2c@83fc8000 { /* I2C1 */ 386 + i2c1: i2c@83fc8000 { 390 387 #address-cells = <1>; 391 388 #size-cells = <0>; 392 389 compatible = "fsl,imx51-i2c", "fsl,imx21-i2c"; ··· 404 401 status = "disabled"; 405 402 }; 406 403 407 - audmux@83fd0000 { 404 + audmux: audmux@83fd0000 { 408 405 compatible = "fsl,imx51-audmux", "fsl,imx31-audmux"; 409 406 reg = <0x83fd0000 0x4000>; 410 407 status = "disabled"; 411 408 }; 412 409 413 - nand@83fdb000 { 410 + nfc: nand@83fdb000 { 414 411 compatible = "fsl,imx51-nand"; 415 412 reg = <0x83fdb000 0x1000 0xcfff0000 0x10000>; 416 413 interrupts = <8>; ··· 426 423 status = "disabled"; 427 424 }; 428 425 429 - ethernet@83fec000 { 426 + fec: ethernet@83fec000 { 430 427 compatible = "fsl,imx51-fec", "fsl,imx27-fec"; 431 428 reg = <0x83fec000 0x4000>; 432 429 interrupts = <87>;
+44 -18
arch/arm/boot/dts/imx53-qsb.dts
··· 60 60 697 0x80000000 /* MX53_PAD_EIM_DA12__GPIO3_12 */ 61 61 701 0x80000000 /* MX53_PAD_EIM_DA13__GPIO3_13 */ 62 62 868 0x80000000 /* MX53_PAD_PATA_DA_0__GPIO7_6 */ 63 + 1149 0x80000000 /* MX53_PAD_GPIO_16__GPIO7_11 */ 64 + >; 65 + }; 66 + 67 + led_pin_gpio7_7: led_gpio7_7@0 { 68 + fsl,pins = < 63 69 873 0x80000000 /* MX53_PAD_PATA_DA_1__GPIO7_7 */ 64 70 >; 65 71 }; 66 72 }; 73 + 67 74 }; 68 75 69 76 uart1: serial@53fbc000 { ··· 107 100 pmic: dialog@48 { 108 101 compatible = "dlg,da9053-aa", "dlg,da9052"; 109 102 reg = <0x48>; 103 + interrupt-parent = <&gpio7>; 104 + interrupts = <11 0x8>; /* low-level active IRQ at GPIO7_11 */ 110 105 111 106 regulators { 112 - buck0 { 107 + buck1_reg: buck1 { 113 108 regulator-min-microvolt = <500000>; 114 109 regulator-max-microvolt = <2075000>; 110 + regulator-always-on; 115 111 }; 116 112 117 - buck1 { 113 + buck2_reg: buck2 { 118 114 regulator-min-microvolt = <500000>; 119 115 regulator-max-microvolt = <2075000>; 116 + regulator-always-on; 120 117 }; 121 118 122 - buck2 { 119 + buck3_reg: buck3 { 123 120 regulator-min-microvolt = <925000>; 124 121 regulator-max-microvolt = <2500000>; 122 + regulator-always-on; 125 123 }; 126 124 127 - buck3 { 125 + buck4_reg: buck4 { 128 126 regulator-min-microvolt = <925000>; 129 127 regulator-max-microvolt = <2500000>; 128 + regulator-always-on; 130 129 }; 131 130 132 - ldo4 { 131 + ldo1_reg: ldo1 { 133 132 regulator-min-microvolt = <600000>; 134 133 regulator-max-microvolt = <1800000>; 134 + regulator-boot-on; 135 + regulator-always-on; 135 136 }; 136 137 137 - ldo5 { 138 + ldo2_reg: ldo2 { 139 + regulator-min-microvolt = <600000>; 140 + regulator-max-microvolt = <1800000>; 141 + regulator-always-on; 142 + }; 143 + 144 + ldo3_reg: ldo3 { 138 145 regulator-min-microvolt = <600000>; 139 146 regulator-max-microvolt = <1800000>; 147 + regulator-always-on; 140 148 }; 141 149 142 - ldo6 { 150 + ldo4_reg: ldo4 { 143 151 regulator-min-microvolt = <1725000>; 144 152 regulator-max-microvolt = <3300000>; 153 + regulator-always-on; 145 154 }; 146 155 147 - ldo7 { 156 + ldo5_reg: ldo5 { 148 157 regulator-min-microvolt = <1725000>; 149 158 regulator-max-microvolt = <3300000>; 159 + regulator-always-on; 150 160 }; 151 161 152 - ldo8 { 162 + ldo6_reg: ldo6 { 153 163 regulator-min-microvolt = <1200000>; 154 164 regulator-max-microvolt = <3600000>; 165 + regulator-always-on; 155 166 }; 156 167 157 - ldo9 { 168 + ldo7_reg: ldo7 { 158 169 regulator-min-microvolt = <1200000>; 159 170 regulator-max-microvolt = <3600000>; 171 + regulator-always-on; 160 172 }; 161 173 162 - ldo10 { 174 + ldo8_reg: ldo8 { 163 175 regulator-min-microvolt = <1200000>; 164 176 regulator-max-microvolt = <3600000>; 177 + regulator-always-on; 165 178 }; 166 179 167 - ldo11 { 180 + ldo9_reg: ldo9 { 168 181 regulator-min-microvolt = <1200000>; 169 182 regulator-max-microvolt = <3600000>; 183 + regulator-always-on; 170 184 }; 171 185 172 - ldo12 { 186 + ldo10_reg: ldo10 { 173 187 regulator-min-microvolt = <1250000>; 174 188 regulator-max-microvolt = <3650000>; 175 - }; 176 - 177 - ldo13 { 178 - regulator-min-microvolt = <1200000>; 179 - regulator-max-microvolt = <3600000>; 189 + regulator-always-on; 180 190 }; 181 191 }; 182 192 }; ··· 240 216 241 217 leds { 242 218 compatible = "gpio-leds"; 219 + pinctrl-names = "default"; 220 + pinctrl-0 = <&led_pin_gpio7_7>; 243 221 244 222 user { 245 223 label = "Heartbeat";
+71 -21
arch/arm/boot/dts/imx53.dtsi
··· 81 81 reg = <0x50000000 0x40000>; 82 82 ranges; 83 83 84 - esdhc@50004000 { /* ESDHC1 */ 84 + esdhc1: esdhc@50004000 { 85 85 compatible = "fsl,imx53-esdhc"; 86 86 reg = <0x50004000 0x4000>; 87 87 interrupts = <1>; 88 + bus-width = <4>; 88 89 status = "disabled"; 89 90 }; 90 91 91 - esdhc@50008000 { /* ESDHC2 */ 92 + esdhc2: esdhc@50008000 { 92 93 compatible = "fsl,imx53-esdhc"; 93 94 reg = <0x50008000 0x4000>; 94 95 interrupts = <2>; 96 + bus-width = <4>; 95 97 status = "disabled"; 96 98 }; 97 99 ··· 104 102 status = "disabled"; 105 103 }; 106 104 107 - ecspi@50010000 { /* ECSPI1 */ 105 + ecspi1: ecspi@50010000 { 108 106 #address-cells = <1>; 109 107 #size-cells = <0>; 110 108 compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi"; ··· 122 120 status = "disabled"; 123 121 }; 124 122 125 - esdhc@50020000 { /* ESDHC3 */ 123 + esdhc3: esdhc@50020000 { 126 124 compatible = "fsl,imx53-esdhc"; 127 125 reg = <0x50020000 0x4000>; 128 126 interrupts = <3>; 127 + bus-width = <4>; 129 128 status = "disabled"; 130 129 }; 131 130 132 - esdhc@50024000 { /* ESDHC4 */ 131 + esdhc4: esdhc@50024000 { 133 132 compatible = "fsl,imx53-esdhc"; 134 133 reg = <0x50024000 0x4000>; 135 134 interrupts = <4>; 135 + bus-width = <4>; 136 136 status = "disabled"; 137 137 }; 138 138 }; 139 139 140 - usb@53f80000 { 140 + usbotg: usb@53f80000 { 141 141 compatible = "fsl,imx53-usb", "fsl,imx27-usb"; 142 142 reg = <0x53f80000 0x0200>; 143 143 interrupts = <18>; 144 144 status = "disabled"; 145 145 }; 146 146 147 - usb@53f80200 { 147 + usbh1: usb@53f80200 { 148 148 compatible = "fsl,imx53-usb", "fsl,imx27-usb"; 149 149 reg = <0x53f80200 0x0200>; 150 150 interrupts = <14>; 151 151 status = "disabled"; 152 152 }; 153 153 154 - usb@53f80400 { 154 + usbh2: usb@53f80400 { 155 155 compatible = "fsl,imx53-usb", "fsl,imx27-usb"; 156 156 reg = <0x53f80400 0x0200>; 157 157 interrupts = <16>; 158 158 status = "disabled"; 159 159 }; 160 160 161 - usb@53f80600 { 161 + usbh3: usb@53f80600 { 162 162 compatible = "fsl,imx53-usb", "fsl,imx27-usb"; 163 163 reg = <0x53f80600 0x0200>; 164 164 interrupts = <17>; ··· 207 203 #interrupt-cells = <2>; 208 204 }; 209 205 210 - wdog@53f98000 { /* WDOG1 */ 206 + wdog1: wdog@53f98000 { 211 207 compatible = "fsl,imx53-wdt", "fsl,imx21-wdt"; 212 208 reg = <0x53f98000 0x4000>; 213 209 interrupts = <58>; 214 210 }; 215 211 216 - wdog@53f9c000 { /* WDOG2 */ 212 + wdog2: wdog@53f9c000 { 217 213 compatible = "fsl,imx53-wdt", "fsl,imx21-wdt"; 218 214 reg = <0x53f9c000 0x4000>; 219 215 interrupts = <59>; 220 216 status = "disabled"; 221 217 }; 222 218 223 - iomuxc@53fa8000 { 219 + iomuxc: iomuxc@53fa8000 { 224 220 compatible = "fsl,imx53-iomuxc"; 225 221 reg = <0x53fa8000 0x4000>; 226 222 ··· 320 316 }; 321 317 }; 322 318 319 + can1 { 320 + pinctrl_can1_1: can1grp-1 { 321 + fsl,pins = < 322 + 847 0x80000000 /* MX53_PAD_PATA_INTRQ__CAN1_TXCAN */ 323 + 853 0x80000000 /* MX53_PAD_PATA_DIOR__CAN1_RXCAN */ 324 + >; 325 + }; 326 + }; 327 + 328 + can2 { 329 + pinctrl_can2_1: can2grp-1 { 330 + fsl,pins = < 331 + 67 0x80000000 /* MX53_PAD_KEY_COL4__CAN2_TXCAN */ 332 + 74 0x80000000 /* MX53_PAD_KEY_ROW4__CAN2_RXCAN */ 333 + >; 334 + }; 335 + }; 336 + 323 337 i2c1 { 324 338 pinctrl_i2c1_1: i2c1grp-1 { 325 339 fsl,pins = < ··· 352 330 fsl,pins = < 353 331 61 0xc0000000 /* MX53_PAD_KEY_ROW3__I2C2_SDA */ 354 332 53 0xc0000000 /* MX53_PAD_KEY_COL3__I2C2_SCL */ 333 + >; 334 + }; 335 + }; 336 + 337 + i2c3 { 338 + pinctrl_i2c3_1: i2c3grp-1 { 339 + fsl,pins = < 340 + 1102 0xc0000000 /* MX53_PAD_GPIO_6__I2C3_SDA */ 341 + 1130 0xc0000000 /* MX53_PAD_GPIO_5__I2C3_SCL */ 355 342 >; 356 343 }; 357 344 }; ··· 400 369 >; 401 370 }; 402 371 }; 372 + 373 + uart4 { 374 + pinctrl_uart4_1: uart4grp-1 { 375 + fsl,pins = < 376 + 11 0x1c5 /* MX53_PAD_KEY_COL0__UART4_TXD_MUX */ 377 + 18 0x1c5 /* MX53_PAD_KEY_ROW0__UART4_RXD_MUX */ 378 + >; 379 + }; 380 + }; 381 + 382 + uart5 { 383 + pinctrl_uart5_1: uart5grp-1 { 384 + fsl,pins = < 385 + 24 0x1c5 /* MX53_PAD_KEY_COL1__UART5_TXD_MUX */ 386 + 31 0x1c5 /* MX53_PAD_KEY_ROW1__UART5_RXD_MUX */ 387 + >; 388 + }; 389 + }; 390 + 403 391 }; 404 392 405 393 uart1: serial@53fbc000 { ··· 479 429 #interrupt-cells = <2>; 480 430 }; 481 431 482 - i2c@53fec000 { /* I2C3 */ 432 + i2c3: i2c@53fec000 { 483 433 #address-cells = <1>; 484 434 #size-cells = <0>; 485 435 compatible = "fsl,imx53-i2c", "fsl,imx21-i2c"; ··· 510 460 status = "disabled"; 511 461 }; 512 462 513 - ecspi@63fac000 { /* ECSPI2 */ 463 + ecspi2: ecspi@63fac000 { 514 464 #address-cells = <1>; 515 465 #size-cells = <0>; 516 466 compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi"; ··· 519 469 status = "disabled"; 520 470 }; 521 471 522 - sdma@63fb0000 { 472 + sdma: sdma@63fb0000 { 523 473 compatible = "fsl,imx53-sdma", "fsl,imx35-sdma"; 524 474 reg = <0x63fb0000 0x4000>; 525 475 interrupts = <6>; 526 476 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin"; 527 477 }; 528 478 529 - cspi@63fc0000 { 479 + cspi: cspi@63fc0000 { 530 480 #address-cells = <1>; 531 481 #size-cells = <0>; 532 482 compatible = "fsl,imx53-cspi", "fsl,imx35-cspi"; ··· 535 485 status = "disabled"; 536 486 }; 537 487 538 - i2c@63fc4000 { /* I2C2 */ 488 + i2c2: i2c@63fc4000 { 539 489 #address-cells = <1>; 540 490 #size-cells = <0>; 541 491 compatible = "fsl,imx53-i2c", "fsl,imx21-i2c"; ··· 544 494 status = "disabled"; 545 495 }; 546 496 547 - i2c@63fc8000 { /* I2C1 */ 497 + i2c1: i2c@63fc8000 { 548 498 #address-cells = <1>; 549 499 #size-cells = <0>; 550 500 compatible = "fsl,imx53-i2c", "fsl,imx21-i2c"; ··· 562 512 status = "disabled"; 563 513 }; 564 514 565 - audmux@63fd0000 { 515 + audmux: audmux@63fd0000 { 566 516 compatible = "fsl,imx53-audmux", "fsl,imx31-audmux"; 567 517 reg = <0x63fd0000 0x4000>; 568 518 status = "disabled"; 569 519 }; 570 520 571 - nand@63fdb000 { 521 + nfc: nand@63fdb000 { 572 522 compatible = "fsl,imx53-nand"; 573 523 reg = <0x63fdb000 0x1000 0xf7ff0000 0x10000>; 574 524 interrupts = <8>; ··· 584 534 status = "disabled"; 585 535 }; 586 536 587 - ethernet@63fec000 { 537 + fec: ethernet@63fec000 { 588 538 compatible = "fsl,imx53-fec", "fsl,imx25-fec"; 589 539 reg = <0x63fec000 0x4000>; 590 540 interrupts = <87>;
+64
arch/arm/boot/dts/imx6q-sabreauto.dts
··· 1 + /* 2 + * Copyright 2012 Freescale Semiconductor, Inc. 3 + * Copyright 2011 Linaro Ltd. 4 + * 5 + * The code contained herein is licensed under the GNU General Public 6 + * License. You may obtain a copy of the GNU General Public License 7 + * Version 2 or later at the following locations: 8 + * 9 + * http://www.opensource.org/licenses/gpl-license.html 10 + * http://www.gnu.org/copyleft/gpl.html 11 + */ 12 + 13 + /dts-v1/; 14 + /include/ "imx6q.dtsi" 15 + 16 + / { 17 + model = "Freescale i.MX6 Quad SABRE Automotive Board"; 18 + compatible = "fsl,imx6q-sabreauto", "fsl,imx6q"; 19 + 20 + memory { 21 + reg = <0x10000000 0x80000000>; 22 + }; 23 + 24 + soc { 25 + aips-bus@02000000 { /* AIPS1 */ 26 + iomuxc@020e0000 { 27 + pinctrl-names = "default"; 28 + pinctrl-0 = <&pinctrl_hog>; 29 + 30 + hog { 31 + pinctrl_hog: hoggrp { 32 + fsl,pins = < 33 + 1376 0x80000000 /* MX6Q_PAD_NANDF_CS2__GPIO_6_15 */ 34 + 13 0x80000000 /* MX6Q_PAD_SD2_DAT2__GPIO_1_13 */ 35 + >; 36 + }; 37 + }; 38 + }; 39 + }; 40 + 41 + aips-bus@02100000 { /* AIPS2 */ 42 + uart4: serial@021f0000 { 43 + pinctrl-names = "default"; 44 + pinctrl-0 = <&pinctrl_uart4_1>; 45 + status = "okay"; 46 + }; 47 + 48 + ethernet@02188000 { 49 + pinctrl-names = "default"; 50 + pinctrl-0 = <&pinctrl_enet_2>; 51 + phy-mode = "rgmii"; 52 + status = "okay"; 53 + }; 54 + 55 + usdhc@02198000 { /* uSDHC3 */ 56 + pinctrl-names = "default"; 57 + pinctrl-0 = <&pinctrl_usdhc3_1>; 58 + cd-gpios = <&gpio6 15 0>; 59 + wp-gpios = <&gpio1 13 0>; 60 + status = "okay"; 61 + }; 62 + }; 63 + }; 64 + };
+18
arch/arm/boot/dts/imx6q-sabresd.dts
··· 38 38 hog { 39 39 pinctrl_hog: hoggrp { 40 40 fsl,pins = < 41 + 1004 0x80000000 /* MX6Q_PAD_GPIO_4__GPIO_1_4 */ 42 + 1012 0x80000000 /* MX6Q_PAD_GPIO_5__GPIO_1_5 */ 41 43 1402 0x80000000 /* MX6Q_PAD_NANDF_D0__GPIO_2_0 */ 42 44 1410 0x80000000 /* MX6Q_PAD_NANDF_D1__GPIO_2_1 */ 43 45 1418 0x80000000 /* MX6Q_PAD_NANDF_D2__GPIO_2_2 */ ··· 73 71 wp-gpios = <&gpio2 1 0>; 74 72 status = "okay"; 75 73 }; 74 + }; 75 + }; 76 + 77 + gpio-keys { 78 + compatible = "gpio-keys"; 79 + 80 + volume-up { 81 + label = "Volume Up"; 82 + gpios = <&gpio1 4 0>; 83 + linux,code = <115>; /* KEY_VOLUMEUP */ 84 + }; 85 + 86 + volume-down { 87 + label = "Volume Down"; 88 + gpios = <&gpio1 5 0>; 89 + linux,code = <114>; /* KEY_VOLUMEDOWN */ 76 90 }; 77 91 }; 78 92 };
+67 -47
arch/arm/boot/dts/imx6q.dtsi
··· 36 36 compatible = "arm,cortex-a9"; 37 37 reg = <0>; 38 38 next-level-cache = <&L2>; 39 + operating-points = < 40 + /* kHz uV */ 41 + 792000 1100000 42 + 396000 950000 43 + 198000 850000 44 + >; 45 + clock-latency = <61036>; /* two CLK32 periods */ 46 + cpu0-supply = <&reg_cpu>; 39 47 }; 40 48 41 49 cpu@1 { ··· 108 100 clocks = <&clks 106>; 109 101 }; 110 102 111 - gpmi-nand@00112000 { 103 + nfc: gpmi-nand@00112000 { 112 104 compatible = "fsl,imx6q-gpmi-nand"; 113 105 #address-cells = <1>; 114 106 #size-cells = <1>; ··· 152 144 reg = <0x02000000 0x40000>; 153 145 ranges; 154 146 155 - spdif@02004000 { 147 + spdif: spdif@02004000 { 156 148 reg = <0x02004000 0x4000>; 157 149 interrupts = <0 52 0x04>; 158 150 }; 159 151 160 - ecspi@02008000 { /* eCSPI1 */ 152 + ecspi1: ecspi@02008000 { 161 153 #address-cells = <1>; 162 154 #size-cells = <0>; 163 155 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; ··· 168 160 status = "disabled"; 169 161 }; 170 162 171 - ecspi@0200c000 { /* eCSPI2 */ 163 + ecspi2: ecspi@0200c000 { 172 164 #address-cells = <1>; 173 165 #size-cells = <0>; 174 166 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; ··· 179 171 status = "disabled"; 180 172 }; 181 173 182 - ecspi@02010000 { /* eCSPI3 */ 174 + ecspi3: ecspi@02010000 { 183 175 #address-cells = <1>; 184 176 #size-cells = <0>; 185 177 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; ··· 190 182 status = "disabled"; 191 183 }; 192 184 193 - ecspi@02014000 { /* eCSPI4 */ 185 + ecspi4: ecspi@02014000 { 194 186 #address-cells = <1>; 195 187 #size-cells = <0>; 196 188 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; ··· 201 193 status = "disabled"; 202 194 }; 203 195 204 - ecspi@02018000 { /* eCSPI5 */ 196 + ecspi5: ecspi@02018000 { 205 197 #address-cells = <1>; 206 198 #size-cells = <0>; 207 199 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; ··· 221 213 status = "disabled"; 222 214 }; 223 215 224 - esai@02024000 { 216 + esai: esai@02024000 { 225 217 reg = <0x02024000 0x4000>; 226 218 interrupts = <0 51 0x04>; 227 219 }; ··· 256 248 status = "disabled"; 257 249 }; 258 250 259 - asrc@02034000 { 251 + asrc: asrc@02034000 { 260 252 reg = <0x02034000 0x4000>; 261 253 interrupts = <0 50 0x04>; 262 254 }; ··· 266 258 }; 267 259 }; 268 260 269 - vpu@02040000 { 261 + vpu: vpu@02040000 { 270 262 reg = <0x02040000 0x3c000>; 271 263 interrupts = <0 3 0x04 0 12 0x04>; 272 264 }; ··· 275 267 reg = <0x0207c000 0x4000>; 276 268 }; 277 269 278 - pwm@02080000 { /* PWM1 */ 270 + pwm1: pwm@02080000 { 279 271 reg = <0x02080000 0x4000>; 280 272 interrupts = <0 83 0x04>; 281 273 }; 282 274 283 - pwm@02084000 { /* PWM2 */ 275 + pwm2: pwm@02084000 { 284 276 reg = <0x02084000 0x4000>; 285 277 interrupts = <0 84 0x04>; 286 278 }; 287 279 288 - pwm@02088000 { /* PWM3 */ 280 + pwm3: pwm@02088000 { 289 281 reg = <0x02088000 0x4000>; 290 282 interrupts = <0 85 0x04>; 291 283 }; 292 284 293 - pwm@0208c000 { /* PWM4 */ 285 + pwm4: pwm@0208c000 { 294 286 reg = <0x0208c000 0x4000>; 295 287 interrupts = <0 86 0x04>; 296 288 }; 297 289 298 - flexcan@02090000 { /* CAN1 */ 290 + can1: flexcan@02090000 { 299 291 reg = <0x02090000 0x4000>; 300 292 interrupts = <0 110 0x04>; 301 293 }; 302 294 303 - flexcan@02094000 { /* CAN2 */ 295 + can2: flexcan@02094000 { 304 296 reg = <0x02094000 0x4000>; 305 297 interrupts = <0 111 0x04>; 306 298 }; 307 299 308 - gpt@02098000 { 300 + gpt: gpt@02098000 { 309 301 compatible = "fsl,imx6q-gpt"; 310 302 reg = <0x02098000 0x4000>; 311 303 interrupts = <0 55 0x04>; ··· 381 373 #interrupt-cells = <2>; 382 374 }; 383 375 384 - kpp@020b8000 { 376 + kpp: kpp@020b8000 { 385 377 reg = <0x020b8000 0x4000>; 386 378 interrupts = <0 82 0x04>; 387 379 }; 388 380 389 - wdog@020bc000 { /* WDOG1 */ 381 + wdog1: wdog@020bc000 { 390 382 compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt"; 391 383 reg = <0x020bc000 0x4000>; 392 384 interrupts = <0 80 0x04>; 393 385 clocks = <&clks 0>; 394 386 }; 395 387 396 - wdog@020c0000 { /* WDOG2 */ 388 + wdog2: wdog@020c0000 { 397 389 compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt"; 398 390 reg = <0x020c0000 0x4000>; 399 391 interrupts = <0 81 0x04>; ··· 455 447 anatop-max-voltage = <2750000>; 456 448 }; 457 449 458 - regulator-vddcore@140 { 450 + reg_cpu: regulator-vddcore@140 { 459 451 compatible = "fsl,anatop-regulator"; 460 452 regulator-name = "cpu"; 461 453 regulator-min-microvolt = <725000>; ··· 513 505 }; 514 506 515 507 snvs@020cc000 { 516 - reg = <0x020cc000 0x4000>; 517 - interrupts = <0 19 0x04 0 20 0x04>; 508 + compatible = "fsl,sec-v4.0-mon", "simple-bus"; 509 + #address-cells = <1>; 510 + #size-cells = <1>; 511 + ranges = <0 0x020cc000 0x4000>; 512 + 513 + snvs-rtc-lp@34 { 514 + compatible = "fsl,sec-v4.0-mon-rtc-lp"; 515 + reg = <0x34 0x58>; 516 + interrupts = <0 19 0x04 0 20 0x04>; 517 + }; 518 518 }; 519 519 520 - epit@020d0000 { /* EPIT1 */ 520 + epit1: epit@020d0000 { /* EPIT1 */ 521 521 reg = <0x020d0000 0x4000>; 522 522 interrupts = <0 56 0x04>; 523 523 }; 524 524 525 - epit@020d4000 { /* EPIT2 */ 525 + epit2: epit@020d4000 { /* EPIT2 */ 526 526 reg = <0x020d4000 0x4000>; 527 527 interrupts = <0 57 0x04>; 528 528 }; 529 529 530 - src@020d8000 { 530 + src: src@020d8000 { 531 531 compatible = "fsl,imx6q-src"; 532 532 reg = <0x020d8000 0x4000>; 533 533 interrupts = <0 91 0x04 0 96 0x04>; 534 534 }; 535 535 536 - gpc@020dc000 { 536 + gpc: gpc@020dc000 { 537 537 compatible = "fsl,imx6q-gpc"; 538 538 reg = <0x020dc000 0x4000>; 539 539 interrupts = <0 89 0x04 0 90 0x04>; ··· 552 536 reg = <0x020e0000 0x38>; 553 537 }; 554 538 555 - iomuxc@020e0000 { 539 + iomuxc: iomuxc@020e0000 { 556 540 compatible = "fsl,imx6q-iomuxc"; 557 541 reg = <0x020e0000 0x4000>; 558 542 ··· 764 748 }; 765 749 }; 766 750 767 - dcic@020e4000 { /* DCIC1 */ 751 + dcic1: dcic@020e4000 { 768 752 reg = <0x020e4000 0x4000>; 769 753 interrupts = <0 124 0x04>; 770 754 }; 771 755 772 - dcic@020e8000 { /* DCIC2 */ 756 + dcic2: dcic@020e8000 { 773 757 reg = <0x020e8000 0x4000>; 774 758 interrupts = <0 125 0x04>; 775 759 }; 776 760 777 - sdma@020ec000 { 761 + sdma: sdma@020ec000 { 778 762 compatible = "fsl,imx6q-sdma", "fsl,imx35-sdma"; 779 763 reg = <0x020ec000 0x4000>; 780 764 interrupts = <0 2 0x04>; ··· 800 784 reg = <0x0217c000 0x4000>; 801 785 }; 802 786 803 - usb@02184000 { /* USB OTG */ 787 + usbotg: usb@02184000 { 804 788 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 805 789 reg = <0x02184000 0x200>; 806 790 interrupts = <0 43 0x04>; ··· 810 794 status = "disabled"; 811 795 }; 812 796 813 - usb@02184200 { /* USB1 */ 797 + usbh1: usb@02184200 { 814 798 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 815 799 reg = <0x02184200 0x200>; 816 800 interrupts = <0 40 0x04>; ··· 820 804 status = "disabled"; 821 805 }; 822 806 823 - usb@02184400 { /* USB2 */ 807 + usbh2: usb@02184400 { 824 808 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 825 809 reg = <0x02184400 0x200>; 826 810 interrupts = <0 41 0x04>; ··· 829 813 status = "disabled"; 830 814 }; 831 815 832 - usb@02184600 { /* USB3 */ 816 + usbh3: usb@02184600 { 833 817 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 834 818 reg = <0x02184600 0x200>; 835 819 interrupts = <0 42 0x04>; ··· 838 822 status = "disabled"; 839 823 }; 840 824 841 - usbmisc: usbmisc@02184800 { 825 + usbmisc: usbmisc: usbmisc@02184800 { 842 826 #index-cells = <1>; 843 827 compatible = "fsl,imx6q-usbmisc"; 844 828 reg = <0x02184800 0x200>; 845 829 clocks = <&clks 162>; 846 830 }; 847 831 848 - ethernet@02188000 { 832 + fec: ethernet@02188000 { 849 833 compatible = "fsl,imx6q-fec"; 850 834 reg = <0x02188000 0x4000>; 851 835 interrupts = <0 118 0x04 0 119 0x04>; ··· 859 843 interrupts = <0 53 0x04 0 117 0x04 0 126 0x04>; 860 844 }; 861 845 862 - usdhc@02190000 { /* uSDHC1 */ 846 + usdhc1: usdhc@02190000 { 863 847 compatible = "fsl,imx6q-usdhc"; 864 848 reg = <0x02190000 0x4000>; 865 849 interrupts = <0 22 0x04>; 866 850 clocks = <&clks 163>, <&clks 163>, <&clks 163>; 867 851 clock-names = "ipg", "ahb", "per"; 852 + bus-width = <4>; 868 853 status = "disabled"; 869 854 }; 870 855 871 - usdhc@02194000 { /* uSDHC2 */ 856 + usdhc2: usdhc@02194000 { 872 857 compatible = "fsl,imx6q-usdhc"; 873 858 reg = <0x02194000 0x4000>; 874 859 interrupts = <0 23 0x04>; 875 860 clocks = <&clks 164>, <&clks 164>, <&clks 164>; 876 861 clock-names = "ipg", "ahb", "per"; 862 + bus-width = <4>; 877 863 status = "disabled"; 878 864 }; 879 865 880 - usdhc@02198000 { /* uSDHC3 */ 866 + usdhc3: usdhc@02198000 { 881 867 compatible = "fsl,imx6q-usdhc"; 882 868 reg = <0x02198000 0x4000>; 883 869 interrupts = <0 24 0x04>; 884 870 clocks = <&clks 165>, <&clks 165>, <&clks 165>; 885 871 clock-names = "ipg", "ahb", "per"; 872 + bus-width = <4>; 886 873 status = "disabled"; 887 874 }; 888 875 889 - usdhc@0219c000 { /* uSDHC4 */ 876 + usdhc4: usdhc@0219c000 { 890 877 compatible = "fsl,imx6q-usdhc"; 891 878 reg = <0x0219c000 0x4000>; 892 879 interrupts = <0 25 0x04>; 893 880 clocks = <&clks 166>, <&clks 166>, <&clks 166>; 894 881 clock-names = "ipg", "ahb", "per"; 882 + bus-width = <4>; 895 883 status = "disabled"; 896 884 }; 897 885 898 - i2c@021a0000 { /* I2C1 */ 886 + i2c1: i2c@021a0000 { 899 887 #address-cells = <1>; 900 888 #size-cells = <0>; 901 889 compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c"; ··· 909 889 status = "disabled"; 910 890 }; 911 891 912 - i2c@021a4000 { /* I2C2 */ 892 + i2c2: i2c@021a4000 { 913 893 #address-cells = <1>; 914 894 #size-cells = <0>; 915 895 compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c"; ··· 919 899 status = "disabled"; 920 900 }; 921 901 922 - i2c@021a8000 { /* I2C3 */ 902 + i2c3: i2c@021a8000 { 923 903 #address-cells = <1>; 924 904 #size-cells = <0>; 925 905 compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c"; ··· 933 913 reg = <0x021ac000 0x4000>; 934 914 }; 935 915 936 - mmdc@021b0000 { /* MMDC0 */ 916 + mmdc0: mmdc@021b0000 { /* MMDC0 */ 937 917 compatible = "fsl,imx6q-mmdc"; 938 918 reg = <0x021b0000 0x4000>; 939 919 }; 940 920 941 - mmdc@021b4000 { /* MMDC1 */ 921 + mmdc1: mmdc@021b4000 { /* MMDC1 */ 942 922 reg = <0x021b4000 0x4000>; 943 923 }; 944 924 ··· 966 946 interrupts = <0 109 0x04>; 967 947 }; 968 948 969 - audmux@021d8000 { 949 + audmux: audmux@021d8000 { 970 950 compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux"; 971 951 reg = <0x021d8000 0x4000>; 972 952 status = "disabled";
+16 -4
arch/arm/include/debug/imx.S
··· 10 10 * published by the Free Software Foundation. 11 11 * 12 12 */ 13 + #define IMX6Q_UART1_BASE_ADDR 0x02020000 14 + #define IMX6Q_UART2_BASE_ADDR 0x021e8000 15 + #define IMX6Q_UART3_BASE_ADDR 0x021ec000 16 + #define IMX6Q_UART4_BASE_ADDR 0x021f0000 17 + #define IMX6Q_UART5_BASE_ADDR 0x021f4000 18 + 19 + /* 20 + * IMX6Q_UART_BASE_ADDR is put in the middle to force the expansion 21 + * of IMX6Q_UART##n##_BASE_ADDR. 22 + */ 23 + #define IMX6Q_UART_BASE_ADDR(n) IMX6Q_UART##n##_BASE_ADDR 24 + #define IMX6Q_UART_BASE(n) IMX6Q_UART_BASE_ADDR(n) 25 + #define IMX6Q_DEBUG_UART_BASE IMX6Q_UART_BASE(CONFIG_DEBUG_IMX6Q_UART_PORT) 26 + 13 27 #ifdef CONFIG_DEBUG_IMX1_UART 14 28 #define UART_PADDR 0x00206000 15 29 #elif defined (CONFIG_DEBUG_IMX25_UART) ··· 36 22 #define UART_PADDR 0x73fbc000 37 23 #elif defined (CONFIG_DEBUG_IMX50_IMX53_UART) 38 24 #define UART_PADDR 0x53fbc000 39 - #elif defined (CONFIG_DEBUG_IMX6Q_UART2) 40 - #define UART_PADDR 0x021e8000 41 - #elif defined (CONFIG_DEBUG_IMX6Q_UART4) 42 - #define UART_PADDR 0x021f0000 25 + #elif defined (CONFIG_DEBUG_IMX6Q_UART) 26 + #define UART_PADDR IMX6Q_DEBUG_UART_BASE 43 27 #endif 44 28 45 29 /*
+11
arch/arm/mach-imx/Kconfig
··· 836 836 837 837 config SOC_IMX6Q 838 838 bool "i.MX6 Quad support" 839 + select ARCH_HAS_CPUFREQ 840 + select ARCH_HAS_OPP 839 841 select ARM_CPU_SUSPEND if PM 842 + select ARM_ERRATA_743622 843 + select ARM_ERRATA_751472 844 + select ARM_ERRATA_754322 845 + select ARM_ERRATA_764369 if SMP 846 + select ARM_ERRATA_775420 840 847 select ARM_GIC 841 848 select COMMON_CLK 842 849 select CPU_V7 ··· 855 848 select MFD_SYSCON 856 849 select PINCTRL 857 850 select PINCTRL_IMX6Q 851 + select PL310_ERRATA_588369 if CACHE_PL310 852 + select PL310_ERRATA_727915 if CACHE_PL310 853 + select PL310_ERRATA_769419 if CACHE_PL310 854 + select PM_OPP if PM 858 855 859 856 help 860 857 This enables support for Freescale i.MX6 Quad processor.
+1
arch/arm/mach-imx/clk-imx6q.c
··· 406 406 clk_register_clkdev(clk[cko1_sel], "cko1_sel", NULL); 407 407 clk_register_clkdev(clk[ahb], "ahb", NULL); 408 408 clk_register_clkdev(clk[cko1], "cko1", NULL); 409 + clk_register_clkdev(clk[arm], NULL, "cpu0"); 409 410 410 411 /* 411 412 * The gpmi needs 100MHz frequency in the EDO/Sync mode,
+18 -10
arch/arm/mach-imx/lluart.c
··· 17 17 18 18 #include "hardware.h" 19 19 20 + #define IMX6Q_UART1_BASE_ADDR 0x02020000 21 + #define IMX6Q_UART2_BASE_ADDR 0x021e8000 22 + #define IMX6Q_UART3_BASE_ADDR 0x021ec000 23 + #define IMX6Q_UART4_BASE_ADDR 0x021f0000 24 + #define IMX6Q_UART5_BASE_ADDR 0x021f4000 25 + 26 + /* 27 + * IMX6Q_UART_BASE_ADDR is put in the middle to force the expansion 28 + * of IMX6Q_UART##n##_BASE_ADDR. 29 + */ 30 + #define IMX6Q_UART_BASE_ADDR(n) IMX6Q_UART##n##_BASE_ADDR 31 + #define IMX6Q_UART_BASE(n) IMX6Q_UART_BASE_ADDR(n) 32 + #define IMX6Q_DEBUG_UART_BASE IMX6Q_UART_BASE(CONFIG_DEBUG_IMX6Q_UART_PORT) 33 + 20 34 static struct map_desc imx_lluart_desc = { 21 - #ifdef CONFIG_DEBUG_IMX6Q_UART2 22 - .virtual = MX6Q_IO_P2V(MX6Q_UART2_BASE_ADDR), 23 - .pfn = __phys_to_pfn(MX6Q_UART2_BASE_ADDR), 24 - .length = MX6Q_UART2_SIZE, 25 - .type = MT_DEVICE, 26 - #endif 27 - #ifdef CONFIG_DEBUG_IMX6Q_UART4 28 - .virtual = MX6Q_IO_P2V(MX6Q_UART4_BASE_ADDR), 29 - .pfn = __phys_to_pfn(MX6Q_UART4_BASE_ADDR), 30 - .length = MX6Q_UART4_SIZE, 35 + #ifdef CONFIG_DEBUG_IMX6Q_UART 36 + .virtual = IMX_IO_P2V(IMX6Q_DEBUG_UART_BASE), 37 + .pfn = __phys_to_pfn(IMX6Q_DEBUG_UART_BASE), 38 + .length = 0x4000, 31 39 .type = MT_DEVICE, 32 40 #endif 33 41 };
+35
arch/arm/mach-imx/mach-imx6q.c
··· 38 38 #include "cpuidle.h" 39 39 #include "hardware.h" 40 40 41 + #define IMX6Q_ANALOG_DIGPROG 0x260 42 + 43 + static int imx6q_revision(void) 44 + { 45 + struct device_node *np; 46 + void __iomem *base; 47 + static u32 rev; 48 + 49 + if (!rev) { 50 + np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-anatop"); 51 + if (!np) 52 + return IMX_CHIP_REVISION_UNKNOWN; 53 + base = of_iomap(np, 0); 54 + if (!base) { 55 + of_node_put(np); 56 + return IMX_CHIP_REVISION_UNKNOWN; 57 + } 58 + rev = readl_relaxed(base + IMX6Q_ANALOG_DIGPROG); 59 + iounmap(base); 60 + of_node_put(np); 61 + } 62 + 63 + switch (rev & 0xff) { 64 + case 0: 65 + return IMX_CHIP_REVISION_1_0; 66 + case 1: 67 + return IMX_CHIP_REVISION_1_1; 68 + case 2: 69 + return IMX_CHIP_REVISION_1_2; 70 + default: 71 + return IMX_CHIP_REVISION_UNKNOWN; 72 + } 73 + } 74 + 41 75 void imx6q_restart(char mode, const char *cmd) 42 76 { 43 77 struct device_node *np; ··· 226 192 { 227 193 mx6q_clocks_init(); 228 194 twd_local_timer_of_register(); 195 + imx_print_silicon_rev("i.MX6Q", imx6q_revision()); 229 196 } 230 197 231 198 static struct sys_timer imx6q_timer = {
-4
arch/arm/mach-imx/mx6q.h
··· 27 27 #define MX6Q_CCM_SIZE 0x4000 28 28 #define MX6Q_ANATOP_BASE_ADDR 0x020c8000 29 29 #define MX6Q_ANATOP_SIZE 0x1000 30 - #define MX6Q_UART2_BASE_ADDR 0x021e8000 31 - #define MX6Q_UART2_SIZE 0x4000 32 - #define MX6Q_UART4_BASE_ADDR 0x021f0000 33 - #define MX6Q_UART4_SIZE 0x4000 34 30 35 31 #endif /* __MACH_MX6Q_H__ */