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

Merge tag 'dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC device tree conversions from Arnd Bergmann:
"These are device tree conversions for a number of platforms, with the
intention of turning code from board files into device tree
descriptions. Notable changes are:

- davinci bindings for pinctrl, MTD, RTC, watchdog and i2c

- nomadik bindings for all devices, removing the board files

- bcm2835 bindings for mmc and i2c

- tegra bindings for hdmi, keyboard, audio, as well as some updates

- at91 bindings for hardware ecc and for devices on RM9200

- mxs bindings for cfa100xx

- sunxi support for Miniand Hackberry board"

* tag 'dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (72 commits)
Revert "sunxi: a10-cubieboard: Add user LEDs to the device tree"
Revert "sunxi: a13-olinuxino: Add user LED to the device tree"
clk: tegra: initialise parent of uart clocks
ARM: tegra: remove clock-frequency properties from serial nodes
clk: tegra: fix driver to match DT binding
clk: tegra: local arrays should be static
clk: tegra: Add missing spinlock for hclk and pclk
clk: tegra: Implement locking for super clock
clk: tegra: fix wrong clock index between se to sata_cold
sunxi: a13-olinuxino: Add user LED to the device tree
ARM: davinci: da850 DT: add support for machine reboot
ARM: davinci: da850: add wdt DT node
ARM: davinci: da850: add DT node for I2C0
ARM: at91: at91sam9n12: add DT parameters to enable PMECC
ARM: at91: at91sam9x5: add DT parameters to enable PMECC
ARM: at91: add EMAC bindings to RM9200 DT
ARM: at91: add SSC bindings to RM9200 DT
ARM: at91: add MMC bindings to RM9200 DT
ARM: at91: Animeo IP: enable watchdog support
ARM: nomadik: fix OF compilation regression
...

+2770 -804
+27
Documentation/devicetree/bindings/arm/ste-nomadik.txt
··· 1 + ST-Ericsson Nomadik Device Tree Bindings 2 + 3 + For various board the "board" node may contain specific properties 4 + that pertain to this particular board, such as board-specific GPIOs. 5 + 6 + Boards with the Nomadik SoC include: 7 + 8 + S8815 "MiniKit" manufactured by Calao Systems: 9 + 10 + Required root node property: 11 + 12 + compatible="calaosystems,usb-s8815"; 13 + 14 + Required node: usb-s8815 15 + 16 + Example: 17 + 18 + usb-s8815 { 19 + ethernet-gpio { 20 + gpios = <&gpio3 19 0x1>; 21 + interrupts = <19 0x1>; 22 + interrupt-parent = <&gpio3>; 23 + }; 24 + mmcsd-gpio { 25 + gpios = <&gpio3 16 0x1>; 26 + }; 27 + };
+26 -6
Documentation/devicetree/bindings/arm/tegra.txt
··· 1 1 NVIDIA Tegra device tree bindings 2 2 ------------------------------------------- 3 3 4 - Boards with the tegra20 SoC shall have the following properties: 4 + SoCs 5 + ------------------------------------------- 5 6 6 - Required root node property: 7 + Each device tree must specify which Tegra SoC it uses, using one of the 8 + following compatible values: 7 9 8 - compatible = "nvidia,tegra20"; 10 + nvidia,tegra20 11 + nvidia,tegra30 9 12 10 - Boards with the tegra30 SoC shall have the following properties: 13 + Boards 14 + ------------------------------------------- 11 15 12 - Required root node property: 16 + Each device tree must specify which one or more of the following 17 + board-specific compatible values: 13 18 14 - compatible = "nvidia,tegra30"; 19 + ad,medcom-wide 20 + ad,plutux 21 + ad,tamonten 22 + ad,tec 23 + compal,paz00 24 + compulab,trimslice 25 + nvidia,beaver 26 + nvidia,cardhu 27 + nvidia,cardhu-a02 28 + nvidia,cardhu-a04 29 + nvidia,harmony 30 + nvidia,seaboard 31 + nvidia,ventana 32 + nvidia,whistler 33 + toradex,colibri_t20-512 34 + toradex,iris
+1 -1
Documentation/devicetree/bindings/mtd/fsmc-nand.txt
··· 1 1 * FSMC NAND 2 2 3 3 Required properties: 4 - - compatible : "st,spear600-fsmc-nand" 4 + - compatible : "st,spear600-fsmc-nand", "stericsson,fsmc-nand" 5 5 - reg : Address range of the mtd chip 6 6 - reg-names: Should contain the reg names "fsmc_regs", "nand_data", "nand_addr" and "nand_cmd" 7 7
+2
arch/arm/Kconfig
··· 896 896 select ARCH_REQUIRE_GPIOLIB 897 897 select ARM_AMBA 898 898 select ARM_VIC 899 + select CLKSRC_NOMADIK_MTU 899 900 select COMMON_CLK 900 901 select CPU_ARM926T 901 902 select GENERIC_CLOCKEVENTS 902 903 select MIGHT_HAVE_CACHE_L2X0 904 + select USE_OF 903 905 select PINCTRL 904 906 select PINCTRL_STN8815 905 907 select SPARSE_IRQ
+5
arch/arm/boot/dts/Makefile
··· 96 96 imx28-apf28dev.dtb \ 97 97 imx28-apx4devkit.dtb \ 98 98 imx28-cfa10036.dtb \ 99 + imx28-cfa10037.dtb \ 99 100 imx28-cfa10049.dtb \ 100 101 imx28-evk.dtb \ 101 102 imx28-m28evk.dtb \ 102 103 imx28-sps1.dtb \ 103 104 imx28-tx28.dtb 105 + dtb-$(CONFIG_ARCH_NOMADIK) += ste-nomadik-s8815.dtb 104 106 dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \ 105 107 omap3-beagle.dtb \ 106 108 omap3-beagle-xm.dtb \ ··· 137 135 spear320-hmi.dtb 138 136 dtb-$(CONFIG_ARCH_SPEAR6XX)+= spear600-evb.dtb 139 137 dtb-$(CONFIG_ARCH_SUNXI) += sun4i-a10-cubieboard.dtb \ 138 + sun4i-a10-hackberry.dtb \ 140 139 sun5i-a13-olinuxino.dtb 141 140 dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \ 141 + tegra20-iris-512.dtb \ 142 142 tegra20-medcom-wide.dtb \ 143 143 tegra20-paz00.dtb \ 144 144 tegra20-plutux.dtb \ ··· 149 145 tegra20-trimslice.dtb \ 150 146 tegra20-ventana.dtb \ 151 147 tegra20-whistler.dtb \ 148 + tegra30-beaver.dtb \ 152 149 tegra30-cardhu-a02.dtb \ 153 150 tegra30-cardhu-a04.dtb \ 154 151 tegra114-dalmore.dtb \
+4
arch/arm/boot/dts/animeo_ip.dts
··· 78 78 bus-width = <4>; 79 79 }; 80 80 }; 81 + 82 + watchdog@fffffd40 { 83 + status = "okay"; 84 + }; 81 85 }; 82 86 83 87 nand0: nand@40000000 {
+158
arch/arm/boot/dts/at91rm9200.dtsi
··· 29 29 gpio3 = &pioD; 30 30 tcb0 = &tcb0; 31 31 tcb1 = &tcb1; 32 + ssc0 = &ssc0; 33 + ssc1 = &ssc1; 34 + ssc2 = &ssc2; 32 35 }; 33 36 cpus { 34 37 cpu@0 { ··· 89 86 compatible = "atmel,at91rm9200-tcb"; 90 87 reg = <0xfffa4000 0x100>; 91 88 interrupts = <20 4 0 21 4 0 22 4 0>; 89 + }; 90 + 91 + mmc0: mmc@fffb4000 { 92 + compatible = "atmel,hsmci"; 93 + reg = <0xfffb4000 0x4000>; 94 + interrupts = <10 4 0>; 95 + #address-cells = <1>; 96 + #size-cells = <0>; 97 + status = "disabled"; 98 + }; 99 + 100 + ssc0: ssc@fffd0000 { 101 + compatible = "atmel,at91rm9200-ssc"; 102 + reg = <0xfffd0000 0x4000>; 103 + interrupts = <14 4 5>; 104 + pinctrl-names = "default"; 105 + pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>; 106 + status = "disable"; 107 + }; 108 + 109 + ssc1: ssc@fffd4000 { 110 + compatible = "atmel,at91rm9200-ssc"; 111 + reg = <0xfffd4000 0x4000>; 112 + interrupts = <15 4 5>; 113 + pinctrl-names = "default"; 114 + pinctrl-0 = <&pinctrl_ssc1_tx &pinctrl_ssc1_rx>; 115 + status = "disable"; 116 + }; 117 + 118 + ssc2: ssc@fffd8000 { 119 + compatible = "atmel,at91rm9200-ssc"; 120 + reg = <0xfffd8000 0x4000>; 121 + interrupts = <16 4 5>; 122 + pinctrl-names = "default"; 123 + pinctrl-0 = <&pinctrl_ssc2_tx &pinctrl_ssc2_rx>; 124 + status = "disable"; 125 + }; 126 + 127 + macb0: ethernet@fffbc000 { 128 + compatible = "cdns,at91rm9200-emac", "cdns,emac"; 129 + reg = <0xfffbc000 0x4000>; 130 + interrupts = <24 4 3>; 131 + phy-mode = "rmii"; 132 + pinctrl-names = "default"; 133 + pinctrl-0 = <&pinctrl_macb_rmii>; 134 + status = "disabled"; 92 135 }; 93 136 94 137 pinctrl@fffff400 { ··· 253 204 atmel,pins = 254 205 <2 2 0x0 0x1 /* PC2 gpio RDY pin pull_up */ 255 206 1 1 0x0 0x1>; /* PB1 gpio CD pin pull_up */ 207 + }; 208 + }; 209 + 210 + macb { 211 + pinctrl_macb_rmii: macb_rmii-0 { 212 + atmel,pins = 213 + <0 7 0x1 0x0 /* PA7 periph A */ 214 + 0 8 0x1 0x0 /* PA8 periph A */ 215 + 0 9 0x1 0x0 /* PA9 periph A */ 216 + 0 10 0x1 0x0 /* PA10 periph A */ 217 + 0 11 0x1 0x0 /* PA11 periph A */ 218 + 0 12 0x1 0x0 /* PA12 periph A */ 219 + 0 13 0x1 0x0 /* PA13 periph A */ 220 + 0 14 0x1 0x0 /* PA14 periph A */ 221 + 0 15 0x1 0x0 /* PA15 periph A */ 222 + 0 16 0x1 0x0>; /* PA16 periph A */ 223 + }; 224 + 225 + pinctrl_macb_rmii_mii: macb_rmii_mii-0 { 226 + atmel,pins = 227 + <1 12 0x2 0x0 /* PB12 periph B */ 228 + 1 13 0x2 0x0 /* PB13 periph B */ 229 + 1 14 0x2 0x0 /* PB14 periph B */ 230 + 1 15 0x2 0x0 /* PB15 periph B */ 231 + 1 16 0x2 0x0 /* PB16 periph B */ 232 + 1 17 0x2 0x0 /* PB17 periph B */ 233 + 1 18 0x2 0x0 /* PB18 periph B */ 234 + 1 19 0x2 0x0>; /* PB19 periph B */ 235 + }; 236 + }; 237 + 238 + mmc0 { 239 + pinctrl_mmc0_clk: mmc0_clk-0 { 240 + atmel,pins = 241 + <0 27 0x1 0x0>; /* PA27 periph A */ 242 + }; 243 + 244 + pinctrl_mmc0_slot0_cmd_dat0: mmc0_slot0_cmd_dat0-0 { 245 + atmel,pins = 246 + <0 28 0x1 0x1 /* PA28 periph A with pullup */ 247 + 0 29 0x1 0x1>; /* PA29 periph A with pullup */ 248 + }; 249 + 250 + pinctrl_mmc0_slot0_dat1_3: mmc0_slot0_dat1_3-0 { 251 + atmel,pins = 252 + <1 3 0x2 0x1 /* PB3 periph B with pullup */ 253 + 1 4 0x2 0x1 /* PB4 periph B with pullup */ 254 + 1 5 0x2 0x1>; /* PB5 periph B with pullup */ 255 + }; 256 + 257 + pinctrl_mmc0_slot1_cmd_dat0: mmc0_slot1_cmd_dat0-0 { 258 + atmel,pins = 259 + <0 8 0x2 0x1 /* PA8 periph B with pullup */ 260 + 0 9 0x2 0x1>; /* PA9 periph B with pullup */ 261 + }; 262 + 263 + pinctrl_mmc0_slot1_dat1_3: mmc0_slot1_dat1_3-0 { 264 + atmel,pins = 265 + <0 10 0x2 0x1 /* PA10 periph B with pullup */ 266 + 0 11 0x2 0x1 /* PA11 periph B with pullup */ 267 + 0 12 0x2 0x1>; /* PA12 periph B with pullup */ 268 + }; 269 + }; 270 + 271 + ssc0 { 272 + pinctrl_ssc0_tx: ssc0_tx-0 { 273 + atmel,pins = 274 + <1 0 0x1 0x0 /* PB0 periph A */ 275 + 1 1 0x1 0x0 /* PB1 periph A */ 276 + 1 2 0x1 0x0>; /* PB2 periph A */ 277 + }; 278 + 279 + pinctrl_ssc0_rx: ssc0_rx-0 { 280 + atmel,pins = 281 + <1 3 0x1 0x0 /* PB3 periph A */ 282 + 1 4 0x1 0x0 /* PB4 periph A */ 283 + 1 5 0x1 0x0>; /* PB5 periph A */ 284 + }; 285 + }; 286 + 287 + ssc1 { 288 + pinctrl_ssc1_tx: ssc1_tx-0 { 289 + atmel,pins = 290 + <1 6 0x1 0x0 /* PB6 periph A */ 291 + 1 7 0x1 0x0 /* PB7 periph A */ 292 + 1 8 0x1 0x0>; /* PB8 periph A */ 293 + }; 294 + 295 + pinctrl_ssc1_rx: ssc1_rx-0 { 296 + atmel,pins = 297 + <1 9 0x1 0x0 /* PB9 periph A */ 298 + 1 10 0x1 0x0 /* PB10 periph A */ 299 + 1 11 0x1 0x0>; /* PB11 periph A */ 300 + }; 301 + }; 302 + 303 + ssc2 { 304 + pinctrl_ssc2_tx: ssc2_tx-0 { 305 + atmel,pins = 306 + <1 12 0x1 0x0 /* PB12 periph A */ 307 + 1 13 0x1 0x0 /* PB13 periph A */ 308 + 1 14 0x1 0x0>; /* PB14 periph A */ 309 + }; 310 + 311 + pinctrl_ssc2_rx: ssc2_rx-0 { 312 + atmel,pins = 313 + <1 15 0x1 0x0 /* PB15 periph A */ 314 + 1 16 0x1 0x0 /* PB16 periph A */ 315 + 1 17 0x1 0x0>; /* PB17 periph A */ 256 316 }; 257 317 }; 258 318
+5
arch/arm/boot/dts/at91rm9200ek.dts
··· 44 44 status = "okay"; 45 45 }; 46 46 47 + macb0: ethernet@fffbc000 { 48 + phy-mode = "rmii"; 49 + status = "okay"; 50 + }; 51 + 47 52 usb1: gadget@fffb0000 { 48 53 atmel,vbus-gpio = <&pioD 4 0>; 49 54 status = "okay";
+2 -1
arch/arm/boot/dts/at91sam9n12.dtsi
··· 382 382 reg = < 0x40000000 0x10000000 383 383 0xffffe000 0x00000600 384 384 0xffffe600 0x00000200 385 - 0x00100000 0x00100000 385 + 0x00108000 0x00018000 386 386 >; 387 + atmel,pmecc-lookup-table-offset = <0x0 0x8000>; 387 388 atmel,nand-addr-offset = <21>; 388 389 atmel,nand-cmd-offset = <22>; 389 390 pinctrl-names = "default";
+4 -1
arch/arm/boot/dts/at91sam9n12ek.dts
··· 71 71 72 72 nand0: nand@40000000 { 73 73 nand-bus-width = <8>; 74 - nand-ecc-mode = "soft"; 74 + nand-ecc-mode = "hw"; 75 + atmel,has-pmecc; 76 + atmel,pmecc-cap = <2>; 77 + atmel,pmecc-sector-size = <512>; 75 78 nand-on-flash-bbt; 76 79 status = "okay"; 77 80 };
+4
arch/arm/boot/dts/at91sam9x5.dtsi
··· 512 512 #address-cells = <1>; 513 513 #size-cells = <1>; 514 514 reg = <0x40000000 0x10000000 515 + 0xffffe000 0x600 /* PMECC Registers */ 516 + 0xffffe600 0x200 /* PMECC Error Location Registers */ 517 + 0x00108000 0x18000 /* PMECC looup table in ROM code */ 515 518 >; 519 + atmel,pmecc-lookup-table-offset = <0x0 0x8000>; 516 520 atmel,nand-addr-offset = <21>; 517 521 atmel,nand-cmd-offset = <22>; 518 522 pinctrl-names = "default";
+4 -1
arch/arm/boot/dts/at91sam9x5cm.dtsi
··· 26 26 ahb { 27 27 nand0: nand@40000000 { 28 28 nand-bus-width = <8>; 29 - nand-ecc-mode = "soft"; 29 + nand-ecc-mode = "hw"; 30 + atmel,has-pmecc; /* Enable PMECC */ 31 + atmel,pmecc-cap = <2>; 32 + atmel,pmecc-sector-size = <512>; 30 33 nand-on-flash-bbt; 31 34 status = "okay"; 32 35
+15 -1
arch/arm/boot/dts/bcm2835-rpi-b.dts
··· 1 1 /dts-v1/; 2 - /memreserve/ 0x0c000000 0x04000000; 3 2 /include/ "bcm2835.dtsi" 4 3 5 4 / { ··· 23 24 brcm,pins = <48 49 50 51 52 53>; 24 25 brcm,function = <7>; /* alt3 */ 25 26 }; 27 + }; 28 + 29 + &i2c0 { 30 + status = "okay"; 31 + clock-frequency = <100000>; 32 + }; 33 + 34 + &i2c1 { 35 + status = "okay"; 36 + clock-frequency = <100000>; 37 + }; 38 + 39 + &sdhci { 40 + status = "okay"; 41 + bus-width = <4>; 26 42 };
+44
arch/arm/boot/dts/bcm2835.dtsi
··· 63 63 interrupt-controller; 64 64 #interrupt-cells = <2>; 65 65 }; 66 + 67 + i2c0: i2c@20205000 { 68 + compatible = "brcm,bcm2835-i2c"; 69 + reg = <0x7e205000 0x1000>; 70 + interrupts = <2 21>; 71 + clocks = <&clk_i2c>; 72 + status = "disabled"; 73 + }; 74 + 75 + i2c1: i2c@20804000 { 76 + compatible = "brcm,bcm2835-i2c"; 77 + reg = <0x7e804000 0x1000>; 78 + interrupts = <2 21>; 79 + clocks = <&clk_i2c>; 80 + status = "disabled"; 81 + }; 82 + 83 + sdhci: sdhci { 84 + compatible = "brcm,bcm2835-sdhci"; 85 + reg = <0x7e300000 0x100>; 86 + interrupts = <2 30>; 87 + clocks = <&clk_mmc>; 88 + status = "disabled"; 89 + }; 90 + }; 91 + 92 + clocks { 93 + compatible = "simple-bus"; 94 + #address-cells = <1>; 95 + #size-cells = <0>; 96 + 97 + clk_mmc: mmc { 98 + compatible = "fixed-clock"; 99 + reg = <0>; 100 + #clock-cells = <0>; 101 + clock-frequency = <100000000>; 102 + }; 103 + 104 + clk_i2c: i2c { 105 + compatible = "fixed-clock"; 106 + reg = <1>; 107 + #clock-cells = <0>; 108 + clock-frequency = <150000000>; 109 + }; 66 110 }; 67 111 };
+20
arch/arm/boot/dts/da850-evm.dts
··· 15 15 model = "DA850/AM1808/OMAP-L138 EVM"; 16 16 17 17 soc { 18 + pmx_core: pinmux@1c14120 { 19 + status = "okay"; 20 + }; 18 21 serial0: serial@1c42000 { 19 22 status = "okay"; 20 23 }; ··· 27 24 serial2: serial@1d0d000 { 28 25 status = "okay"; 29 26 }; 27 + rtc0: rtc@1c23000 { 28 + status = "okay"; 29 + }; 30 + i2c0: i2c@1c22000 { 31 + status = "okay"; 32 + clock-frequency = <100000>; 33 + pinctrl-names = "default"; 34 + pinctrl-0 = <&i2c0_pins>; 35 + }; 36 + wdt: wdt@1c21000 { 37 + status = "okay"; 38 + }; 39 + }; 40 + nand_cs3@62000000 { 41 + status = "okay"; 42 + pinctrl-names = "default"; 43 + pinctrl-0 = <&nand_cs3_pins>; 30 44 }; 31 45 };
+67 -3
arch/arm/boot/dts/da850.dtsi
··· 28 28 #address-cells = <1>; 29 29 #size-cells = <1>; 30 30 ranges = <0x0 0x01c00000 0x400000>; 31 + interrupt-parent = <&intc>; 31 32 33 + pmx_core: pinmux@1c14120 { 34 + compatible = "pinctrl-single"; 35 + reg = <0x14120 0x50>; 36 + #address-cells = <1>; 37 + #size-cells = <0>; 38 + pinctrl-single,bit-per-mux; 39 + pinctrl-single,register-width = <32>; 40 + pinctrl-single,function-mask = <0xffffffff>; 41 + status = "disabled"; 42 + 43 + nand_cs3_pins: pinmux_nand_pins { 44 + pinctrl-single,bits = < 45 + /* EMA_OE, EMA_WE */ 46 + 0x1c 0x00110000 0x00ff0000 47 + /* EMA_CS[4],EMA_CS[3]*/ 48 + 0x1c 0x00000110 0x00000ff0 49 + /* 50 + * EMA_D[0], EMA_D[1], EMA_D[2], 51 + * EMA_D[3], EMA_D[4], EMA_D[5], 52 + * EMA_D[6], EMA_D[7] 53 + */ 54 + 0x24 0x11111111 0xffffffff 55 + /* EMA_A[1], EMA_A[2] */ 56 + 0x30 0x01100000 0x0ff00000 57 + >; 58 + }; 59 + i2c0_pins: pinmux_i2c0_pins { 60 + pinctrl-single,bits = < 61 + /* I2C0_SDA,I2C0_SCL */ 62 + 0x10 0x00002200 0x0000ff00 63 + >; 64 + }; 65 + }; 32 66 serial0: serial@1c42000 { 33 67 compatible = "ns16550a"; 34 68 reg = <0x42000 0x100>; 35 69 clock-frequency = <150000000>; 36 70 reg-shift = <2>; 37 71 interrupts = <25>; 38 - interrupt-parent = <&intc>; 39 72 status = "disabled"; 40 73 }; 41 74 serial1: serial@1d0c000 { ··· 77 44 clock-frequency = <150000000>; 78 45 reg-shift = <2>; 79 46 interrupts = <53>; 80 - interrupt-parent = <&intc>; 81 47 status = "disabled"; 82 48 }; 83 49 serial2: serial@1d0d000 { ··· 85 53 clock-frequency = <150000000>; 86 54 reg-shift = <2>; 87 55 interrupts = <61>; 88 - interrupt-parent = <&intc>; 89 56 status = "disabled"; 90 57 }; 58 + rtc0: rtc@1c23000 { 59 + compatible = "ti,da830-rtc"; 60 + reg = <0x23000 0x1000>; 61 + interrupts = <19 62 + 19>; 63 + status = "disabled"; 64 + }; 65 + i2c0: i2c@1c22000 { 66 + compatible = "ti,davinci-i2c"; 67 + reg = <0x22000 0x1000>; 68 + interrupts = <15>; 69 + #address-cells = <1>; 70 + #size-cells = <0>; 71 + status = "disabled"; 72 + }; 73 + wdt: wdt@1c21000 { 74 + compatible = "ti,davinci-wdt"; 75 + reg = <0x21000 0x1000>; 76 + status = "disabled"; 77 + }; 78 + }; 79 + nand_cs3@62000000 { 80 + compatible = "ti,davinci-nand"; 81 + reg = <0x62000000 0x807ff 82 + 0x68000000 0x8000>; 83 + ti,davinci-chipselect = <1>; 84 + ti,davinci-mask-ale = <0>; 85 + ti,davinci-mask-cle = <0>; 86 + ti,davinci-mask-chipsel = <0>; 87 + ti,davinci-ecc-mode = "hw"; 88 + ti,davinci-ecc-bits = <4>; 89 + ti,davinci-nand-use-bbt; 90 + status = "disabled"; 91 91 }; 92 92 };
+77
arch/arm/boot/dts/imx28-cfa10037.dts
··· 1 + /* 2 + * Copyright 2012 Free Electrons 3 + * 4 + * The code contained herein is licensed under the GNU General Public 5 + * License. You may obtain a copy of the GNU General Public License 6 + * Version 2 or later at the following locations: 7 + * 8 + * http://www.opensource.org/licenses/gpl-license.html 9 + * http://www.gnu.org/copyleft/gpl.html 10 + */ 11 + 12 + /* 13 + * The CFA-10049 is an expansion board for the CFA-10036 module, thus we 14 + * need to include the CFA-10036 DTS. 15 + */ 16 + /include/ "imx28-cfa10036.dts" 17 + 18 + / { 19 + model = "Crystalfontz CFA-10037 Board"; 20 + compatible = "crystalfontz,cfa10037", "crystalfontz,cfa10036", "fsl,imx28"; 21 + 22 + apb@80000000 { 23 + apbh@80000000 { 24 + pinctrl@80018000 { 25 + pinctrl-names = "default", "default"; 26 + pinctrl-1 = <&hog_pins_cfa10037>; 27 + 28 + hog_pins_cfa10037: hog-10037@0 { 29 + reg = <0>; 30 + fsl,pinmux-ids = < 31 + 0x0073 /* MX28_PAD_GPMI_D7__GPIO_0_7 */ 32 + 0x2153 /* MX28_PAD_SSP2_D5__GPIO_2_21 */ 33 + >; 34 + fsl,drive-strength = <0>; 35 + fsl,voltage = <1>; 36 + fsl,pull-up = <0>; 37 + }; 38 + }; 39 + }; 40 + 41 + apbx@80040000 { 42 + usbphy1: usbphy@8007e000 { 43 + status = "okay"; 44 + }; 45 + }; 46 + }; 47 + 48 + ahb@80080000 { 49 + usb1: usb@80090000 { 50 + vbus-supply = <&reg_usb1_vbus>; 51 + pinctrl-0 = <&usbphy1_pins_a>; 52 + pinctrl-names = "default"; 53 + status = "okay"; 54 + }; 55 + 56 + mac0: ethernet@800f0000 { 57 + phy-mode = "rmii"; 58 + pinctrl-names = "default"; 59 + pinctrl-0 = <&mac0_pins_a>; 60 + phy-reset-gpios = <&gpio2 21 0>; 61 + phy-reset-duration = <100>; 62 + status = "okay"; 63 + }; 64 + }; 65 + 66 + regulators { 67 + compatible = "simple-bus"; 68 + 69 + reg_usb1_vbus: usb1_vbus { 70 + compatible = "regulator-fixed"; 71 + regulator-name = "usb1_vbus"; 72 + regulator-min-microvolt = <5000000>; 73 + regulator-max-microvolt = <5000000>; 74 + gpio = <&gpio0 7 1>; 75 + }; 76 + }; 77 + };
+186 -34
arch/arm/boot/dts/imx28-cfa10049.dts
··· 23 23 apbh@80000000 { 24 24 pinctrl@80018000 { 25 25 pinctrl-names = "default", "default"; 26 - pinctrl-1 = <&hog_pins_cfa10049>; 26 + pinctrl-1 = <&hog_pins_cfa10049 27 + &hog_pins_cfa10049_pullup>; 27 28 28 29 hog_pins_cfa10049: hog-10049@0 { 29 30 reg = <0>; 30 31 fsl,pinmux-ids = < 31 32 0x0073 /* MX28_PAD_GPMI_D7__GPIO_0_7 */ 33 + 0x1153 /* MX28_PAD_LCD_D22__GPIO_1_21 */ 32 34 0x1163 /* MX28_PAD_LCD_D22__GPIO_1_22 */ 33 35 0x1173 /* MX28_PAD_LCD_D22__GPIO_1_23 */ 34 36 0x2153 /* MX28_PAD_SSP2_D5__GPIO_2_21 */ 37 + 0x3173 /* MX28_PAD_LCD_RESET__GPIO_3_23 */ 35 38 >; 36 39 fsl,drive-strength = <0>; 37 40 fsl,voltage = <1>; 38 41 fsl,pull-up = <0>; 39 42 }; 40 43 41 - spi3_pins_cfa10049: spi3-cfa10049@0 { 44 + hog_pins_cfa10049_pullup: hog-10049-pullup@0 { 42 45 reg = <0>; 43 46 fsl,pinmux-ids = < 44 - 0x0181 /* MX28_PAD_GPMI_RDN__SSP3_SCK */ 45 - 0x01c1 /* MX28_PAD_GPMI_RESETN__SSP3_CMD */ 46 - 0x0111 /* MX28_PAD_GPMI_CE1N__SSP3_D3 */ 47 - 0x01a2 /* MX28_PAD_GPMI_ALE__SSP3_D4 */ 48 - 0x01b2 /* MX28_PAD_GPMI_CLE__SSP3_D5 */ 47 + 0x2133 /* MX28_PAD_SSP2_D3__GPIO_2_19 */ 48 + 0x3183 /* MX28_PAD_I2C0_SCL__GPIO_3_24 */ 49 + 0x3193 /* MX28_PAD_I2C0_SDA__GPIO_3_25 */ 50 + 0x31a3 /* MX28_PAD_SAIF_SDATA0__GPIO_3_26 */ 51 + 0x31e3 /* MX28_PAD_LCD_RESET__GPIO_3_30 */ 52 + >; 53 + fsl,drive-strength = <0>; 54 + fsl,voltage = <1>; 55 + fsl,pull-up = <1>; 56 + }; 57 + 58 + spi2_pins_cfa10049: spi2-cfa10049@0 { 59 + reg = <0>; 60 + fsl,pinmux-ids = < 61 + 0x2103 /* MX28_PAD_SSP2_SCK__GPIO_2_16 */ 62 + 0x2113 /* MX28_PAD_SSP2_CMD__GPIO_2_17 */ 63 + 0x2123 /* MX28_PAD_SSP2_D0__GPIO_2_18 */ 49 64 >; 50 65 fsl,drive-strength = <1>; 51 66 fsl,voltage = <1>; 52 67 fsl,pull-up = <1>; 53 68 }; 69 + 70 + spi3_pins_cfa10049: spi3-cfa10049@0 { 71 + reg = <0>; 72 + fsl,pinmux-ids = < 73 + 0x0183 /* MX28_PAD_GPMI_RDN__GPIO_0_24 */ 74 + 0x01c3 /* MX28_PAD_GPMI_RESETN__GPIO_0_28 */ 75 + 0x0113 /* MX28_PAD_GPMI_CE1N__GPIO_0_17 */ 76 + 0x01a3 /* MX28_PAD_GPMI_ALE__GPIO_0_26 */ 77 + 0x01b3 /* MX28_PAD_GPMI_CLE__GPIO_0_27 */ 78 + >; 79 + fsl,drive-strength = <1>; 80 + fsl,voltage = <1>; 81 + fsl,pull-up = <1>; 82 + }; 83 + 84 + lcdif_18bit_pins_cfa10049: lcdif-18bit@0 { 85 + reg = <0>; 86 + fsl,pinmux-ids = < 87 + 0x1000 /* MX28_PAD_LCD_D00__LCD_D0 */ 88 + 0x1010 /* MX28_PAD_LCD_D01__LCD_D1 */ 89 + 0x1020 /* MX28_PAD_LCD_D02__LCD_D2 */ 90 + 0x1030 /* MX28_PAD_LCD_D03__LCD_D3 */ 91 + 0x1040 /* MX28_PAD_LCD_D04__LCD_D4 */ 92 + 0x1050 /* MX28_PAD_LCD_D05__LCD_D5 */ 93 + 0x1060 /* MX28_PAD_LCD_D06__LCD_D6 */ 94 + 0x1070 /* MX28_PAD_LCD_D07__LCD_D7 */ 95 + 0x1080 /* MX28_PAD_LCD_D08__LCD_D8 */ 96 + 0x1090 /* MX28_PAD_LCD_D09__LCD_D9 */ 97 + 0x10a0 /* MX28_PAD_LCD_D10__LCD_D10 */ 98 + 0x10b0 /* MX28_PAD_LCD_D11__LCD_D11 */ 99 + 0x10c0 /* MX28_PAD_LCD_D12__LCD_D12 */ 100 + 0x10d0 /* MX28_PAD_LCD_D13__LCD_D13 */ 101 + 0x10e0 /* MX28_PAD_LCD_D14__LCD_D14 */ 102 + 0x10f0 /* MX28_PAD_LCD_D15__LCD_D15 */ 103 + 0x1100 /* MX28_PAD_LCD_D16__LCD_D16 */ 104 + 0x1110 /* MX28_PAD_LCD_D17__LCD_D17 */ 105 + >; 106 + fsl,drive-strength = <0>; 107 + fsl,voltage = <1>; 108 + fsl,pull-up = <0>; 109 + }; 110 + 111 + lcdif_pins_cfa10049: lcdif-evk@0 { 112 + reg = <0>; 113 + fsl,pinmux-ids = < 114 + 0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */ 115 + 0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */ 116 + 0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */ 117 + 0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */ 118 + >; 119 + fsl,drive-strength = <0>; 120 + fsl,voltage = <1>; 121 + fsl,pull-up = <0>; 122 + }; 54 123 }; 55 124 56 - ssp3: ssp@80016000 { 57 - compatible = "fsl,imx28-spi"; 125 + lcdif@80030000 { 58 126 pinctrl-names = "default"; 59 - pinctrl-0 = <&spi3_pins_cfa10049>; 127 + pinctrl-0 = <&lcdif_18bit_pins_cfa10049 128 + &lcdif_pins_cfa10049>; 60 129 status = "okay"; 61 - 62 - gpio5: gpio5@0 { 63 - compatible = "fairchild,74hc595"; 64 - gpio-controller; 65 - #gpio-cells = <2>; 66 - reg = <0>; 67 - registers-number = <2>; 68 - spi-max-frequency = <100000>; 69 - }; 70 - 71 - gpio6: gpio6@1 { 72 - compatible = "fairchild,74hc595"; 73 - gpio-controller; 74 - #gpio-cells = <2>; 75 - reg = <1>; 76 - registers-number = <4>; 77 - spi-max-frequency = <100000>; 78 - }; 79 - 80 - dac0: dh2228@2 { 81 - compatible = "rohm,dh2228fv"; 82 - reg = <2>; 83 - spi-max-frequency = <100000>; 84 - }; 85 130 }; 86 131 }; 87 132 88 133 apbx@80040000 { 134 + pwm: pwm@80064000 { 135 + pinctrl-names = "default", "default"; 136 + pinctrl-1 = <&pwm3_pins_b>; 137 + status = "okay"; 138 + }; 139 + 89 140 i2c1: i2c@8005a000 { 90 141 pinctrl-names = "default"; 91 142 pinctrl-0 = <&i2c1_pins_a>; ··· 164 113 165 114 i2c@3 { 166 115 reg = <3>; 116 + #address-cells = <1>; 117 + #size-cells = <0>; 118 + 119 + pca9555: pca9555@20 { 120 + compatible = "nxp,pca9555"; 121 + interrupt-parent = <&gpio2>; 122 + interrupts = <19 0x2>; 123 + gpio-controller; 124 + #gpio-cells = <2>; 125 + interrupt-controller; 126 + #interrupt-cells = <2>; 127 + reg = <0x20>; 128 + }; 167 129 }; 168 130 }; 169 131 ··· 216 152 phy-reset-duration = <100>; 217 153 status = "okay"; 218 154 }; 155 + }; 156 + 157 + spi2 { 158 + compatible = "spi-gpio"; 159 + pinctrl-names = "default"; 160 + pinctrl-0 = <&spi2_pins_cfa10049>; 161 + status = "okay"; 162 + gpio-sck = <&gpio2 16 0>; 163 + gpio-mosi = <&gpio2 17 0>; 164 + gpio-miso = <&gpio2 18 0>; 165 + cs-gpios = <&gpio3 23 0>; 166 + num-chipselects = <1>; 167 + #address-cells = <1>; 168 + #size-cells = <0>; 169 + 170 + hx8357: hx8357@0 { 171 + compatible = "himax,hx8357b", "himax,hx8357"; 172 + reg = <0>; 173 + spi-max-frequency = <100000>; 174 + spi-cpol; 175 + spi-cpha; 176 + gpios-reset = <&gpio3 30 0>; 177 + im-gpios = <&gpio5 4 0 &gpio5 5 0 &gpio5 6 0>; 178 + }; 179 + }; 180 + 181 + spi3 { 182 + compatible = "spi-gpio"; 183 + pinctrl-names = "default"; 184 + pinctrl-0 = <&spi3_pins_cfa10049>; 185 + status = "okay"; 186 + gpio-sck = <&gpio0 24 0>; 187 + gpio-mosi = <&gpio0 28 0>; 188 + cs-gpios = <&gpio0 17 0 &gpio0 26 0 &gpio0 27 0>; 189 + num-chipselects = <3>; 190 + #address-cells = <1>; 191 + #size-cells = <0>; 192 + 193 + gpio5: gpio5@0 { 194 + compatible = "fairchild,74hc595"; 195 + gpio-controller; 196 + #gpio-cells = <2>; 197 + reg = <0>; 198 + registers-number = <2>; 199 + spi-max-frequency = <100000>; 200 + }; 201 + 202 + gpio6: gpio6@1 { 203 + compatible = "fairchild,74hc595"; 204 + gpio-controller; 205 + #gpio-cells = <2>; 206 + reg = <1>; 207 + registers-number = <4>; 208 + spi-max-frequency = <100000>; 209 + }; 210 + 211 + dac0: dh2228@2 { 212 + compatible = "rohm,dh2228fv"; 213 + reg = <2>; 214 + spi-max-frequency = <100000>; 215 + }; 216 + }; 217 + 218 + gpio_keys { 219 + compatible = "gpio-keys"; 220 + #address-cells = <1>; 221 + #size-cells = <0>; 222 + 223 + rotary_button { 224 + label = "rotary_button"; 225 + gpios = <&gpio3 26 1>; 226 + debounce-interval = <10>; 227 + linux,code = <28>; 228 + }; 229 + }; 230 + 231 + rotary { 232 + compatible = "rotary-encoder"; 233 + gpios = <&gpio3 24 1>, <&gpio3 25 1>; 234 + linux,axis = <1>; /* REL_Y */ 235 + rotary-encoder,relative-axis; 236 + }; 237 + 238 + backlight { 239 + compatible = "pwm-backlight"; 240 + pwms = <&pwm 3 5000000>; 241 + brightness-levels = <0 4 8 16 32 64 128 255>; 242 + default-brightness-level = <6>; 219 243 }; 220 244 };
+1
arch/arm/boot/dts/imx28-m28evk.dts
··· 177 177 178 178 lradc@80050000 { 179 179 status = "okay"; 180 + fsl,lradc-touchscreen-wires = <4>; 180 181 }; 181 182 182 183 duart: serial@80074000 {
+10
arch/arm/boot/dts/imx28.dtsi
··· 502 502 fsl,pull-up = <0>; 503 503 }; 504 504 505 + pwm3_pins_b: pwm3@1 { 506 + reg = <1>; 507 + fsl,pinmux-ids = < 508 + 0x3141 /* MX28_PAD_SAIF0_MCLK__PWM3 */ 509 + >; 510 + fsl,drive-strength = <0>; 511 + fsl,voltage = <1>; 512 + fsl,pull-up = <0>; 513 + }; 514 + 505 515 pwm4_pins_a: pwm4@0 { 506 516 reg = <0>; 507 517 fsl,pinmux-ids = <
+30
arch/arm/boot/dts/ste-nomadik-s8815.dts
··· 1 + /* 2 + * Device Tree for the ST-Ericsson Nomadik S8815 board 3 + * Produced by Calao Systems 4 + */ 5 + 6 + /dts-v1/; 7 + /include/ "ste-nomadik-stn8815.dtsi" 8 + 9 + / { 10 + model = "Calao Systems USB-S8815"; 11 + compatible = "calaosystems,usb-s8815"; 12 + 13 + chosen { 14 + bootargs = "root=/dev/ram0 console=ttyAMA1,115200n8 earlyprintk"; 15 + }; 16 + 17 + /* Custom board node with GPIO pins to active etc */ 18 + usb-s8815 { 19 + /* The S8815 is using this very GPIO pin for the SMSC91x IRQs */ 20 + ethernet-gpio { 21 + gpios = <&gpio3 19 0x1>; 22 + interrupts = <19 0x1>; 23 + interrupt-parent = <&gpio3>; 24 + }; 25 + /* This will bias the MMC/SD card detect line */ 26 + mmcsd-gpio { 27 + gpios = <&gpio3 16 0x1>; 28 + }; 29 + }; 30 + };
+256
arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
··· 1 + /* 2 + * Device Tree for the ST-Ericsson Nomadik 8815 STn8815 SoC 3 + */ 4 + /include/ "skeleton.dtsi" 5 + 6 + / { 7 + #address-cells = <1>; 8 + #size-cells = <1>; 9 + 10 + memory { 11 + reg = <0x00000000 0x04000000>, 12 + <0x08000000 0x04000000>; 13 + }; 14 + 15 + L2: l2-cache { 16 + compatible = "arm,l210-cache"; 17 + reg = <0x10210000 0x1000>; 18 + interrupt-parent = <&vica>; 19 + interrupts = <30>; 20 + cache-unified; 21 + cache-level = <2>; 22 + }; 23 + 24 + mtu0 { 25 + /* Nomadik system timer */ 26 + reg = <0x101e2000 0x1000>; 27 + interrupt-parent = <&vica>; 28 + interrupts = <4>; 29 + }; 30 + 31 + mtu1 { 32 + /* Secondary timer */ 33 + reg = <0x101e3000 0x1000>; 34 + interrupt-parent = <&vica>; 35 + interrupts = <5>; 36 + }; 37 + 38 + gpio0: gpio@101e4000 { 39 + compatible = "st,nomadik-gpio"; 40 + reg = <0x101e4000 0x80>; 41 + interrupt-parent = <&vica>; 42 + interrupts = <6>; 43 + interrupt-controller; 44 + #interrupt-cells = <2>; 45 + gpio-controller; 46 + #gpio-cells = <2>; 47 + gpio-bank = <0>; 48 + }; 49 + 50 + gpio1: gpio@101e5000 { 51 + compatible = "st,nomadik-gpio"; 52 + reg = <0x101e5000 0x80>; 53 + interrupt-parent = <&vica>; 54 + interrupts = <7>; 55 + interrupt-controller; 56 + #interrupt-cells = <2>; 57 + gpio-controller; 58 + #gpio-cells = <2>; 59 + gpio-bank = <1>; 60 + }; 61 + 62 + gpio2: gpio@101e6000 { 63 + compatible = "st,nomadik-gpio"; 64 + reg = <0x101e6000 0x80>; 65 + interrupt-parent = <&vica>; 66 + interrupts = <8>; 67 + interrupt-controller; 68 + #interrupt-cells = <2>; 69 + gpio-controller; 70 + #gpio-cells = <2>; 71 + gpio-bank = <2>; 72 + }; 73 + 74 + gpio3: gpio@101e7000 { 75 + compatible = "st,nomadik-gpio"; 76 + reg = <0x101e7000 0x80>; 77 + interrupt-parent = <&vica>; 78 + interrupts = <9>; 79 + interrupt-controller; 80 + #interrupt-cells = <2>; 81 + gpio-controller; 82 + #gpio-cells = <2>; 83 + gpio-bank = <3>; 84 + }; 85 + 86 + pinctrl { 87 + compatible = "stericsson,nmk-pinctrl-stn8815"; 88 + }; 89 + 90 + /* A NAND flash of 128 MiB */ 91 + fsmc: flash@40000000 { 92 + compatible = "stericsson,fsmc-nand"; 93 + #address-cells = <1>; 94 + #size-cells = <1>; 95 + reg = <0x10100000 0x1000>, /* FSMC Register*/ 96 + <0x40000000 0x2000>, /* NAND Base DATA */ 97 + <0x41000000 0x2000>, /* NAND Base ADDR */ 98 + <0x40800000 0x2000>; /* NAND Base CMD */ 99 + reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd"; 100 + status = "okay"; 101 + 102 + partition@0 { 103 + label = "X-Loader(NAND)"; 104 + reg = <0x0 0x40000>; 105 + }; 106 + partition@40000 { 107 + label = "MemInit(NAND)"; 108 + reg = <0x40000 0x40000>; 109 + }; 110 + partition@80000 { 111 + label = "BootLoader(NAND)"; 112 + reg = <0x80000 0x200000>; 113 + }; 114 + partition@280000 { 115 + label = "Kernel zImage(NAND)"; 116 + reg = <0x280000 0x300000>; 117 + }; 118 + partition@580000 { 119 + label = "Root Filesystem(NAND)"; 120 + reg = <0x580000 0x1600000>; 121 + }; 122 + partition@1b80000 { 123 + label = "User Filesystem(NAND)"; 124 + reg = <0x1b80000 0x6480000>; 125 + }; 126 + }; 127 + 128 + external-bus@34000000 { 129 + compatible = "simple-bus"; 130 + reg = <0x34000000 0x1000000>; 131 + #address-cells = <1>; 132 + #size-cells = <1>; 133 + ranges = <0 0x34000000 0x1000000>; 134 + ethernet@300 { 135 + compatible = "smsc,lan91c111"; 136 + reg = <0x300 0x0fd00>; 137 + }; 138 + }; 139 + 140 + /* I2C0 connected to the STw4811 power management chip */ 141 + i2c0 { 142 + compatible = "i2c-gpio"; 143 + gpios = <&gpio1 31 0>, /* sda */ 144 + <&gpio1 30 0>; /* scl */ 145 + #address-cells = <1>; 146 + #size-cells = <0>; 147 + 148 + stw4811@2d { 149 + compatible = "st,stw4811"; 150 + reg = <0x2d>; 151 + }; 152 + }; 153 + 154 + /* I2C1 connected to various sensors */ 155 + i2c1 { 156 + compatible = "i2c-gpio"; 157 + gpios = <&gpio1 22 0>, /* sda */ 158 + <&gpio1 21 0>; /* scl */ 159 + #address-cells = <1>; 160 + #size-cells = <0>; 161 + 162 + camera@2d { 163 + compatible = "st,camera"; 164 + reg = <0x10>; 165 + }; 166 + stw5095@1a { 167 + compatible = "st,stw5095"; 168 + reg = <0x1a>; 169 + }; 170 + lis3lv02dl@1d { 171 + compatible = "st,lis3lv02dl"; 172 + reg = <0x1d>; 173 + }; 174 + }; 175 + 176 + /* I2C2 connected to the USB portions of the STw4811 only */ 177 + i2c2 { 178 + compatible = "i2c-gpio"; 179 + gpios = <&gpio2 10 0>, /* sda */ 180 + <&gpio2 9 0>; /* scl */ 181 + #address-cells = <1>; 182 + #size-cells = <0>; 183 + stw4811@2d { 184 + compatible = "st,stw4811-usb"; 185 + reg = <0x2d>; 186 + }; 187 + }; 188 + 189 + amba { 190 + compatible = "arm,amba-bus"; 191 + #address-cells = <1>; 192 + #size-cells = <1>; 193 + ranges; 194 + 195 + vica: intc@0x10140000 { 196 + compatible = "arm,versatile-vic"; 197 + interrupt-controller; 198 + #interrupt-cells = <1>; 199 + reg = <0x10140000 0x20>; 200 + }; 201 + 202 + vicb: intc@0x10140020 { 203 + compatible = "arm,versatile-vic"; 204 + interrupt-controller; 205 + #interrupt-cells = <1>; 206 + reg = <0x10140020 0x20>; 207 + }; 208 + 209 + uart0: uart@101fd000 { 210 + compatible = "arm,pl011", "arm,primecell"; 211 + reg = <0x101fd000 0x1000>; 212 + interrupt-parent = <&vica>; 213 + interrupts = <12>; 214 + }; 215 + 216 + uart1: uart@101fb000 { 217 + compatible = "arm,pl011", "arm,primecell"; 218 + reg = <0x101fb000 0x1000>; 219 + interrupt-parent = <&vica>; 220 + interrupts = <17>; 221 + }; 222 + 223 + uart2: uart@101f2000 { 224 + compatible = "arm,pl011", "arm,primecell"; 225 + reg = <0x101f2000 0x1000>; 226 + interrupt-parent = <&vica>; 227 + interrupts = <28>; 228 + status = "disabled"; 229 + }; 230 + 231 + rng: rng@101b0000 { 232 + compatible = "arm,primecell"; 233 + reg = <0x101b0000 0x1000>; 234 + }; 235 + 236 + rtc: rtc@101e8000 { 237 + compatible = "arm,pl031", "arm,primecell"; 238 + reg = <0x101e8000 0x1000>; 239 + interrupt-parent = <&vica>; 240 + interrupts = <10>; 241 + }; 242 + 243 + mmcsd: sdi@101f6000 { 244 + compatible = "arm,pl18x", "arm,primecell"; 245 + reg = <0x101f6000 0x1000>; 246 + interrupt-parent = <&vica>; 247 + interrupts = <22>; 248 + max-frequency = <48000000>; 249 + bus-width = <4>; 250 + mmc-cap-mmc-highspeed; 251 + mmc-cap-sd-highspeed; 252 + cd-gpios = <&gpio3 15 0x1>; 253 + cd-inverted; 254 + }; 255 + }; 256 + };
+30
arch/arm/boot/dts/sun4i-a10-hackberry.dts
··· 1 + /* 2 + * Copyright 2012 Maxime Ripard 3 + * 4 + * Maxime Ripard <maxime.ripard@free-electrons.com> 5 + * 6 + * The code contained herein is licensed under the GNU General Public 7 + * License. You may obtain a copy of the GNU General Public License 8 + * Version 2 or later at the following locations: 9 + * 10 + * http://www.opensource.org/licenses/gpl-license.html 11 + * http://www.gnu.org/copyleft/gpl.html 12 + */ 13 + 14 + /dts-v1/; 15 + /include/ "sun4i-a10.dtsi" 16 + 17 + / { 18 + model = "Miniand Hackberry"; 19 + compatible = "miniand,hackberry", "allwinner,sun4i-a10"; 20 + 21 + chosen { 22 + bootargs = "earlyprintk console=ttyS0,115200"; 23 + }; 24 + 25 + soc { 26 + uart0: uart@01c28000 { 27 + status = "okay"; 28 + }; 29 + }; 30 + };
+491
arch/arm/boot/dts/tegra20-colibri-512.dtsi
··· 1 + /include/ "tegra20.dtsi" 2 + 3 + / { 4 + model = "Toradex Colibri T20 512MB"; 5 + compatible = "toradex,colibri_t20-512", "nvidia,tegra20"; 6 + 7 + memory { 8 + reg = <0x00000000 0x20000000>; 9 + }; 10 + 11 + host1x { 12 + hdmi { 13 + vdd-supply = <&hdmi_vdd_reg>; 14 + pll-supply = <&hdmi_pll_reg>; 15 + 16 + nvidia,ddc-i2c-bus = <&i2c_ddc>; 17 + nvidia,hpd-gpio = <&gpio 111 0>; /* PN7 */ 18 + }; 19 + }; 20 + 21 + pinmux { 22 + pinctrl-names = "default"; 23 + pinctrl-0 = <&state_default>; 24 + 25 + state_default: pinmux { 26 + audio_refclk { 27 + nvidia,pins = "cdev1"; 28 + nvidia,function = "plla_out"; 29 + nvidia,pull = <0>; 30 + nvidia,tristate = <0>; 31 + }; 32 + crt { 33 + nvidia,pins = "crtp"; 34 + nvidia,function = "crt"; 35 + nvidia,pull = <0>; 36 + nvidia,tristate = <1>; 37 + }; 38 + dap3 { 39 + nvidia,pins = "dap3"; 40 + nvidia,function = "dap3"; 41 + nvidia,pull = <0>; 42 + nvidia,tristate = <0>; 43 + }; 44 + displaya { 45 + nvidia,pins = "ld0", "ld1", "ld2", "ld3", 46 + "ld4", "ld5", "ld6", "ld7", "ld8", 47 + "ld9", "ld10", "ld11", "ld12", "ld13", 48 + "ld14", "ld15", "ld16", "ld17", 49 + "lhs", "lpw0", "lpw2", "lsc0", 50 + "lsc1", "lsck", "lsda", "lspi", "lvs"; 51 + nvidia,function = "displaya"; 52 + nvidia,tristate = <1>; 53 + }; 54 + gpio_dte { 55 + nvidia,pins = "dte"; 56 + nvidia,function = "rsvd1"; 57 + nvidia,pull = <0>; 58 + nvidia,tristate = <0>; 59 + }; 60 + gpio_gmi { 61 + nvidia,pins = "ata", "atc", "atd", "ate", 62 + "dap1", "dap2", "dap4", "gpu", "irrx", 63 + "irtx", "spia", "spib", "spic"; 64 + nvidia,function = "gmi"; 65 + nvidia,pull = <0>; 66 + nvidia,tristate = <0>; 67 + }; 68 + gpio_pta { 69 + nvidia,pins = "pta"; 70 + nvidia,function = "rsvd4"; 71 + nvidia,pull = <0>; 72 + nvidia,tristate = <0>; 73 + }; 74 + gpio_uac { 75 + nvidia,pins = "uac"; 76 + nvidia,function = "rsvd2"; 77 + nvidia,pull = <0>; 78 + nvidia,tristate = <0>; 79 + }; 80 + hdint { 81 + nvidia,pins = "hdint"; 82 + nvidia,function = "hdmi"; 83 + nvidia,tristate = <1>; 84 + }; 85 + i2c1 { 86 + nvidia,pins = "rm"; 87 + nvidia,function = "i2c1"; 88 + nvidia,pull = <0>; 89 + nvidia,tristate = <1>; 90 + }; 91 + i2c3 { 92 + nvidia,pins = "dtf"; 93 + nvidia,function = "i2c3"; 94 + nvidia,pull = <0>; 95 + nvidia,tristate = <1>; 96 + }; 97 + i2cddc { 98 + nvidia,pins = "ddc"; 99 + nvidia,function = "i2c2"; 100 + nvidia,pull = <2>; 101 + nvidia,tristate = <1>; 102 + }; 103 + i2cp { 104 + nvidia,pins = "i2cp"; 105 + nvidia,function = "i2cp"; 106 + nvidia,pull = <0>; 107 + nvidia,tristate = <0>; 108 + }; 109 + irda { 110 + nvidia,pins = "uad"; 111 + nvidia,function = "irda"; 112 + nvidia,pull = <0>; 113 + nvidia,tristate = <1>; 114 + }; 115 + nand { 116 + nvidia,pins = "kbca", "kbcc", "kbcd", 117 + "kbce", "kbcf"; 118 + nvidia,function = "nand"; 119 + nvidia,pull = <0>; 120 + nvidia,tristate = <0>; 121 + }; 122 + owc { 123 + nvidia,pins = "owc"; 124 + nvidia,function = "owr"; 125 + nvidia,pull = <0>; 126 + nvidia,tristate = <1>; 127 + }; 128 + pmc { 129 + nvidia,pins = "pmc"; 130 + nvidia,function = "pwr_on"; 131 + nvidia,tristate = <0>; 132 + }; 133 + pwm { 134 + nvidia,pins = "sdb", "sdc", "sdd"; 135 + nvidia,function = "pwm"; 136 + nvidia,tristate = <1>; 137 + }; 138 + sdio4 { 139 + nvidia,pins = "atb", "gma", "gme"; 140 + nvidia,function = "sdio4"; 141 + nvidia,pull = <0>; 142 + nvidia,tristate = <1>; 143 + }; 144 + spi1 { 145 + nvidia,pins = "spid", "spie", "spif"; 146 + nvidia,function = "spi1"; 147 + nvidia,pull = <0>; 148 + nvidia,tristate = <1>; 149 + }; 150 + spi4 { 151 + nvidia,pins = "slxa", "slxc", "slxd", "slxk"; 152 + nvidia,function = "spi4"; 153 + nvidia,pull = <0>; 154 + nvidia,tristate = <1>; 155 + }; 156 + uarta { 157 + nvidia,pins = "sdio1"; 158 + nvidia,function = "uarta"; 159 + nvidia,pull = <0>; 160 + nvidia,tristate = <1>; 161 + }; 162 + uartd { 163 + nvidia,pins = "gmc"; 164 + nvidia,function = "uartd"; 165 + nvidia,pull = <0>; 166 + nvidia,tristate = <1>; 167 + }; 168 + ulpi { 169 + nvidia,pins = "uaa", "uab", "uda"; 170 + nvidia,function = "ulpi"; 171 + nvidia,pull = <0>; 172 + nvidia,tristate = <0>; 173 + }; 174 + ulpi_refclk { 175 + nvidia,pins = "cdev2"; 176 + nvidia,function = "pllp_out4"; 177 + nvidia,pull = <0>; 178 + nvidia,tristate = <0>; 179 + }; 180 + usb_gpio { 181 + nvidia,pins = "spig", "spih"; 182 + nvidia,function = "spi2_alt"; 183 + nvidia,pull = <0>; 184 + nvidia,tristate = <0>; 185 + }; 186 + vi { 187 + nvidia,pins = "dta", "dtb", "dtc", "dtd"; 188 + nvidia,function = "vi"; 189 + nvidia,pull = <0>; 190 + nvidia,tristate = <1>; 191 + }; 192 + vi_sc { 193 + nvidia,pins = "csus"; 194 + nvidia,function = "vi_sensor_clk"; 195 + nvidia,pull = <0>; 196 + nvidia,tristate = <1>; 197 + }; 198 + }; 199 + }; 200 + 201 + i2c@7000c000 { 202 + clock-frequency = <400000>; 203 + }; 204 + 205 + i2c_ddc: i2c@7000c400 { 206 + clock-frequency = <100000>; 207 + }; 208 + 209 + i2c@7000c500 { 210 + clock-frequency = <400000>; 211 + }; 212 + 213 + i2c@7000d000 { 214 + status = "okay"; 215 + clock-frequency = <400000>; 216 + 217 + pmic: tps6586x@34 { 218 + compatible = "ti,tps6586x"; 219 + reg = <0x34>; 220 + interrupts = <0 86 0x4>; 221 + 222 + ti,system-power-controller; 223 + 224 + #gpio-cells = <2>; 225 + gpio-controller; 226 + 227 + sys-supply = <&vdd_5v0_reg>; 228 + vin-sm0-supply = <&sys_reg>; 229 + vin-sm1-supply = <&sys_reg>; 230 + vin-sm2-supply = <&sys_reg>; 231 + vinldo01-supply = <&sm2_reg>; 232 + vinldo23-supply = <&sm2_reg>; 233 + vinldo4-supply = <&sm2_reg>; 234 + vinldo678-supply = <&sm2_reg>; 235 + vinldo9-supply = <&sm2_reg>; 236 + 237 + regulators { 238 + #address-cells = <1>; 239 + #size-cells = <0>; 240 + 241 + sys_reg: regulator@0 { 242 + reg = <0>; 243 + regulator-compatible = "sys"; 244 + regulator-name = "vdd_sys"; 245 + regulator-always-on; 246 + }; 247 + 248 + regulator@1 { 249 + reg = <1>; 250 + regulator-compatible = "sm0"; 251 + regulator-name = "vdd_sm0,vdd_core"; 252 + regulator-min-microvolt = <1275000>; 253 + regulator-max-microvolt = <1275000>; 254 + regulator-always-on; 255 + }; 256 + 257 + regulator@2 { 258 + reg = <2>; 259 + regulator-compatible = "sm1"; 260 + regulator-name = "vdd_sm1,vdd_cpu"; 261 + regulator-min-microvolt = <1100000>; 262 + regulator-max-microvolt = <1100000>; 263 + regulator-always-on; 264 + }; 265 + 266 + sm2_reg: regulator@3 { 267 + reg = <3>; 268 + regulator-compatible = "sm2"; 269 + regulator-name = "vdd_sm2,vin_ldo*"; 270 + regulator-min-microvolt = <3700000>; 271 + regulator-max-microvolt = <3700000>; 272 + regulator-always-on; 273 + }; 274 + 275 + /* LDO0 is not connected to anything */ 276 + 277 + regulator@5 { 278 + reg = <5>; 279 + regulator-compatible = "ldo1"; 280 + regulator-name = "vdd_ldo1,avdd_pll*"; 281 + regulator-min-microvolt = <1100000>; 282 + regulator-max-microvolt = <1100000>; 283 + regulator-always-on; 284 + }; 285 + 286 + regulator@6 { 287 + reg = <6>; 288 + regulator-compatible = "ldo2"; 289 + regulator-name = "vdd_ldo2,vdd_rtc"; 290 + regulator-min-microvolt = <1200000>; 291 + regulator-max-microvolt = <1200000>; 292 + }; 293 + 294 + /* LDO3 is not connected to anything */ 295 + 296 + regulator@8 { 297 + reg = <8>; 298 + regulator-compatible = "ldo4"; 299 + regulator-name = "vdd_ldo4,avdd_osc,vddio_sys"; 300 + regulator-min-microvolt = <1800000>; 301 + regulator-max-microvolt = <1800000>; 302 + regulator-always-on; 303 + }; 304 + 305 + ldo5_reg: regulator@9 { 306 + reg = <9>; 307 + regulator-compatible = "ldo5"; 308 + regulator-name = "vdd_ldo5,vdd_fuse"; 309 + regulator-min-microvolt = <3300000>; 310 + regulator-max-microvolt = <3300000>; 311 + regulator-always-on; 312 + }; 313 + 314 + regulator@10 { 315 + reg = <10>; 316 + regulator-compatible = "ldo6"; 317 + regulator-name = "vdd_ldo6,avdd_vdac,vddio_vi,vddio_cam"; 318 + regulator-min-microvolt = <1800000>; 319 + regulator-max-microvolt = <1800000>; 320 + }; 321 + 322 + hdmi_vdd_reg: regulator@11 { 323 + reg = <11>; 324 + regulator-compatible = "ldo7"; 325 + regulator-name = "vdd_ldo7,avdd_hdmi"; 326 + regulator-min-microvolt = <3300000>; 327 + regulator-max-microvolt = <3300000>; 328 + }; 329 + 330 + hdmi_pll_reg: regulator@12 { 331 + reg = <12>; 332 + regulator-compatible = "ldo8"; 333 + regulator-name = "vdd_ldo8,avdd_hdmi_pll"; 334 + regulator-min-microvolt = <1800000>; 335 + regulator-max-microvolt = <1800000>; 336 + }; 337 + 338 + regulator@13 { 339 + reg = <13>; 340 + regulator-compatible = "ldo9"; 341 + regulator-name = "vdd_ldo9,avdd_2v85,vdd_ddr_rx"; 342 + regulator-min-microvolt = <2850000>; 343 + regulator-max-microvolt = <2850000>; 344 + regulator-always-on; 345 + }; 346 + 347 + regulator@14 { 348 + reg = <14>; 349 + regulator-compatible = "ldo_rtc"; 350 + regulator-name = "vdd_rtc_out,vdd_cell"; 351 + regulator-min-microvolt = <3300000>; 352 + regulator-max-microvolt = <3300000>; 353 + regulator-always-on; 354 + }; 355 + }; 356 + }; 357 + 358 + temperature-sensor@4c { 359 + compatible = "national,lm95245"; 360 + reg = <0x4c>; 361 + }; 362 + }; 363 + 364 + memory-controller@7000f400 { 365 + emc-table@83250 { 366 + reg = <83250>; 367 + compatible = "nvidia,tegra20-emc-table"; 368 + clock-frequency = <83250>; 369 + nvidia,emc-registers = <0x00000005 0x00000011 370 + 0x00000004 0x00000002 0x00000004 0x00000004 371 + 0x00000001 0x0000000a 0x00000002 0x00000002 372 + 0x00000001 0x00000001 0x00000003 0x00000004 373 + 0x00000003 0x00000009 0x0000000c 0x0000025f 374 + 0x00000000 0x00000003 0x00000003 0x00000002 375 + 0x00000002 0x00000001 0x00000008 0x000000c8 376 + 0x00000003 0x00000005 0x00000003 0x0000000c 377 + 0x00000002 0x00000000 0x00000000 0x00000002 378 + 0x00000000 0x00000000 0x00000083 0x00520006 379 + 0x00000010 0x00000008 0x00000000 0x00000000 380 + 0x00000000 0x00000000 0x00000000 0x00000000>; 381 + }; 382 + emc-table@133200 { 383 + reg = <133200>; 384 + compatible = "nvidia,tegra20-emc-table"; 385 + clock-frequency = <133200>; 386 + nvidia,emc-registers = <0x00000008 0x00000019 387 + 0x00000006 0x00000002 0x00000004 0x00000004 388 + 0x00000001 0x0000000a 0x00000002 0x00000002 389 + 0x00000002 0x00000001 0x00000003 0x00000004 390 + 0x00000003 0x00000009 0x0000000c 0x0000039f 391 + 0x00000000 0x00000003 0x00000003 0x00000002 392 + 0x00000002 0x00000001 0x00000008 0x000000c8 393 + 0x00000003 0x00000007 0x00000003 0x0000000c 394 + 0x00000002 0x00000000 0x00000000 0x00000002 395 + 0x00000000 0x00000000 0x00000083 0x00510006 396 + 0x00000010 0x00000008 0x00000000 0x00000000 397 + 0x00000000 0x00000000 0x00000000 0x00000000>; 398 + }; 399 + emc-table@166500 { 400 + reg = <166500>; 401 + compatible = "nvidia,tegra20-emc-table"; 402 + clock-frequency = <166500>; 403 + nvidia,emc-registers = <0x0000000a 0x00000021 404 + 0x00000008 0x00000003 0x00000004 0x00000004 405 + 0x00000002 0x0000000a 0x00000003 0x00000003 406 + 0x00000002 0x00000001 0x00000003 0x00000004 407 + 0x00000003 0x00000009 0x0000000c 0x000004df 408 + 0x00000000 0x00000003 0x00000003 0x00000003 409 + 0x00000003 0x00000001 0x00000009 0x000000c8 410 + 0x00000003 0x00000009 0x00000004 0x0000000c 411 + 0x00000002 0x00000000 0x00000000 0x00000002 412 + 0x00000000 0x00000000 0x00000083 0x004f0006 413 + 0x00000010 0x00000008 0x00000000 0x00000000 414 + 0x00000000 0x00000000 0x00000000 0x00000000>; 415 + }; 416 + emc-table@333000 { 417 + reg = <333000>; 418 + compatible = "nvidia,tegra20-emc-table"; 419 + clock-frequency = <333000>; 420 + nvidia,emc-registers = <0x00000014 0x00000041 421 + 0x0000000f 0x00000005 0x00000004 0x00000005 422 + 0x00000003 0x0000000a 0x00000005 0x00000005 423 + 0x00000004 0x00000001 0x00000003 0x00000004 424 + 0x00000003 0x00000009 0x0000000c 0x000009ff 425 + 0x00000000 0x00000003 0x00000003 0x00000005 426 + 0x00000005 0x00000001 0x0000000e 0x000000c8 427 + 0x00000003 0x00000011 0x00000006 0x0000000c 428 + 0x00000002 0x00000000 0x00000000 0x00000002 429 + 0x00000000 0x00000000 0x00000083 0x00380006 430 + 0x00000010 0x00000008 0x00000000 0x00000000 431 + 0x00000000 0x00000000 0x00000000 0x00000000>; 432 + }; 433 + }; 434 + 435 + ac97: ac97 { 436 + status = "okay"; 437 + nvidia,codec-reset-gpio = <&gpio 168 0>; /* gpio PV0 */ 438 + nvidia,codec-sync-gpio = <&gpio 120 0>; /* gpio PP0 */ 439 + }; 440 + 441 + usb@c5004000 { 442 + status = "okay"; 443 + nvidia,phy-reset-gpio = <&gpio 169 0>; /* gpio PV1 */ 444 + }; 445 + 446 + sdhci@c8000600 { 447 + cd-gpios = <&gpio 23 0>; /* gpio PC7 */ 448 + }; 449 + 450 + sound { 451 + compatible = "nvidia,tegra-audio-wm9712-colibri_t20", 452 + "nvidia,tegra-audio-wm9712"; 453 + nvidia,model = "Colibri T20 AC97 Audio"; 454 + 455 + nvidia,audio-routing = 456 + "Headphone", "HPOUTL", 457 + "Headphone", "HPOUTR", 458 + "LineIn", "LINEINL", 459 + "LineIn", "LINEINR", 460 + "Mic", "MIC1"; 461 + 462 + nvidia,ac97-controller = <&ac97>; 463 + }; 464 + 465 + regulators { 466 + compatible = "simple-bus"; 467 + #address-cells = <1>; 468 + #size-cells = <0>; 469 + 470 + vdd_5v0_reg: regulator@100 { 471 + compatible = "regulator-fixed"; 472 + reg = <100>; 473 + regulator-name = "vdd_5v0"; 474 + regulator-min-microvolt = <5000000>; 475 + regulator-max-microvolt = <5000000>; 476 + regulator-always-on; 477 + }; 478 + 479 + regulator@101 { 480 + compatible = "regulator-fixed"; 481 + reg = <101>; 482 + regulator-name = "internal_usb"; 483 + regulator-min-microvolt = <5000000>; 484 + regulator-max-microvolt = <5000000>; 485 + enable-active-high; 486 + regulator-boot-on; 487 + regulator-always-on; 488 + gpio = <&gpio 217 0>; 489 + }; 490 + }; 491 + };
+118 -2
arch/arm/boot/dts/tegra20-harmony.dts
··· 3 3 /include/ "tegra20.dtsi" 4 4 5 5 / { 6 - model = "NVIDIA Tegra2 Harmony evaluation board"; 6 + model = "NVIDIA Tegra20 Harmony evaluation board"; 7 7 compatible = "nvidia,harmony", "nvidia,tegra20"; 8 8 9 9 memory { ··· 252 252 253 253 serial@70006300 { 254 254 status = "okay"; 255 - clock-frequency = <216000000>; 256 255 }; 257 256 258 257 i2c@7000c000 { ··· 449 450 wp-gpios = <&gpio 59 0>; /* gpio PH3 */ 450 451 power-gpios = <&gpio 70 0>; /* gpio PI6 */ 451 452 bus-width = <8>; 453 + }; 454 + 455 + kbc { 456 + status = "okay"; 457 + nvidia,debounce-delay-ms = <2>; 458 + nvidia,repeat-delay-ms = <160>; 459 + nvidia,kbc-row-pins = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15>; 460 + nvidia,kbc-col-pins = <16 17 18 19 20 21 22 23>; 461 + linux,keymap = <0x00020011 /* KEY_W */ 462 + 0x0003001F /* KEY_S */ 463 + 0x0004001E /* KEY_A */ 464 + 0x0005002C /* KEY_Z */ 465 + 0x000701D0 /* KEY_FN */ 466 + 0x0107008B /* KEY_MENU */ 467 + 0x02060038 /* KEY_LEFTALT */ 468 + 0x02070064 /* KEY_RIGHTALT */ 469 + 0x03000006 /* KEY_5 */ 470 + 0x03010005 /* KEY_4 */ 471 + 0x03020013 /* KEY_R */ 472 + 0x03030012 /* KEY_E */ 473 + 0x03040021 /* KEY_F */ 474 + 0x03050020 /* KEY_D */ 475 + 0x0306002D /* KEY_X */ 476 + 0x04000008 /* KEY_7 */ 477 + 0x04010007 /* KEY_6 */ 478 + 0x04020014 /* KEY_T */ 479 + 0x04030023 /* KEY_H */ 480 + 0x04040022 /* KEY_G */ 481 + 0x0405002F /* KEY_V */ 482 + 0x0406002E /* KEY_C */ 483 + 0x04070039 /* KEY_SPACE */ 484 + 0x0500000A /* KEY_9 */ 485 + 0x05010009 /* KEY_8 */ 486 + 0x05020016 /* KEY_U */ 487 + 0x05030015 /* KEY_Y */ 488 + 0x05040024 /* KEY_J */ 489 + 0x05050031 /* KEY_N */ 490 + 0x05060030 /* KEY_B */ 491 + 0x0507002B /* KEY_BACKSLASH */ 492 + 0x0600000C /* KEY_MINUS */ 493 + 0x0601000B /* KEY_0 */ 494 + 0x06020018 /* KEY_O */ 495 + 0x06030017 /* KEY_I */ 496 + 0x06040026 /* KEY_L */ 497 + 0x06050025 /* KEY_K */ 498 + 0x06060033 /* KEY_COMMA */ 499 + 0x06070032 /* KEY_M */ 500 + 0x0701000D /* KEY_EQUAL */ 501 + 0x0702001B /* KEY_RIGHTBRACE */ 502 + 0x0703001C /* KEY_ENTER */ 503 + 0x0707008B /* KEY_MENU */ 504 + 0x0804002A /* KEY_LEFTSHIFT */ 505 + 0x08050036 /* KEY_RIGHTSHIFT */ 506 + 0x0905001D /* KEY_LEFTCTRL */ 507 + 0x09070061 /* KEY_RIGHTCTRL */ 508 + 0x0B00001A /* KEY_LEFTBRACE */ 509 + 0x0B010019 /* KEY_P */ 510 + 0x0B020028 /* KEY_APOSTROPHE */ 511 + 0x0B030027 /* KEY_SEMICOLON */ 512 + 0x0B040035 /* KEY_SLASH */ 513 + 0x0B050034 /* KEY_DOT */ 514 + 0x0C000044 /* KEY_F10 */ 515 + 0x0C010043 /* KEY_F9 */ 516 + 0x0C02000E /* KEY_BACKSPACE */ 517 + 0x0C030004 /* KEY_3 */ 518 + 0x0C040003 /* KEY_2 */ 519 + 0x0C050067 /* KEY_UP */ 520 + 0x0C0600D2 /* KEY_PRINT */ 521 + 0x0C070077 /* KEY_PAUSE */ 522 + 0x0D00006E /* KEY_INSERT */ 523 + 0x0D01006F /* KEY_DELETE */ 524 + 0x0D030068 /* KEY_PAGEUP */ 525 + 0x0D04006D /* KEY_PAGEDOWN */ 526 + 0x0D05006A /* KEY_RIGHT */ 527 + 0x0D06006C /* KEY_DOWN */ 528 + 0x0D070069 /* KEY_LEFT */ 529 + 0x0E000057 /* KEY_F11 */ 530 + 0x0E010058 /* KEY_F12 */ 531 + 0x0E020042 /* KEY_F8 */ 532 + 0x0E030010 /* KEY_Q */ 533 + 0x0E04003E /* KEY_F4 */ 534 + 0x0E05003D /* KEY_F3 */ 535 + 0x0E060002 /* KEY_1 */ 536 + 0x0E070041 /* KEY_F7 */ 537 + 0x0F000001 /* KEY_ESC */ 538 + 0x0F010029 /* KEY_GRAVE */ 539 + 0x0F02003F /* KEY_F5 */ 540 + 0x0F03000F /* KEY_TAB */ 541 + 0x0F04003B /* KEY_F1 */ 542 + 0x0F05003C /* KEY_F2 */ 543 + 0x0F06003A /* KEY_CAPSLOCK */ 544 + 0x0F070040 /* KEY_F6 */ 545 + 0x14000047 /* KEY_KP7 */ 546 + 0x15000049 /* KEY_KP9 */ 547 + 0x15010048 /* KEY_KP8 */ 548 + 0x1502004B /* KEY_KP4 */ 549 + 0x1504004F /* KEY_KP1 */ 550 + 0x1601004E /* KEY_KPSLASH */ 551 + 0x1602004D /* KEY_KP6 */ 552 + 0x1603004C /* KEY_KP5 */ 553 + 0x16040051 /* KEY_KP3 */ 554 + 0x16050050 /* KEY_KP2 */ 555 + 0x16070052 /* KEY_KP0 */ 556 + 0x1B010037 /* KEY_KPASTERISK */ 557 + 0x1B03004A /* KEY_KPMINUS */ 558 + 0x1B04004E /* KEY_KPPLUS */ 559 + 0x1B050053 /* KEY_KPDOT */ 560 + 0x1C050073 /* KEY_VOLUMEUP */ 561 + 0x1D030066 /* KEY_HOME */ 562 + 0x1D04006B /* KEY_END */ 563 + 0x1D0500E1 /* KEY_BRIGHTNESSUP */ 564 + 0x1D060072 /* KEY_VOLUMEDOWN */ 565 + 0x1D0700E0 /* KEY_BRIGHTNESSDOWN */ 566 + 0x1E000045 /* KEY_NUMLOCK */ 567 + 0x1E010046 /* KEY_SCROLLLOCK */ 568 + 0x1E020071 /* KEY_MUTE */ 569 + 0x1F0400D6>; /* KEY_QUESTION */ 452 570 }; 453 571 454 572 regulators {
+89
arch/arm/boot/dts/tegra20-iris-512.dts
··· 1 + /dts-v1/; 2 + 3 + /include/ "tegra20-colibri-512.dtsi" 4 + 5 + / { 6 + model = "Toradex Colibri T20 512MB on Iris"; 7 + compatible = "toradex,iris", "toradex,colibri_t20-512", "nvidia,tegra20"; 8 + 9 + host1x { 10 + hdmi { 11 + status = "okay"; 12 + }; 13 + }; 14 + 15 + pinmux { 16 + state_default: pinmux { 17 + hdint { 18 + nvidia,tristate = <0>; 19 + }; 20 + 21 + i2cddc { 22 + nvidia,tristate = <0>; 23 + }; 24 + 25 + sdio4 { 26 + nvidia,tristate = <0>; 27 + }; 28 + 29 + uarta { 30 + nvidia,tristate = <0>; 31 + }; 32 + 33 + uartd { 34 + nvidia,tristate = <0>; 35 + }; 36 + }; 37 + }; 38 + 39 + usb@c5000000 { 40 + status = "okay"; 41 + dr_mode = "otg"; 42 + }; 43 + 44 + usb@c5008000 { 45 + status = "okay"; 46 + }; 47 + 48 + serial@70006000 { 49 + status = "okay"; 50 + }; 51 + 52 + serial@70006300 { 53 + status = "okay"; 54 + }; 55 + 56 + i2c_ddc: i2c@7000c400 { 57 + status = "okay"; 58 + }; 59 + 60 + sdhci@c8000600 { 61 + status = "okay"; 62 + bus-width = <4>; 63 + vmmc-supply = <&vcc_sd_reg>; 64 + vqmmc-supply = <&vcc_sd_reg>; 65 + }; 66 + 67 + regulators { 68 + regulator@0 { 69 + compatible = "regulator-fixed"; 70 + reg = <0>; 71 + regulator-name = "usb_host_vbus"; 72 + regulator-min-microvolt = <5000000>; 73 + regulator-max-microvolt = <5000000>; 74 + regulator-boot-on; 75 + regulator-always-on; 76 + gpio = <&gpio 178 0>; 77 + }; 78 + 79 + vcc_sd_reg: regulator@1 { 80 + compatible = "regulator-fixed"; 81 + reg = <1>; 82 + regulator-name = "vcc_sd"; 83 + regulator-min-microvolt = <3300000>; 84 + regulator-max-microvolt = <3300000>; 85 + regulator-boot-on; 86 + regulator-always-on; 87 + }; 88 + }; 89 + };
+16 -6
arch/arm/boot/dts/tegra20-paz00.dts
··· 10 10 reg = <0x00000000 0x20000000>; 11 11 }; 12 12 13 + host1x { 14 + hdmi { 15 + status = "okay"; 16 + 17 + vdd-supply = <&hdmi_vdd_reg>; 18 + pll-supply = <&hdmi_pll_reg>; 19 + 20 + nvidia,ddc-i2c-bus = <&hdmi_ddc>; 21 + nvidia,hpd-gpio = <&gpio 111 0>; /* PN7 */ 22 + }; 23 + }; 24 + 13 25 pinmux { 14 26 pinctrl-names = "default"; 15 27 pinctrl-0 = <&state_default>; ··· 244 232 245 233 serial@70006000 { 246 234 status = "okay"; 247 - clock-frequency = <216000000>; 248 235 }; 249 236 250 237 serial@70006200 { 251 238 status = "okay"; 252 - clock-frequency = <216000000>; 253 239 }; 254 240 255 241 i2c@7000c000 { ··· 262 252 }; 263 253 }; 264 254 265 - i2c@7000c400 { 255 + hdmi_ddc: i2c@7000c400 { 266 256 status = "okay"; 267 - clock-frequency = <400000>; 257 + clock-frequency = <100000>; 268 258 }; 269 259 270 260 nvec { ··· 379 369 regulator-max-microvolt = <1800000>; 380 370 }; 381 371 382 - ldo7 { 372 + hdmi_vdd_reg: ldo7 { 383 373 regulator-name = "+3.3vs_ldo7,avdd_hdmi"; 384 374 regulator-min-microvolt = <3300000>; 385 375 regulator-max-microvolt = <3300000>; 386 376 }; 387 377 388 - ldo8 { 378 + hdmi_pll_reg: ldo8 { 389 379 regulator-name = "+1.8vs_ldo8,avdd_hdmi_pll"; 390 380 regulator-min-microvolt = <1800000>; 391 381 regulator-max-microvolt = <1800000>;
+154 -4
arch/arm/boot/dts/tegra20-seaboard.dts
··· 10 10 reg = <0x00000000 0x40000000>; 11 11 }; 12 12 13 + host1x { 14 + hdmi { 15 + status = "okay"; 16 + 17 + vdd-supply = <&hdmi_vdd_reg>; 18 + pll-supply = <&hdmi_pll_reg>; 19 + 20 + nvidia,ddc-i2c-bus = <&hdmi_ddc>; 21 + nvidia,hpd-gpio = <&gpio 111 0>; /* PN7 */ 22 + }; 23 + }; 24 + 13 25 pinmux { 14 26 pinctrl-names = "default"; 15 27 pinctrl-0 = <&state_default>; ··· 303 291 304 292 serial@70006300 { 305 293 status = "okay"; 306 - clock-frequency = <216000000>; 307 294 }; 308 295 309 296 i2c@7000c000 { ··· 356 345 pinctrl-1 = <&state_i2cmux_pta>; 357 346 pinctrl-2 = <&state_i2cmux_idle>; 358 347 359 - i2c@0 { 348 + hdmi_ddc: i2c@0 { 360 349 reg = <0>; 361 350 #address-cells = <1>; 362 351 #size-cells = <0>; ··· 474 463 regulator-max-microvolt = <1800000>; 475 464 }; 476 465 477 - ldo7 { 466 + hdmi_vdd_reg: ldo7 { 478 467 regulator-name = "vdd_ldo7,avdd_hdmi,vdd_fuse"; 479 468 regulator-min-microvolt = <3300000>; 480 469 regulator-max-microvolt = <3300000>; 481 470 }; 482 471 483 - ldo8 { 472 + hdmi_pll_reg: ldo8 { 484 473 regulator-name = "vdd_ldo8,avdd_hdmi_pll"; 485 474 regulator-min-microvolt = <1800000>; 486 475 regulator-max-microvolt = <1800000>; ··· 615 604 }; 616 605 }; 617 606 607 + kbc { 608 + status = "okay"; 609 + nvidia,debounce-delay-ms = <32>; 610 + nvidia,repeat-delay-ms = <160>; 611 + nvidia,ghost-filter; 612 + nvidia,kbc-row-pins = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15>; 613 + nvidia,kbc-col-pins = <16 17 18 19 20 21 22 23>; 614 + linux,keymap = <0x00020011 /* KEY_W */ 615 + 0x0003001F /* KEY_S */ 616 + 0x0004001E /* KEY_A */ 617 + 0x0005002C /* KEY_Z */ 618 + 0x000701d0 /* KEY_FN */ 619 + 620 + 0x0107007D /* KEY_LEFTMETA */ 621 + 0x02060064 /* KEY_RIGHTALT */ 622 + 0x02070038 /* KEY_LEFTALT */ 623 + 624 + 0x03000006 /* KEY_5 */ 625 + 0x03010005 /* KEY_4 */ 626 + 0x03020013 /* KEY_R */ 627 + 0x03030012 /* KEY_E */ 628 + 0x03040021 /* KEY_F */ 629 + 0x03050020 /* KEY_D */ 630 + 0x0306002D /* KEY_X */ 631 + 632 + 0x04000008 /* KEY_7 */ 633 + 0x04010007 /* KEY_6 */ 634 + 0x04020014 /* KEY_T */ 635 + 0x04030023 /* KEY_H */ 636 + 0x04040022 /* KEY_G */ 637 + 0x0405002F /* KEY_V */ 638 + 0x0406002E /* KEY_C */ 639 + 0x04070039 /* KEY_SPACE */ 640 + 641 + 0x0500000A /* KEY_9 */ 642 + 0x05010009 /* KEY_8 */ 643 + 0x05020016 /* KEY_U */ 644 + 0x05030015 /* KEY_Y */ 645 + 0x05040024 /* KEY_J */ 646 + 0x05050031 /* KEY_N */ 647 + 0x05060030 /* KEY_B */ 648 + 0x0507002B /* KEY_BACKSLASH */ 649 + 650 + 0x0600000C /* KEY_MINUS */ 651 + 0x0601000B /* KEY_0 */ 652 + 0x06020018 /* KEY_O */ 653 + 0x06030017 /* KEY_I */ 654 + 0x06040026 /* KEY_L */ 655 + 0x06050025 /* KEY_K */ 656 + 0x06060033 /* KEY_COMMA */ 657 + 0x06070032 /* KEY_M */ 658 + 659 + 0x0701000D /* KEY_EQUAL */ 660 + 0x0702001B /* KEY_RIGHTBRACE */ 661 + 0x0703001C /* KEY_ENTER */ 662 + 0x0707008B /* KEY_MENU */ 663 + 664 + 0x08040036 /* KEY_RIGHTSHIFT */ 665 + 0x0805002A /* KEY_LEFTSHIFT */ 666 + 667 + 0x09050061 /* KEY_RIGHTCTRL */ 668 + 0x0907001D /* KEY_LEFTCTRL */ 669 + 670 + 0x0B00001A /* KEY_LEFTBRACE */ 671 + 0x0B010019 /* KEY_P */ 672 + 0x0B020028 /* KEY_APOSTROPHE */ 673 + 0x0B030027 /* KEY_SEMICOLON */ 674 + 0x0B040035 /* KEY_SLASH */ 675 + 0x0B050034 /* KEY_DOT */ 676 + 677 + 0x0C000044 /* KEY_F10 */ 678 + 0x0C010043 /* KEY_F9 */ 679 + 0x0C02000E /* KEY_BACKSPACE */ 680 + 0x0C030004 /* KEY_3 */ 681 + 0x0C040003 /* KEY_2 */ 682 + 0x0C050067 /* KEY_UP */ 683 + 0x0C0600D2 /* KEY_PRINT */ 684 + 0x0C070077 /* KEY_PAUSE */ 685 + 686 + 0x0D00006E /* KEY_INSERT */ 687 + 0x0D01006F /* KEY_DELETE */ 688 + 0x0D030068 /* KEY_PAGEUP */ 689 + 0x0D04006D /* KEY_PAGEDOWN */ 690 + 0x0D05006A /* KEY_RIGHT */ 691 + 0x0D06006C /* KEY_DOWN */ 692 + 0x0D070069 /* KEY_LEFT */ 693 + 694 + 0x0E000057 /* KEY_F11 */ 695 + 0x0E010058 /* KEY_F12 */ 696 + 0x0E020042 /* KEY_F8 */ 697 + 0x0E030010 /* KEY_Q */ 698 + 0x0E04003E /* KEY_F4 */ 699 + 0x0E05003D /* KEY_F3 */ 700 + 0x0E060002 /* KEY_1 */ 701 + 0x0E070041 /* KEY_F7 */ 702 + 703 + 0x0F000001 /* KEY_ESC */ 704 + 0x0F010029 /* KEY_GRAVE */ 705 + 0x0F02003F /* KEY_F5 */ 706 + 0x0F03000F /* KEY_TAB */ 707 + 0x0F04003B /* KEY_F1 */ 708 + 0x0F05003C /* KEY_F2 */ 709 + 0x0F06003A /* KEY_CAPSLOCK */ 710 + 0x0F070040 /* KEY_F6 */ 711 + 712 + /* Software Handled Function Keys */ 713 + 0x14000047 /* KEY_KP7 */ 714 + 715 + 0x15000049 /* KEY_KP9 */ 716 + 0x15010048 /* KEY_KP8 */ 717 + 0x1502004B /* KEY_KP4 */ 718 + 0x1504004F /* KEY_KP1 */ 719 + 720 + 0x1601004E /* KEY_KPSLASH */ 721 + 0x1602004D /* KEY_KP6 */ 722 + 0x1603004C /* KEY_KP5 */ 723 + 0x16040051 /* KEY_KP3 */ 724 + 0x16050050 /* KEY_KP2 */ 725 + 0x16070052 /* KEY_KP0 */ 726 + 727 + 0x1B010037 /* KEY_KPASTERISK */ 728 + 0x1B03004A /* KEY_KPMINUS */ 729 + 0x1B04004E /* KEY_KPPLUS */ 730 + 0x1B050053 /* KEY_KPDOT */ 731 + 732 + 0x1C050073 /* KEY_VOLUMEUP */ 733 + 734 + 0x1D030066 /* KEY_HOME */ 735 + 0x1D04006B /* KEY_END */ 736 + 0x1D0500E0 /* KEY_BRIGHTNESSDOWN */ 737 + 0x1D060072 /* KEY_VOLUMEDOWN */ 738 + 0x1D0700E1 /* KEY_BRIGHTNESSUP */ 739 + 740 + 0x1E000045 /* KEY_NUMLOCK */ 741 + 0x1E010046 /* KEY_SCROLLLOCK */ 742 + 0x1E020071 /* KEY_MUTE */ 743 + 744 + 0x1F04008A>; /* KEY_HELP */ 745 + }; 618 746 regulators { 619 747 compatible = "simple-bus"; 620 748 #address-cells = <1>;
-1
arch/arm/boot/dts/tegra20-tamonten.dtsi
··· 276 276 }; 277 277 278 278 serial@70006300 { 279 - clock-frequency = <216000000>; 280 279 status = "okay"; 281 280 }; 282 281
+10 -1
arch/arm/boot/dts/tegra20-trimslice.dts
··· 249 249 "ld23_22"; 250 250 nvidia,pull = <1>; 251 251 }; 252 + conf_spif { 253 + nvidia,pins = "spif"; 254 + nvidia,pull = <1>; 255 + nvidia,tristate = <0>; 256 + }; 252 257 }; 253 258 }; 254 259 ··· 263 258 264 259 serial@70006000 { 265 260 status = "okay"; 266 - clock-frequency = <216000000>; 267 261 }; 268 262 269 263 dvi_ddc: i2c@7000c000 { ··· 328 324 cd-gpios = <&gpio 121 0>; /* gpio PP1 */ 329 325 wp-gpios = <&gpio 122 0>; /* gpio PP2 */ 330 326 bus-width = <4>; 327 + }; 328 + 329 + poweroff { 330 + compatible = "gpio-poweroff"; 331 + gpios = <&gpio 191 1>; /* gpio PX7, active low */ 331 332 }; 332 333 333 334 regulators {
+17 -6
arch/arm/boot/dts/tegra20-ventana.dts
··· 3 3 /include/ "tegra20.dtsi" 4 4 5 5 / { 6 - model = "NVIDIA Tegra2 Ventana evaluation board"; 6 + model = "NVIDIA Tegra20 Ventana evaluation board"; 7 7 compatible = "nvidia,ventana", "nvidia,tegra20"; 8 8 9 9 memory { 10 10 reg = <0x00000000 0x40000000>; 11 + }; 12 + 13 + host1x { 14 + hdmi { 15 + status = "okay"; 16 + 17 + vdd-supply = <&hdmi_vdd_reg>; 18 + pll-supply = <&hdmi_pll_reg>; 19 + 20 + nvidia,ddc-i2c-bus = <&hdmi_ddc>; 21 + nvidia,hpd-gpio = <&gpio 111 0>; /* PN7 */ 22 + }; 11 23 }; 12 24 13 25 pinmux { ··· 300 288 301 289 serial@70006300 { 302 290 status = "okay"; 303 - clock-frequency = <216000000>; 304 291 }; 305 292 306 293 i2c@7000c000 { ··· 331 320 332 321 i2c@7000c400 { 333 322 status = "okay"; 334 - clock-frequency = <400000>; 323 + clock-frequency = <100000>; 335 324 }; 336 325 337 326 i2cmux { ··· 346 335 pinctrl-1 = <&state_i2cmux_pta>; 347 336 pinctrl-2 = <&state_i2cmux_idle>; 348 337 349 - i2c@0 { 338 + hdmi_ddc: i2c@0 { 350 339 reg = <0>; 351 340 #address-cells = <1>; 352 341 #size-cells = <0>; ··· 457 446 regulator-max-microvolt = <1800000>; 458 447 }; 459 448 460 - ldo7 { 449 + hdmi_vdd_reg: ldo7 { 461 450 regulator-name = "vdd_ldo7,avdd_hdmi,vdd_fuse"; 462 451 regulator-min-microvolt = <3300000>; 463 452 regulator-max-microvolt = <3300000>; 464 453 }; 465 454 466 - ldo8 { 455 + hdmi_pll_reg: ldo8 { 467 456 regulator-name = "vdd_ldo8,avdd_hdmi_pll"; 468 457 regulator-min-microvolt = <1800000>; 469 458 regulator-max-microvolt = <1800000>;
+13 -2
arch/arm/boot/dts/tegra20-whistler.dts
··· 3 3 /include/ "tegra20.dtsi" 4 4 5 5 / { 6 - model = "NVIDIA Tegra2 Whistler evaluation board"; 6 + model = "NVIDIA Tegra20 Whistler evaluation board"; 7 7 compatible = "nvidia,whistler", "nvidia,tegra20"; 8 8 9 9 memory { ··· 255 255 256 256 serial@70006000 { 257 257 status = "okay"; 258 - clock-frequency = <216000000>; 259 258 }; 260 259 261 260 hdmi_ddc: i2c@7000c400 { ··· 517 518 sdhci@c8000600 { 518 519 status = "okay"; 519 520 bus-width = <8>; 521 + }; 522 + 523 + kbc { 524 + status = "okay"; 525 + nvidia,debounce-delay-ms = <20>; 526 + nvidia,repeat-delay-ms = <160>; 527 + nvidia,kbc-row-pins = <0 1 2>; 528 + nvidia,kbc-col-pins = <16 17>; 529 + linux,keymap = <0x00000074 /* KEY_POWER */ 530 + 0x01000066 /* KEY_HOME */ 531 + 0x0101009E /* KEY_BACK */ 532 + 0x0201008B>; /* KEY_MENU */ 520 533 }; 521 534 522 535 regulators {
+52 -15
arch/arm/boot/dts/tegra20.dtsi
··· 4 4 compatible = "nvidia,tegra20"; 5 5 interrupt-parent = <&intc>; 6 6 7 + aliases { 8 + serial0 = &uarta; 9 + serial1 = &uartb; 10 + serial2 = &uartc; 11 + serial3 = &uartd; 12 + serial4 = &uarte; 13 + }; 14 + 7 15 host1x { 8 16 compatible = "nvidia,tegra20-host1x", "simple-bus"; 9 17 reg = <0x50000000 0x00024000>; ··· 120 112 interrupts = <1 13 0x304>; 121 113 }; 122 114 123 - cache-controller@50043000 { 124 - compatible = "arm,pl310-cache"; 125 - reg = <0x50043000 0x1000>; 126 - arm,data-latency = <5 5 2>; 127 - arm,tag-latency = <4 4 2>; 128 - cache-unified; 129 - cache-level = <2>; 130 - }; 131 - 132 115 intc: interrupt-controller { 133 116 compatible = "arm,cortex-a9-gic"; 134 117 reg = <0x50041000 0x1000 135 118 0x50040100 0x0100>; 136 119 interrupt-controller; 137 120 #interrupt-cells = <3>; 121 + }; 122 + 123 + cache-controller { 124 + compatible = "arm,pl310-cache"; 125 + reg = <0x50043000 0x1000>; 126 + arm,data-latency = <5 5 2>; 127 + arm,tag-latency = <4 4 2>; 128 + cache-unified; 129 + cache-level = <2>; 138 130 }; 139 131 140 132 timer@60005000 { ··· 207 199 compatible = "nvidia,tegra20-das"; 208 200 reg = <0x70000c00 0x80>; 209 201 }; 202 + 203 + tegra_ac97: ac97 { 204 + compatible = "nvidia,tegra20-ac97"; 205 + reg = <0x70002000 0x200>; 206 + interrupts = <0 81 0x04>; 207 + nvidia,dma-request-selector = <&apbdma 12>; 208 + clocks = <&tegra_car 3>; 209 + status = "disabled"; 210 + }; 210 211 211 212 tegra_i2s1: i2s@70002800 { 212 213 compatible = "nvidia,tegra20-i2s"; ··· 235 218 status = "disabled"; 236 219 }; 237 220 238 - serial@70006000 { 221 + /* 222 + * There are two serial driver i.e. 8250 based simple serial 223 + * driver and APB DMA based serial driver for higher baudrate 224 + * and performace. To enable the 8250 based driver, the compatible 225 + * is "nvidia,tegra20-uart" and to enable the APB DMA based serial 226 + * driver, the comptible is "nvidia,tegra20-hsuart". 227 + */ 228 + uarta: serial@70006000 { 239 229 compatible = "nvidia,tegra20-uart"; 240 230 reg = <0x70006000 0x40>; 241 231 reg-shift = <2>; 242 232 interrupts = <0 36 0x04>; 233 + nvidia,dma-request-selector = <&apbdma 8>; 243 234 clocks = <&tegra_car 6>; 244 235 status = "disabled"; 245 236 }; 246 237 247 - serial@70006040 { 238 + uartb: serial@70006040 { 248 239 compatible = "nvidia,tegra20-uart"; 249 240 reg = <0x70006040 0x40>; 250 241 reg-shift = <2>; 251 242 interrupts = <0 37 0x04>; 243 + nvidia,dma-request-selector = <&apbdma 9>; 252 244 clocks = <&tegra_car 96>; 253 245 status = "disabled"; 254 246 }; 255 247 256 - serial@70006200 { 248 + uartc: serial@70006200 { 257 249 compatible = "nvidia,tegra20-uart"; 258 250 reg = <0x70006200 0x100>; 259 251 reg-shift = <2>; 260 252 interrupts = <0 46 0x04>; 253 + nvidia,dma-request-selector = <&apbdma 10>; 261 254 clocks = <&tegra_car 55>; 262 255 status = "disabled"; 263 256 }; 264 257 265 - serial@70006300 { 258 + uartd: serial@70006300 { 266 259 compatible = "nvidia,tegra20-uart"; 267 260 reg = <0x70006300 0x100>; 268 261 reg-shift = <2>; 269 262 interrupts = <0 90 0x04>; 263 + nvidia,dma-request-selector = <&apbdma 19>; 270 264 clocks = <&tegra_car 65>; 271 265 status = "disabled"; 272 266 }; 273 267 274 - serial@70006400 { 268 + uarte: serial@70006400 { 275 269 compatible = "nvidia,tegra20-uart"; 276 270 reg = <0x70006400 0x100>; 277 271 reg-shift = <2>; 278 272 interrupts = <0 91 0x04>; 273 + nvidia,dma-request-selector = <&apbdma 20>; 279 274 clocks = <&tegra_car 66>; 280 275 status = "disabled"; 281 276 }; ··· 404 375 status = "disabled"; 405 376 }; 406 377 378 + kbc { 379 + compatible = "nvidia,tegra20-kbc"; 380 + reg = <0x7000e200 0x100>; 381 + interrupts = <0 85 0x04>; 382 + clocks = <&tegra_car 36>; 383 + status = "disabled"; 384 + }; 385 + 407 386 pmc { 408 387 compatible = "nvidia,tegra20-pmc"; 409 388 reg = <0x7000e400 0x400>; ··· 424 387 interrupts = <0 77 0x04>; 425 388 }; 426 389 427 - gart { 390 + iommu { 428 391 compatible = "nvidia,tegra20-gart"; 429 392 reg = <0x7000f024 0x00000018 /* controller registers */ 430 393 0x58000000 0x02000000>; /* GART aperture */
+373
arch/arm/boot/dts/tegra30-beaver.dts
··· 1 + /dts-v1/; 2 + 3 + /include/ "tegra30.dtsi" 4 + 5 + / { 6 + model = "NVIDIA Tegra30 Beaver evaluation board"; 7 + compatible = "nvidia,beaver", "nvidia,tegra30"; 8 + 9 + memory { 10 + reg = <0x80000000 0x80000000>; 11 + }; 12 + 13 + pinmux { 14 + pinctrl-names = "default"; 15 + pinctrl-0 = <&state_default>; 16 + 17 + state_default: pinmux { 18 + sdmmc1_clk_pz0 { 19 + nvidia,pins = "sdmmc1_clk_pz0"; 20 + nvidia,function = "sdmmc1"; 21 + nvidia,pull = <0>; 22 + nvidia,tristate = <0>; 23 + }; 24 + sdmmc1_cmd_pz1 { 25 + nvidia,pins = "sdmmc1_cmd_pz1", 26 + "sdmmc1_dat0_py7", 27 + "sdmmc1_dat1_py6", 28 + "sdmmc1_dat2_py5", 29 + "sdmmc1_dat3_py4"; 30 + nvidia,function = "sdmmc1"; 31 + nvidia,pull = <2>; 32 + nvidia,tristate = <0>; 33 + }; 34 + sdmmc3_clk_pa6 { 35 + nvidia,pins = "sdmmc3_clk_pa6"; 36 + nvidia,function = "sdmmc3"; 37 + nvidia,pull = <0>; 38 + nvidia,tristate = <0>; 39 + }; 40 + sdmmc3_cmd_pa7 { 41 + nvidia,pins = "sdmmc3_cmd_pa7", 42 + "sdmmc3_dat0_pb7", 43 + "sdmmc3_dat1_pb6", 44 + "sdmmc3_dat2_pb5", 45 + "sdmmc3_dat3_pb4"; 46 + nvidia,function = "sdmmc3"; 47 + nvidia,pull = <2>; 48 + nvidia,tristate = <0>; 49 + }; 50 + sdmmc4_clk_pcc4 { 51 + nvidia,pins = "sdmmc4_clk_pcc4", 52 + "sdmmc4_rst_n_pcc3"; 53 + nvidia,function = "sdmmc4"; 54 + nvidia,pull = <0>; 55 + nvidia,tristate = <0>; 56 + }; 57 + sdmmc4_dat0_paa0 { 58 + nvidia,pins = "sdmmc4_dat0_paa0", 59 + "sdmmc4_dat1_paa1", 60 + "sdmmc4_dat2_paa2", 61 + "sdmmc4_dat3_paa3", 62 + "sdmmc4_dat4_paa4", 63 + "sdmmc4_dat5_paa5", 64 + "sdmmc4_dat6_paa6", 65 + "sdmmc4_dat7_paa7"; 66 + nvidia,function = "sdmmc4"; 67 + nvidia,pull = <2>; 68 + nvidia,tristate = <0>; 69 + }; 70 + dap2_fs_pa2 { 71 + nvidia,pins = "dap2_fs_pa2", 72 + "dap2_sclk_pa3", 73 + "dap2_din_pa4", 74 + "dap2_dout_pa5"; 75 + nvidia,function = "i2s1"; 76 + nvidia,pull = <0>; 77 + nvidia,tristate = <0>; 78 + }; 79 + sdio3 { 80 + nvidia,pins = "drive_sdio3"; 81 + nvidia,high-speed-mode = <0>; 82 + nvidia,schmitt = <0>; 83 + nvidia,pull-down-strength = <46>; 84 + nvidia,pull-up-strength = <42>; 85 + nvidia,slew-rate-rising = <1>; 86 + nvidia,slew-rate-falling = <1>; 87 + }; 88 + }; 89 + }; 90 + 91 + serial@70006000 { 92 + status = "okay"; 93 + }; 94 + 95 + i2c@7000c000 { 96 + status = "okay"; 97 + clock-frequency = <100000>; 98 + }; 99 + 100 + i2c@7000c400 { 101 + status = "okay"; 102 + clock-frequency = <100000>; 103 + }; 104 + 105 + i2c@7000c500 { 106 + status = "okay"; 107 + clock-frequency = <100000>; 108 + }; 109 + 110 + i2c@7000c700 { 111 + status = "okay"; 112 + clock-frequency = <100000>; 113 + }; 114 + 115 + i2c@7000d000 { 116 + status = "okay"; 117 + clock-frequency = <100000>; 118 + 119 + tps62361 { 120 + compatible = "ti,tps62361"; 121 + reg = <0x60>; 122 + 123 + regulator-name = "tps62361-vout"; 124 + regulator-min-microvolt = <500000>; 125 + regulator-max-microvolt = <1500000>; 126 + regulator-boot-on; 127 + regulator-always-on; 128 + ti,vsel0-state-high; 129 + ti,vsel1-state-high; 130 + }; 131 + 132 + pmic: tps65911@2d { 133 + compatible = "ti,tps65911"; 134 + reg = <0x2d>; 135 + 136 + interrupts = <0 86 0x4>; 137 + #interrupt-cells = <2>; 138 + interrupt-controller; 139 + 140 + ti,system-power-controller; 141 + 142 + #gpio-cells = <2>; 143 + gpio-controller; 144 + 145 + vcc1-supply = <&vdd_5v_in_reg>; 146 + vcc2-supply = <&vdd_5v_in_reg>; 147 + vcc3-supply = <&vio_reg>; 148 + vcc4-supply = <&vdd_5v_in_reg>; 149 + vcc5-supply = <&vdd_5v_in_reg>; 150 + vcc6-supply = <&vdd2_reg>; 151 + vcc7-supply = <&vdd_5v_in_reg>; 152 + vccio-supply = <&vdd_5v_in_reg>; 153 + 154 + regulators { 155 + #address-cells = <1>; 156 + #size-cells = <0>; 157 + 158 + vdd1_reg: vdd1 { 159 + regulator-name = "vddio_ddr_1v2"; 160 + regulator-min-microvolt = <1200000>; 161 + regulator-max-microvolt = <1200000>; 162 + regulator-always-on; 163 + }; 164 + 165 + vdd2_reg: vdd2 { 166 + regulator-name = "vdd_1v5_gen"; 167 + regulator-min-microvolt = <1500000>; 168 + regulator-max-microvolt = <1500000>; 169 + regulator-always-on; 170 + }; 171 + 172 + vddctrl_reg: vddctrl { 173 + regulator-name = "vdd_cpu,vdd_sys"; 174 + regulator-min-microvolt = <1000000>; 175 + regulator-max-microvolt = <1000000>; 176 + regulator-always-on; 177 + }; 178 + 179 + vio_reg: vio { 180 + regulator-name = "vdd_1v8_gen"; 181 + regulator-min-microvolt = <1800000>; 182 + regulator-max-microvolt = <1800000>; 183 + regulator-always-on; 184 + }; 185 + 186 + ldo1_reg: ldo1 { 187 + regulator-name = "vdd_pexa,vdd_pexb"; 188 + regulator-min-microvolt = <1050000>; 189 + regulator-max-microvolt = <1050000>; 190 + }; 191 + 192 + ldo2_reg: ldo2 { 193 + regulator-name = "vdd_sata,avdd_plle"; 194 + regulator-min-microvolt = <1050000>; 195 + regulator-max-microvolt = <1050000>; 196 + }; 197 + 198 + /* LDO3 is not connected to anything */ 199 + 200 + ldo4_reg: ldo4 { 201 + regulator-name = "vdd_rtc"; 202 + regulator-min-microvolt = <1200000>; 203 + regulator-max-microvolt = <1200000>; 204 + regulator-always-on; 205 + }; 206 + 207 + ldo5_reg: ldo5 { 208 + regulator-name = "vddio_sdmmc,avdd_vdac"; 209 + regulator-min-microvolt = <3300000>; 210 + regulator-max-microvolt = <3300000>; 211 + regulator-always-on; 212 + }; 213 + 214 + ldo6_reg: ldo6 { 215 + regulator-name = "avdd_dsi_csi,pwrdet_mipi"; 216 + regulator-min-microvolt = <1200000>; 217 + regulator-max-microvolt = <1200000>; 218 + }; 219 + 220 + ldo7_reg: ldo7 { 221 + regulator-name = "vdd_pllm,x,u,a_p_c_s"; 222 + regulator-min-microvolt = <1200000>; 223 + regulator-max-microvolt = <1200000>; 224 + regulator-always-on; 225 + }; 226 + 227 + ldo8_reg: ldo8 { 228 + regulator-name = "vdd_ddr_hs"; 229 + regulator-min-microvolt = <1000000>; 230 + regulator-max-microvolt = <1000000>; 231 + regulator-always-on; 232 + }; 233 + }; 234 + }; 235 + }; 236 + 237 + spi@7000da00 { 238 + status = "okay"; 239 + spi-max-frequency = <25000000>; 240 + spi-flash@1 { 241 + compatible = "winbond,w25q32"; 242 + reg = <1>; 243 + spi-max-frequency = <20000000>; 244 + }; 245 + }; 246 + 247 + ahub { 248 + i2s@70080400 { 249 + status = "okay"; 250 + }; 251 + }; 252 + 253 + pmc { 254 + status = "okay"; 255 + nvidia,invert-interrupt; 256 + }; 257 + 258 + sdhci@78000000 { 259 + status = "okay"; 260 + cd-gpios = <&gpio 69 0>; /* gpio PI5 */ 261 + wp-gpios = <&gpio 155 0>; /* gpio PT3 */ 262 + power-gpios = <&gpio 31 0>; /* gpio PD7 */ 263 + bus-width = <4>; 264 + }; 265 + 266 + sdhci@78000600 { 267 + status = "okay"; 268 + bus-width = <8>; 269 + }; 270 + 271 + regulators { 272 + compatible = "simple-bus"; 273 + #address-cells = <1>; 274 + #size-cells = <0>; 275 + 276 + vdd_5v_in_reg: regulator@0 { 277 + compatible = "regulator-fixed"; 278 + reg = <0>; 279 + regulator-name = "vdd_5v_in"; 280 + regulator-min-microvolt = <5000000>; 281 + regulator-max-microvolt = <5000000>; 282 + regulator-always-on; 283 + }; 284 + 285 + chargepump_5v_reg: regulator@1 { 286 + compatible = "regulator-fixed"; 287 + reg = <1>; 288 + regulator-name = "chargepump_5v"; 289 + regulator-min-microvolt = <5000000>; 290 + regulator-max-microvolt = <5000000>; 291 + regulator-boot-on; 292 + regulator-always-on; 293 + enable-active-high; 294 + gpio = <&pmic 0 0>; /* PMIC TPS65911 GPIO0 */ 295 + }; 296 + 297 + ddr_reg: regulator@2 { 298 + compatible = "regulator-fixed"; 299 + reg = <2>; 300 + regulator-name = "vdd_ddr"; 301 + regulator-min-microvolt = <1500000>; 302 + regulator-max-microvolt = <1500000>; 303 + regulator-always-on; 304 + regulator-boot-on; 305 + enable-active-high; 306 + gpio = <&pmic 7 0>; /* PMIC TPS65911 GPIO7 */ 307 + vin-supply = <&vdd_5v_in_reg>; 308 + }; 309 + 310 + vdd_5v_sata_reg: regulator@3 { 311 + compatible = "regulator-fixed"; 312 + reg = <3>; 313 + regulator-name = "vdd_5v_sata"; 314 + regulator-min-microvolt = <5000000>; 315 + regulator-max-microvolt = <5000000>; 316 + regulator-always-on; 317 + regulator-boot-on; 318 + enable-active-high; 319 + gpio = <&gpio 30 0>; /* gpio PD6 */ 320 + vin-supply = <&vdd_5v_in_reg>; 321 + }; 322 + 323 + usb1_vbus_reg: regulator@4 { 324 + compatible = "regulator-fixed"; 325 + reg = <4>; 326 + regulator-name = "usb1_vbus"; 327 + regulator-min-microvolt = <5000000>; 328 + regulator-max-microvolt = <5000000>; 329 + enable-active-high; 330 + gpio = <&gpio 68 0>; /* GPIO PI4 */ 331 + gpio-open-drain; 332 + vin-supply = <&vdd_5v_in_reg>; 333 + }; 334 + 335 + usb3_vbus_reg: regulator@5 { 336 + compatible = "regulator-fixed"; 337 + reg = <5>; 338 + regulator-name = "usb3_vbus"; 339 + regulator-min-microvolt = <5000000>; 340 + regulator-max-microvolt = <5000000>; 341 + enable-active-high; 342 + gpio = <&gpio 63 0>; /* GPIO PH7 */ 343 + gpio-open-drain; 344 + vin-supply = <&vdd_5v_in_reg>; 345 + }; 346 + 347 + sys_3v3_reg: regulator@6 { 348 + compatible = "regulator-fixed"; 349 + reg = <6>; 350 + regulator-name = "sys_3v3,vdd_3v3_alw"; 351 + regulator-min-microvolt = <3300000>; 352 + regulator-max-microvolt = <3300000>; 353 + regulator-always-on; 354 + regulator-boot-on; 355 + enable-active-high; 356 + gpio = <&pmic 6 0>; /* PMIC TPS65911 GPIO6 */ 357 + vin-supply = <&vdd_5v_in_reg>; 358 + }; 359 + 360 + sys_3v3_pexs_reg: regulator@7 { 361 + compatible = "regulator-fixed"; 362 + reg = <7>; 363 + regulator-name = "sys_3v3_pexs"; 364 + regulator-min-microvolt = <3300000>; 365 + regulator-max-microvolt = <3300000>; 366 + regulator-always-on; 367 + regulator-boot-on; 368 + enable-active-high; 369 + gpio = <&gpio 95 0>; /* gpio PL7 */ 370 + vin-supply = <&sys_3v3_reg>; 371 + }; 372 + }; 373 + };
+14 -1
arch/arm/boot/dts/tegra30-cardhu.dtsi
··· 106 106 nvidia,slew-rate-rising = <1>; 107 107 nvidia,slew-rate-falling = <1>; 108 108 }; 109 + uart3_txd_pw6 { 110 + nvidia,pins = "uart3_txd_pw6", 111 + "uart3_cts_n_pa1", 112 + "uart3_rts_n_pc0", 113 + "uart3_rxd_pw7"; 114 + nvidia,function = "uartc"; 115 + nvidia,pull = <0>; 116 + nvidia,tristate = <0>; 117 + }; 109 118 }; 110 119 }; 111 120 112 121 serial@70006000 { 113 122 status = "okay"; 114 - clock-frequency = <408000000>; 123 + }; 124 + 125 + serial@70006200 { 126 + compatible = "nvidia,tegra30-hsuart"; 127 + status = "okay"; 115 128 }; 116 129 117 130 i2c@7000c000 {
+45 -16
arch/arm/boot/dts/tegra30.dtsi
··· 4 4 compatible = "nvidia,tegra30"; 5 5 interrupt-parent = <&intc>; 6 6 7 + aliases { 8 + serial0 = &uarta; 9 + serial1 = &uartb; 10 + serial2 = &uartc; 11 + serial3 = &uartd; 12 + serial4 = &uarte; 13 + }; 14 + 7 15 host1x { 8 16 compatible = "nvidia,tegra30-host1x", "simple-bus"; 9 17 reg = <0x50000000 0x00024000>; ··· 121 113 interrupts = <1 13 0xf04>; 122 114 }; 123 115 124 - cache-controller@50043000 { 125 - compatible = "arm,pl310-cache"; 126 - reg = <0x50043000 0x1000>; 127 - arm,data-latency = <6 6 2>; 128 - arm,tag-latency = <5 5 2>; 129 - cache-unified; 130 - cache-level = <2>; 131 - }; 132 - 133 116 intc: interrupt-controller { 134 117 compatible = "arm,cortex-a9-gic"; 135 118 reg = <0x50041000 0x1000 136 119 0x50040100 0x0100>; 137 120 interrupt-controller; 138 121 #interrupt-cells = <3>; 122 + }; 123 + 124 + cache-controller { 125 + compatible = "arm,pl310-cache"; 126 + reg = <0x50043000 0x1000>; 127 + arm,data-latency = <6 6 2>; 128 + arm,tag-latency = <5 5 2>; 129 + cache-unified; 130 + cache-level = <2>; 139 131 }; 140 132 141 133 timer@60005000 { ··· 199 191 }; 200 192 201 193 gpio: gpio { 202 - compatible = "nvidia,tegra30-gpio", "nvidia,tegra20-gpio"; 194 + compatible = "nvidia,tegra30-gpio"; 203 195 reg = <0x6000d000 0x1000>; 204 196 interrupts = <0 32 0x04 205 197 0 33 0x04 ··· 221 213 0x70003000 0x3e4>; /* Mux registers */ 222 214 }; 223 215 224 - serial@70006000 { 216 + /* 217 + * There are two serial driver i.e. 8250 based simple serial 218 + * driver and APB DMA based serial driver for higher baudrate 219 + * and performace. To enable the 8250 based driver, the compatible 220 + * is "nvidia,tegra30-uart", "nvidia,tegra20-uart" and to enable 221 + * the APB DMA based serial driver, the comptible is 222 + * "nvidia,tegra30-hsuart", "nvidia,tegra20-hsuart". 223 + */ 224 + uarta: serial@70006000 { 225 225 compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart"; 226 226 reg = <0x70006000 0x40>; 227 227 reg-shift = <2>; 228 228 interrupts = <0 36 0x04>; 229 + nvidia,dma-request-selector = <&apbdma 8>; 229 230 clocks = <&tegra_car 6>; 230 231 status = "disabled"; 231 232 }; 232 233 233 - serial@70006040 { 234 + uartb: serial@70006040 { 234 235 compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart"; 235 236 reg = <0x70006040 0x40>; 236 237 reg-shift = <2>; 237 238 interrupts = <0 37 0x04>; 239 + nvidia,dma-request-selector = <&apbdma 9>; 238 240 clocks = <&tegra_car 160>; 239 241 status = "disabled"; 240 242 }; 241 243 242 - serial@70006200 { 244 + uartc: serial@70006200 { 243 245 compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart"; 244 246 reg = <0x70006200 0x100>; 245 247 reg-shift = <2>; 246 248 interrupts = <0 46 0x04>; 249 + nvidia,dma-request-selector = <&apbdma 10>; 247 250 clocks = <&tegra_car 55>; 248 251 status = "disabled"; 249 252 }; 250 253 251 - serial@70006300 { 254 + uartd: serial@70006300 { 252 255 compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart"; 253 256 reg = <0x70006300 0x100>; 254 257 reg-shift = <2>; 255 258 interrupts = <0 90 0x04>; 259 + nvidia,dma-request-selector = <&apbdma 19>; 256 260 clocks = <&tegra_car 65>; 257 261 status = "disabled"; 258 262 }; 259 263 260 - serial@70006400 { 264 + uarte: serial@70006400 { 261 265 compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart"; 262 266 reg = <0x70006400 0x100>; 263 267 reg-shift = <2>; 264 268 interrupts = <0 91 0x04>; 269 + nvidia,dma-request-selector = <&apbdma 20>; 265 270 clocks = <&tegra_car 66>; 266 271 status = "disabled"; 267 272 }; ··· 413 392 status = "disabled"; 414 393 }; 415 394 395 + kbc { 396 + compatible = "nvidia,tegra30-kbc", "nvidia,tegra20-kbc"; 397 + reg = <0x7000e200 0x100>; 398 + interrupts = <0 85 0x04>; 399 + clocks = <&tegra_car 36>; 400 + status = "disabled"; 401 + }; 402 + 416 403 pmc { 417 404 compatible = "nvidia,tegra20-pmc", "nvidia,tegra30-pmc"; 418 405 reg = <0x7000e400 0x400>; ··· 435 406 interrupts = <0 77 0x04>; 436 407 }; 437 408 438 - smmu { 409 + iommu { 439 410 compatible = "nvidia,tegra30-smmu"; 440 411 reg = <0x7000f010 0x02c 441 412 0x7000f1f0 0x010
+1
arch/arm/configs/da8xx_omapl_defconfig
··· 84 84 CONFIG_I2C=y 85 85 CONFIG_I2C_CHARDEV=y 86 86 CONFIG_I2C_DAVINCI=y 87 + CONFIG_PINCTRL_SINGLE=y 87 88 # CONFIG_HWMON is not set 88 89 CONFIG_WATCHDOG=y 89 90 CONFIG_REGULATOR=y
+2
arch/arm/mach-at91/at91rm9200.c
··· 210 210 CLKDEV_CON_DEV_ID("t0_clk", "fffa4000.timer", &tc3_clk), 211 211 CLKDEV_CON_DEV_ID("t1_clk", "fffa4000.timer", &tc4_clk), 212 212 CLKDEV_CON_DEV_ID("t2_clk", "fffa4000.timer", &tc5_clk), 213 + CLKDEV_CON_DEV_ID("mci_clk", "fffb4000.mmc", &mmc_clk), 214 + CLKDEV_CON_DEV_ID("emac_clk", "fffbc000.ethernet", &ether_clk), 213 215 CLKDEV_CON_DEV_ID("hclk", "300000.ohci", &ohci_clk), 214 216 CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioA_clk), 215 217 CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioB_clk),
+1
arch/arm/mach-davinci/Kconfig
··· 62 62 bool "Support DA8XX platforms using device tree" 63 63 default y 64 64 depends on ARCH_DAVINCI_DA8XX 65 + select PINCTRL 65 66 help 66 67 Say y here to include support for TI DaVinci DA850 based using 67 68 Flattened Device Tree. More information at Documentation/devicetree
+8 -1
arch/arm/mach-davinci/da8xx-dt.c
··· 37 37 of_irq_init(da8xx_irq_match); 38 38 } 39 39 40 + struct of_dev_auxdata da850_auxdata_lookup[] __initdata = { 41 + OF_DEV_AUXDATA("ti,davinci-i2c", 0x01c22000, "i2c_davinci.1", NULL), 42 + OF_DEV_AUXDATA("ti,davinci-wdt", 0x01c21000, "watchdog", NULL), 43 + {} 44 + }; 45 + 40 46 #ifdef CONFIG_ARCH_DAVINCI_DA850 41 47 42 48 static void __init da850_init_machine(void) 43 49 { 44 - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 50 + of_platform_populate(NULL, of_default_bus_match_table, 51 + da850_auxdata_lookup, NULL); 45 52 46 53 da8xx_uart_clk_enable(); 47 54 }
+10 -2
arch/arm/mach-davinci/devices-da8xx.c
··· 359 359 }, 360 360 }; 361 361 362 - struct platform_device da8xx_wdt_device = { 362 + static struct platform_device da8xx_wdt_device = { 363 363 .name = "watchdog", 364 364 .id = -1, 365 365 .num_resources = ARRAY_SIZE(da8xx_watchdog_resources), ··· 368 368 369 369 void da8xx_restart(char mode, const char *cmd) 370 370 { 371 - davinci_watchdog_reset(&da8xx_wdt_device); 371 + struct device *dev; 372 + 373 + dev = bus_find_device_by_name(&platform_bus_type, NULL, "watchdog"); 374 + if (!dev) { 375 + pr_err("%s: failed to find watchdog device\n", __func__); 376 + return; 377 + } 378 + 379 + davinci_watchdog_reset(to_platform_device(dev)); 372 380 } 373 381 374 382 int __init da8xx_register_watchdog(void)
-1
arch/arm/mach-davinci/include/mach/da8xx.h
··· 110 110 extern struct da8xx_lcdc_platform_data sharp_lcd035q3dg01_pdata; 111 111 extern struct da8xx_lcdc_platform_data sharp_lk043t1dg01_pdata; 112 112 113 - extern struct platform_device da8xx_wdt_device; 114 113 115 114 extern const short da830_emif25_pins[]; 116 115 extern const short da830_spi0_pins[];
+30
arch/arm/mach-mxs/mach-mxs.c
··· 119 119 }, 120 120 }; 121 121 122 + static struct fb_videomode cfa10049_video_modes[] = { 123 + { 124 + .name = "Himax HX8357-B", 125 + .refresh = 60, 126 + .xres = 320, 127 + .yres = 480, 128 + .pixclock = 108506, /* picosecond (9.216 MHz) */ 129 + .left_margin = 2, 130 + .right_margin = 2, 131 + .upper_margin = 2, 132 + .lower_margin = 2, 133 + .hsync_len = 15, 134 + .vsync_len = 15, 135 + .sync = FB_SYNC_DATA_ENABLE_HIGH_ACT 136 + }, 137 + }; 138 + 122 139 static struct mxsfb_platform_data mxsfb_pdata __initdata; 123 140 124 141 /* ··· 404 387 update_fec_mac_prop(OUI_CRYSTALFONTZ); 405 388 } 406 389 390 + static void __init cfa10037_init(void) 391 + { 392 + enable_clk_enet_out(); 393 + update_fec_mac_prop(OUI_CRYSTALFONTZ); 394 + 395 + mxsfb_pdata.mode_list = cfa10049_video_modes; 396 + mxsfb_pdata.mode_count = ARRAY_SIZE(cfa10049_video_modes); 397 + mxsfb_pdata.default_bpp = 32; 398 + mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT; 399 + } 400 + 407 401 static void __init apf28_init(void) 408 402 { 409 403 enable_clk_enet_out(); ··· 435 407 m28evk_init(); 436 408 else if (of_machine_is_compatible("bluegiga,apx4devkit")) 437 409 apx4devkit_init(); 410 + else if (of_machine_is_compatible("crystalfontz,cfa10037")) 411 + cfa10037_init(); 438 412 else if (of_machine_is_compatible("crystalfontz,cfa10049")) 439 413 cfa10049_init(); 440 414 else if (of_machine_is_compatible("armadeus,imx28-apf28"))
+2 -8
arch/arm/mach-nomadik/Kconfig
··· 4 4 5 5 config MACH_NOMADIK_8815NHK 6 6 bool "ST 8815 Nomadik Hardware Kit (evaluation board)" 7 - select CLKSRC_NOMADIK_MTU 8 7 select NOMADIK_8815 8 + select I2C 9 + select I2C_ALGOBIT 9 10 10 11 endmenu 11 12 12 13 config NOMADIK_8815 13 14 bool 14 - 15 - config I2C_BITBANG_8815NHK 16 - tristate "Driver for bit-bang busses found on the 8815 NHK" 17 - depends on I2C && MACH_NOMADIK_8815NHK 18 - depends on PINCTRL_NOMADIK 19 - default y 20 - select I2C_ALGOBIT 21 15 22 16 endif
-6
arch/arm/mach-nomadik/Makefile
··· 9 9 10 10 # Cpu revision 11 11 obj-$(CONFIG_NOMADIK_8815) += cpu-8815.o 12 - 13 - # Specific board support 14 - obj-$(CONFIG_MACH_NOMADIK_8815NHK) += board-nhk8815.o 15 - 16 - # Nomadik extra devices 17 - obj-$(CONFIG_I2C_BITBANG_8815NHK) += i2c-8815nhk.o
-353
arch/arm/mach-nomadik/board-nhk8815.c
··· 1 - /* 2 - * linux/arch/arm/mach-nomadik/board-8815nhk.c 3 - * 4 - * Copyright (C) STMicroelectronics 5 - * 6 - * This program is free software; you can redistribute it and/or modify 7 - * it under the terms of the GNU General Public License version 2, as 8 - * published by the Free Software Foundation. 9 - * 10 - * NHK15 board specifc driver definition 11 - */ 12 - #include <linux/types.h> 13 - #include <linux/kernel.h> 14 - #include <linux/init.h> 15 - #include <linux/platform_device.h> 16 - #include <linux/amba/bus.h> 17 - #include <linux/amba/mmci.h> 18 - #include <linux/interrupt.h> 19 - #include <linux/gpio.h> 20 - #include <linux/mtd/mtd.h> 21 - #include <linux/mtd/nand.h> 22 - #include <linux/mtd/fsmc.h> 23 - #include <linux/mtd/onenand.h> 24 - #include <linux/mtd/partitions.h> 25 - #include <linux/i2c.h> 26 - #include <linux/io.h> 27 - #include <linux/pinctrl/machine.h> 28 - #include <linux/platform_data/pinctrl-nomadik.h> 29 - #include <linux/platform_data/clocksource-nomadik-mtu.h> 30 - #include <asm/sizes.h> 31 - #include <asm/mach-types.h> 32 - #include <asm/mach/arch.h> 33 - #include <asm/mach/flash.h> 34 - #include <asm/mach/time.h> 35 - #include <mach/irqs.h> 36 - 37 - #include "cpu-8815.h" 38 - 39 - /* Initial value for SRC control register: all timers use MXTAL/8 source */ 40 - #define SRC_CR_INIT_MASK 0x00007fff 41 - #define SRC_CR_INIT_VAL 0x2aaa8000 42 - 43 - #define ALE_OFF 0x1000000 44 - #define CLE_OFF 0x800000 45 - 46 - /* These addresses span 16MB, so use three individual pages */ 47 - static struct resource nhk8815_nand_resources[] = { 48 - { 49 - .name = "nand_data", 50 - .start = 0x40000000, 51 - .end = 0x40000000 + SZ_16K - 1, 52 - .flags = IORESOURCE_MEM, 53 - }, { 54 - .name = "nand_addr", 55 - .start = 0x40000000 + ALE_OFF, 56 - .end = 0x40000000 +ALE_OFF + SZ_16K - 1, 57 - .flags = IORESOURCE_MEM, 58 - }, { 59 - .name = "nand_cmd", 60 - .start = 0x40000000 + CLE_OFF, 61 - .end = 0x40000000 + CLE_OFF + SZ_16K - 1, 62 - .flags = IORESOURCE_MEM, 63 - }, { 64 - .name = "fsmc_regs", 65 - .start = NOMADIK_FSMC_BASE, 66 - .end = NOMADIK_FSMC_BASE + SZ_4K - 1, 67 - .flags = IORESOURCE_MEM, 68 - }, 69 - }; 70 - 71 - /* 72 - * These partitions are the same as those used in the 2.6.20 release 73 - * shipped by the vendor; the first two partitions are mandated 74 - * by the boot ROM, and the bootloader area is somehow oversized... 75 - */ 76 - static struct mtd_partition nhk8815_partitions[] = { 77 - { 78 - .name = "X-Loader(NAND)", 79 - .offset = 0, 80 - .size = SZ_256K, 81 - }, { 82 - .name = "MemInit(NAND)", 83 - .offset = MTDPART_OFS_APPEND, 84 - .size = SZ_256K, 85 - }, { 86 - .name = "BootLoader(NAND)", 87 - .offset = MTDPART_OFS_APPEND, 88 - .size = SZ_2M, 89 - }, { 90 - .name = "Kernel zImage(NAND)", 91 - .offset = MTDPART_OFS_APPEND, 92 - .size = 3 * SZ_1M, 93 - }, { 94 - .name = "Root Filesystem(NAND)", 95 - .offset = MTDPART_OFS_APPEND, 96 - .size = 22 * SZ_1M, 97 - }, { 98 - .name = "User Filesystem(NAND)", 99 - .offset = MTDPART_OFS_APPEND, 100 - .size = MTDPART_SIZ_FULL, 101 - } 102 - }; 103 - 104 - static struct fsmc_nand_timings nhk8815_nand_timings = { 105 - .thiz = 0, 106 - .thold = 0x10, 107 - .twait = 0x0A, 108 - .tset = 0, 109 - }; 110 - 111 - static struct fsmc_nand_platform_data nhk8815_nand_platform_data = { 112 - .nand_timings = &nhk8815_nand_timings, 113 - .partitions = nhk8815_partitions, 114 - .nr_partitions = ARRAY_SIZE(nhk8815_partitions), 115 - .width = FSMC_NAND_BW8, 116 - }; 117 - 118 - static struct platform_device nhk8815_nand_device = { 119 - .name = "fsmc-nand", 120 - .id = -1, 121 - .resource = nhk8815_nand_resources, 122 - .num_resources = ARRAY_SIZE(nhk8815_nand_resources), 123 - .dev = { 124 - .platform_data = &nhk8815_nand_platform_data, 125 - }, 126 - }; 127 - 128 - /* These are the partitions for the OneNand device, different from above */ 129 - static struct mtd_partition nhk8815_onenand_partitions[] = { 130 - { 131 - .name = "X-Loader(OneNAND)", 132 - .offset = 0, 133 - .size = SZ_256K, 134 - }, { 135 - .name = "MemInit(OneNAND)", 136 - .offset = MTDPART_OFS_APPEND, 137 - .size = SZ_256K, 138 - }, { 139 - .name = "BootLoader(OneNAND)", 140 - .offset = MTDPART_OFS_APPEND, 141 - .size = SZ_2M-SZ_256K, 142 - }, { 143 - .name = "SysImage(OneNAND)", 144 - .offset = MTDPART_OFS_APPEND, 145 - .size = 4 * SZ_1M, 146 - }, { 147 - .name = "Root Filesystem(OneNAND)", 148 - .offset = MTDPART_OFS_APPEND, 149 - .size = 22 * SZ_1M, 150 - }, { 151 - .name = "User Filesystem(OneNAND)", 152 - .offset = MTDPART_OFS_APPEND, 153 - .size = MTDPART_SIZ_FULL, 154 - } 155 - }; 156 - 157 - static struct onenand_platform_data nhk8815_onenand_data = { 158 - .parts = nhk8815_onenand_partitions, 159 - .nr_parts = ARRAY_SIZE(nhk8815_onenand_partitions), 160 - }; 161 - 162 - static struct resource nhk8815_onenand_resource[] = { 163 - { 164 - .start = 0x30000000, 165 - .end = 0x30000000 + SZ_128K - 1, 166 - .flags = IORESOURCE_MEM, 167 - }, 168 - }; 169 - 170 - static struct platform_device nhk8815_onenand_device = { 171 - .name = "onenand-flash", 172 - .id = -1, 173 - .dev = { 174 - .platform_data = &nhk8815_onenand_data, 175 - }, 176 - .resource = nhk8815_onenand_resource, 177 - .num_resources = ARRAY_SIZE(nhk8815_onenand_resource), 178 - }; 179 - 180 - /* bus control reg. and bus timing reg. for CS0..CS3 */ 181 - #define FSMC_BCR(x) (NOMADIK_FSMC_VA + (x << 3)) 182 - #define FSMC_BTR(x) (NOMADIK_FSMC_VA + (x << 3) + 0x04) 183 - 184 - static void __init nhk8815_onenand_init(void) 185 - { 186 - #ifdef CONFIG_MTD_ONENAND 187 - /* Set up SMCS0 for OneNand */ 188 - writel(0x000030db, FSMC_BCR(0)); 189 - writel(0x02100551, FSMC_BTR(0)); 190 - #endif 191 - } 192 - 193 - static struct mmci_platform_data mmcsd_plat_data = { 194 - .ocr_mask = MMC_VDD_29_30, 195 - .f_max = 48000000, 196 - .gpio_wp = -1, 197 - .gpio_cd = 111, 198 - .cd_invert = true, 199 - .capabilities = MMC_CAP_MMC_HIGHSPEED | 200 - MMC_CAP_SD_HIGHSPEED | MMC_CAP_4_BIT_DATA, 201 - }; 202 - 203 - static int __init nhk8815_mmcsd_init(void) 204 - { 205 - int ret; 206 - 207 - ret = gpio_request(112, "card detect bias"); 208 - if (ret) 209 - return ret; 210 - gpio_direction_output(112, 0); 211 - amba_apb_device_add(NULL, "mmci", NOMADIK_SDI_BASE, SZ_4K, IRQ_SDMMC, 0, &mmcsd_plat_data, 0x10180180); 212 - return 0; 213 - } 214 - module_init(nhk8815_mmcsd_init); 215 - 216 - static struct resource nhk8815_eth_resources[] = { 217 - { 218 - .name = "smc91x-regs", 219 - .start = 0x34000000 + 0x300, 220 - .end = 0x34000000 + SZ_64K - 1, 221 - .flags = IORESOURCE_MEM, 222 - }, { 223 - .start = NOMADIK_GPIO_TO_IRQ(115), 224 - .end = NOMADIK_GPIO_TO_IRQ(115), 225 - .flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING, 226 - } 227 - }; 228 - 229 - static struct platform_device nhk8815_eth_device = { 230 - .name = "smc91x", 231 - .resource = nhk8815_eth_resources, 232 - .num_resources = ARRAY_SIZE(nhk8815_eth_resources), 233 - }; 234 - 235 - static int __init nhk8815_eth_init(void) 236 - { 237 - int gpio_nr = 115; /* hardwired in the board */ 238 - int err; 239 - 240 - err = gpio_request(gpio_nr, "eth_irq"); 241 - if (!err) err = nmk_gpio_set_mode(gpio_nr, NMK_GPIO_ALT_GPIO); 242 - if (!err) err = gpio_direction_input(gpio_nr); 243 - if (err) 244 - pr_err("Error %i in %s\n", err, __func__); 245 - return err; 246 - } 247 - device_initcall(nhk8815_eth_init); 248 - 249 - static struct platform_device *nhk8815_platform_devices[] __initdata = { 250 - &nhk8815_nand_device, 251 - &nhk8815_onenand_device, 252 - &nhk8815_eth_device, 253 - /* will add more devices */ 254 - }; 255 - 256 - static void __init nomadik_timer_init(void) 257 - { 258 - u32 src_cr; 259 - 260 - /* Configure timer sources in "system reset controller" ctrl reg */ 261 - src_cr = readl(io_p2v(NOMADIK_SRC_BASE)); 262 - src_cr &= SRC_CR_INIT_MASK; 263 - src_cr |= SRC_CR_INIT_VAL; 264 - writel(src_cr, io_p2v(NOMADIK_SRC_BASE)); 265 - 266 - nmdk_timer_init(io_p2v(NOMADIK_MTU0_BASE), IRQ_MTU0); 267 - } 268 - 269 - static struct i2c_board_info __initdata nhk8815_i2c0_devices[] = { 270 - { 271 - I2C_BOARD_INFO("stw4811", 0x2d), 272 - }, 273 - }; 274 - 275 - static struct i2c_board_info __initdata nhk8815_i2c1_devices[] = { 276 - { 277 - I2C_BOARD_INFO("camera", 0x10), 278 - }, 279 - { 280 - I2C_BOARD_INFO("stw5095", 0x1a), 281 - }, 282 - { 283 - I2C_BOARD_INFO("lis3lv02dl", 0x1d), 284 - }, 285 - }; 286 - 287 - static struct i2c_board_info __initdata nhk8815_i2c2_devices[] = { 288 - { 289 - I2C_BOARD_INFO("stw4811-usb", 0x2d), 290 - }, 291 - }; 292 - 293 - static unsigned long out_low[] = { PIN_OUTPUT_LOW }; 294 - static unsigned long out_high[] = { PIN_OUTPUT_HIGH }; 295 - static unsigned long in_nopull[] = { PIN_INPUT_NOPULL }; 296 - static unsigned long in_pullup[] = { PIN_INPUT_PULLUP }; 297 - 298 - static struct pinctrl_map __initdata nhk8815_pinmap[] = { 299 - PIN_MAP_MUX_GROUP_DEFAULT("uart0", "pinctrl-stn8815", "u0_a_1", "u0"), 300 - PIN_MAP_MUX_GROUP_DEFAULT("uart1", "pinctrl-stn8815", "u1_a_1", "u1"), 301 - /* Hog in MMC/SD card mux */ 302 - PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-stn8815", "mmcsd_a_1", "mmcsd"), 303 - /* MCCLK */ 304 - PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO8_B10", out_low), 305 - /* MCCMD */ 306 - PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO9_A10", in_pullup), 307 - /* MCCMDDIR */ 308 - PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO10_C11", out_high), 309 - /* MCDAT3-0 */ 310 - PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO11_B11", in_pullup), 311 - PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO12_A11", in_pullup), 312 - PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO13_C12", in_pullup), 313 - PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO14_B12", in_pullup), 314 - /* MCDAT0DIR */ 315 - PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO15_A12", out_high), 316 - /* MCDAT31DIR */ 317 - PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO16_C13", out_high), 318 - /* MCMSFBCLK */ 319 - PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO24_C15", in_pullup), 320 - /* CD input GPIO */ 321 - PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO111_H21", in_nopull), 322 - /* CD bias drive */ 323 - PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO112_J21", out_low), 324 - }; 325 - 326 - static void __init nhk8815_platform_init(void) 327 - { 328 - pinctrl_register_mappings(nhk8815_pinmap, ARRAY_SIZE(nhk8815_pinmap)); 329 - cpu8815_platform_init(); 330 - nhk8815_onenand_init(); 331 - platform_add_devices(nhk8815_platform_devices, 332 - ARRAY_SIZE(nhk8815_platform_devices)); 333 - 334 - amba_apb_device_add(NULL, "uart0", NOMADIK_UART0_BASE, SZ_4K, IRQ_UART0, 0, NULL, 0); 335 - amba_apb_device_add(NULL, "uart1", NOMADIK_UART1_BASE, SZ_4K, IRQ_UART1, 0, NULL, 0); 336 - 337 - i2c_register_board_info(0, nhk8815_i2c0_devices, 338 - ARRAY_SIZE(nhk8815_i2c0_devices)); 339 - i2c_register_board_info(1, nhk8815_i2c1_devices, 340 - ARRAY_SIZE(nhk8815_i2c1_devices)); 341 - i2c_register_board_info(2, nhk8815_i2c2_devices, 342 - ARRAY_SIZE(nhk8815_i2c2_devices)); 343 - } 344 - 345 - MACHINE_START(NOMADIK, "NHK8815") 346 - /* Maintainer: ST MicroElectronics */ 347 - .atag_offset = 0x100, 348 - .map_io = cpu8815_map_io, 349 - .init_irq = cpu8815_init_irq, 350 - .init_time = nomadik_timer_init, 351 - .init_machine = nhk8815_platform_init, 352 - .restart = cpu8815_restart, 353 - MACHINE_END
+285 -115
arch/arm/mach-nomadik/cpu-8815.c
··· 25 25 #include <linux/slab.h> 26 26 #include <linux/irq.h> 27 27 #include <linux/dma-mapping.h> 28 - #include <linux/irqchip/arm-vic.h> 28 + #include <linux/irqchip.h> 29 29 #include <linux/platform_data/clk-nomadik.h> 30 30 #include <linux/platform_data/pinctrl-nomadik.h> 31 + #include <linux/pinctrl/machine.h> 32 + #include <linux/platform_data/clocksource-nomadik-mtu.h> 33 + #include <linux/of_irq.h> 34 + #include <linux/of_gpio.h> 35 + #include <linux/of_address.h> 36 + #include <linux/of_platform.h> 37 + #include <linux/mtd/fsmc.h> 38 + #include <linux/gpio.h> 39 + #include <linux/amba/mmci.h> 31 40 32 - #include <mach/hardware.h> 33 41 #include <mach/irqs.h> 42 + #include <asm/mach/arch.h> 34 43 #include <asm/mach/map.h> 44 + #include <asm/mach/time.h> 45 + #include <asm/mach-types.h> 35 46 36 47 #include <asm/cacheflush.h> 37 48 #include <asm/hardware/cache-l2x0.h> 38 49 39 - #include "cpu-8815.h" 40 - 41 - /* The 8815 has 4 GPIO blocks, let's register them immediately */ 42 - static resource_size_t __initdata cpu8815_gpio_base[] = { 43 - NOMADIK_GPIO0_BASE, 44 - NOMADIK_GPIO1_BASE, 45 - NOMADIK_GPIO2_BASE, 46 - NOMADIK_GPIO3_BASE, 47 - }; 48 - 49 - static struct platform_device * 50 - cpu8815_add_gpio(int id, resource_size_t addr, int irq, 51 - struct nmk_gpio_platform_data *pdata) 52 - { 53 - struct resource resources[] = { 54 - { 55 - .start = addr, 56 - .end = addr + 127, 57 - .flags = IORESOURCE_MEM, 58 - }, 59 - { 60 - .start = irq, 61 - .end = irq, 62 - .flags = IORESOURCE_IRQ, 63 - } 64 - }; 65 - 66 - return platform_device_register_resndata(NULL, "gpio", id, 67 - resources, ARRAY_SIZE(resources), 68 - pdata, sizeof(*pdata)); 69 - } 70 - 71 - void cpu8815_add_gpios(resource_size_t *base, int num, int irq, 72 - struct nmk_gpio_platform_data *pdata) 73 - { 74 - int first = 0; 75 - int i; 76 - 77 - for (i = 0; i < num; i++, first += 32, irq++) { 78 - pdata->first_gpio = first; 79 - pdata->first_irq = NOMADIK_GPIO_TO_IRQ(first); 80 - pdata->num_gpio = 32; 81 - 82 - cpu8815_add_gpio(i, base[i], irq, pdata); 83 - } 84 - } 85 - 86 - static inline void 87 - cpu8815_add_pinctrl(struct device *parent, const char *name) 88 - { 89 - struct platform_device_info pdevinfo = { 90 - .parent = parent, 91 - .name = name, 92 - .id = -1, 93 - }; 94 - 95 - platform_device_register_full(&pdevinfo); 96 - } 97 - 98 - static int __init cpu8815_init(void) 99 - { 100 - struct nmk_gpio_platform_data pdata = { 101 - /* No custom data yet */ 102 - }; 103 - 104 - cpu8815_add_gpios(cpu8815_gpio_base, ARRAY_SIZE(cpu8815_gpio_base), 105 - IRQ_GPIO0, &pdata); 106 - cpu8815_add_pinctrl(NULL, "pinctrl-stn8815"); 107 - amba_apb_device_add(NULL, "rng", NOMADIK_RNG_BASE, SZ_4K, 0, 0, NULL, 0); 108 - amba_apb_device_add(NULL, "rtc-pl031", NOMADIK_RTC_BASE, SZ_4K, IRQ_RTC_RTT, 0, NULL, 0); 109 - return 0; 110 - } 111 - arch_initcall(cpu8815_init); 112 - 113 - /* All SoC devices live in the same area (see hardware.h) */ 114 - static struct map_desc nomadik_io_desc[] __initdata = { 115 - { 116 - .virtual = NOMADIK_IO_VIRTUAL, 117 - .pfn = __phys_to_pfn(NOMADIK_IO_PHYSICAL), 118 - .length = NOMADIK_IO_SIZE, 119 - .type = MT_DEVICE, 120 - } 121 - /* static ram and secured ram may be added later */ 122 - }; 123 - 124 - void __init cpu8815_map_io(void) 125 - { 126 - iotable_init(nomadik_io_desc, ARRAY_SIZE(nomadik_io_desc)); 127 - } 128 - 129 - void __init cpu8815_init_irq(void) 130 - { 131 - /* This modified VIC cell has two register blocks, at 0 and 0x20 */ 132 - vic_init(io_p2v(NOMADIK_IC_BASE + 0x00), IRQ_VIC_START + 0, ~0, 0); 133 - vic_init(io_p2v(NOMADIK_IC_BASE + 0x20), IRQ_VIC_START + 32, ~0, 0); 134 - 135 - /* 136 - * Init clocks here so that they are available for system timer 137 - * initialization. 138 - */ 139 - nomadik_clk_init(); 140 - } 141 - 142 50 /* 143 - * This function is called from the board init ("init_machine"). 51 + * These are the only hard-coded address offsets we still have to use. 144 52 */ 145 - void __init cpu8815_platform_init(void) 53 + #define NOMADIK_FSMC_BASE 0x10100000 /* FSMC registers */ 54 + #define NOMADIK_SDRAMC_BASE 0x10110000 /* SDRAM Controller */ 55 + #define NOMADIK_CLCDC_BASE 0x10120000 /* CLCD Controller */ 56 + #define NOMADIK_MDIF_BASE 0x10120000 /* MDIF */ 57 + #define NOMADIK_DMA0_BASE 0x10130000 /* DMA0 Controller */ 58 + #define NOMADIK_IC_BASE 0x10140000 /* Vectored Irq Controller */ 59 + #define NOMADIK_DMA1_BASE 0x10150000 /* DMA1 Controller */ 60 + #define NOMADIK_USB_BASE 0x10170000 /* USB-OTG conf reg base */ 61 + #define NOMADIK_CRYP_BASE 0x10180000 /* Crypto processor */ 62 + #define NOMADIK_SHA1_BASE 0x10190000 /* SHA-1 Processor */ 63 + #define NOMADIK_XTI_BASE 0x101A0000 /* XTI */ 64 + #define NOMADIK_RNG_BASE 0x101B0000 /* Random number generator */ 65 + #define NOMADIK_SRC_BASE 0x101E0000 /* SRC base */ 66 + #define NOMADIK_WDOG_BASE 0x101E1000 /* Watchdog */ 67 + #define NOMADIK_MTU0_BASE 0x101E2000 /* Multiple Timer 0 */ 68 + #define NOMADIK_MTU1_BASE 0x101E3000 /* Multiple Timer 1 */ 69 + #define NOMADIK_GPIO0_BASE 0x101E4000 /* GPIO0 */ 70 + #define NOMADIK_GPIO1_BASE 0x101E5000 /* GPIO1 */ 71 + #define NOMADIK_GPIO2_BASE 0x101E6000 /* GPIO2 */ 72 + #define NOMADIK_GPIO3_BASE 0x101E7000 /* GPIO3 */ 73 + #define NOMADIK_RTC_BASE 0x101E8000 /* Real Time Clock base */ 74 + #define NOMADIK_PMU_BASE 0x101E9000 /* Power Management Unit */ 75 + #define NOMADIK_OWM_BASE 0x101EA000 /* One wire master */ 76 + #define NOMADIK_SCR_BASE 0x101EF000 /* Secure Control registers */ 77 + #define NOMADIK_MSP2_BASE 0x101F0000 /* MSP 2 interface */ 78 + #define NOMADIK_MSP1_BASE 0x101F1000 /* MSP 1 interface */ 79 + #define NOMADIK_UART2_BASE 0x101F2000 /* UART 2 interface */ 80 + #define NOMADIK_SSIRx_BASE 0x101F3000 /* SSI 8-ch rx interface */ 81 + #define NOMADIK_SSITx_BASE 0x101F4000 /* SSI 8-ch tx interface */ 82 + #define NOMADIK_MSHC_BASE 0x101F5000 /* Memory Stick(Pro) Host */ 83 + #define NOMADIK_SDI_BASE 0x101F6000 /* SD-card/MM-Card */ 84 + #define NOMADIK_I2C1_BASE 0x101F7000 /* I2C1 interface */ 85 + #define NOMADIK_I2C0_BASE 0x101F8000 /* I2C0 interface */ 86 + #define NOMADIK_MSP0_BASE 0x101F9000 /* MSP 0 interface */ 87 + #define NOMADIK_FIRDA_BASE 0x101FA000 /* FIrDA interface */ 88 + #define NOMADIK_UART1_BASE 0x101FB000 /* UART 1 interface */ 89 + #define NOMADIK_SSP_BASE 0x101FC000 /* SSP interface */ 90 + #define NOMADIK_UART0_BASE 0x101FD000 /* UART 0 interface */ 91 + #define NOMADIK_SGA_BASE 0x101FE000 /* SGA interface */ 92 + #define NOMADIK_L2CC_BASE 0x10210000 /* L2 Cache controller */ 93 + #define NOMADIK_UART1_VBASE 0xF01FB000 94 + 95 + static unsigned long out_low[] = { PIN_OUTPUT_LOW }; 96 + static unsigned long out_high[] = { PIN_OUTPUT_HIGH }; 97 + static unsigned long in_nopull[] = { PIN_INPUT_NOPULL }; 98 + static unsigned long in_pullup[] = { PIN_INPUT_PULLUP }; 99 + 100 + static struct pinctrl_map __initdata nhk8815_pinmap[] = { 101 + PIN_MAP_MUX_GROUP_DEFAULT("uart0", "pinctrl-stn8815", "u0_a_1", "u0"), 102 + PIN_MAP_MUX_GROUP_DEFAULT("uart1", "pinctrl-stn8815", "u1_a_1", "u1"), 103 + /* Hog in MMC/SD card mux */ 104 + PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-stn8815", "mmcsd_a_1", "mmcsd"), 105 + /* MCCLK */ 106 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO8_B10", out_low), 107 + /* MCCMD */ 108 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO9_A10", in_pullup), 109 + /* MCCMDDIR */ 110 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO10_C11", out_high), 111 + /* MCDAT3-0 */ 112 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO11_B11", in_pullup), 113 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO12_A11", in_pullup), 114 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO13_C12", in_pullup), 115 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO14_B12", in_pullup), 116 + /* MCDAT0DIR */ 117 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO15_A12", out_high), 118 + /* MCDAT31DIR */ 119 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO16_C13", out_high), 120 + /* MCMSFBCLK */ 121 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO24_C15", in_pullup), 122 + /* CD input GPIO */ 123 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO111_H21", in_nopull), 124 + /* CD bias drive */ 125 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO112_J21", out_low), 126 + /* I2C0 */ 127 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO62_D3", in_pullup), 128 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO63_D2", in_pullup), 129 + /* I2C1 */ 130 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO53_L4", in_pullup), 131 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO54_L3", in_pullup), 132 + /* I2C2 */ 133 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO73_C21", in_pullup), 134 + PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-stn8815", "GPIO74_C20", in_pullup), 135 + }; 136 + 137 + /* This is needed for LL-debug/earlyprintk/debug-macro.S */ 138 + static struct map_desc cpu8815_io_desc[] __initdata = { 139 + { 140 + .virtual = NOMADIK_UART1_VBASE, 141 + .pfn = __phys_to_pfn(NOMADIK_UART1_BASE), 142 + .length = SZ_4K, 143 + .type = MT_DEVICE, 144 + }, 145 + }; 146 + 147 + static void __init cpu8815_map_io(void) 146 148 { 147 - #ifdef CONFIG_CACHE_L2X0 148 - /* At full speed latency must be >=2, so 0x249 in low bits */ 149 - l2x0_init(io_p2v(NOMADIK_L2CC_BASE), 0x00730249, 0xfe000fff); 150 - #endif 151 - return; 149 + iotable_init(cpu8815_io_desc, ARRAY_SIZE(cpu8815_io_desc)); 152 150 } 153 151 154 - void cpu8815_restart(char mode, const char *cmd) 152 + static void cpu8815_restart(char mode, const char *cmd) 155 153 { 156 - void __iomem *src_rstsr = io_p2v(NOMADIK_SRC_BASE + 0x18); 154 + void __iomem *srcbase = ioremap(NOMADIK_SRC_BASE, SZ_4K); 157 155 158 156 /* FIXME: use egpio when implemented */ 159 157 160 158 /* Write anything to Reset status register */ 161 - writel(1, src_rstsr); 159 + writel(1, srcbase + 0x18); 162 160 } 161 + 162 + /* Initial value for SRC control register: all timers use MXTAL/8 source */ 163 + #define SRC_CR_INIT_MASK 0x00007fff 164 + #define SRC_CR_INIT_VAL 0x2aaa8000 165 + 166 + static void __init cpu8815_timer_init_of(void) 167 + { 168 + struct device_node *mtu; 169 + void __iomem *base; 170 + int irq; 171 + u32 src_cr; 172 + 173 + /* We need this to be up now */ 174 + nomadik_clk_init(); 175 + 176 + mtu = of_find_node_by_path("/mtu0"); 177 + if (!mtu) 178 + return; 179 + base = of_iomap(mtu, 0); 180 + if (WARN_ON(!base)) 181 + return; 182 + irq = irq_of_parse_and_map(mtu, 0); 183 + 184 + pr_info("Remapped MTU @ %p, irq: %d\n", base, irq); 185 + 186 + /* Configure timer sources in "system reset controller" ctrl reg */ 187 + src_cr = readl(base); 188 + src_cr &= SRC_CR_INIT_MASK; 189 + src_cr |= SRC_CR_INIT_VAL; 190 + writel(src_cr, base); 191 + 192 + nmdk_timer_init(base, irq); 193 + } 194 + 195 + static struct fsmc_nand_timings cpu8815_nand_timings = { 196 + .thiz = 0, 197 + .thold = 0x10, 198 + .twait = 0x0A, 199 + .tset = 0, 200 + }; 201 + 202 + static struct fsmc_nand_platform_data cpu8815_nand_data = { 203 + .nand_timings = &cpu8815_nand_timings, 204 + }; 205 + 206 + /* 207 + * The SMSC911x IRQ is connected to a GPIO pin, but the driver expects 208 + * to simply request an IRQ passed as a resource. So the GPIO pin needs 209 + * to be requested by this hog and set as input. 210 + */ 211 + static int __init cpu8815_eth_init(void) 212 + { 213 + struct device_node *eth; 214 + int gpio, irq, err; 215 + 216 + eth = of_find_node_by_path("/usb-s8815/ethernet-gpio"); 217 + if (!eth) { 218 + pr_info("could not find any ethernet GPIO\n"); 219 + return 0; 220 + } 221 + gpio = of_get_gpio(eth, 0); 222 + err = gpio_request(gpio, "eth_irq"); 223 + if (err) { 224 + pr_info("failed to request ethernet GPIO\n"); 225 + return -ENODEV; 226 + } 227 + err = gpio_direction_input(gpio); 228 + if (err) { 229 + pr_info("failed to set ethernet GPIO as input\n"); 230 + return -ENODEV; 231 + } 232 + irq = gpio_to_irq(gpio); 233 + pr_info("enabled USB-S8815 ethernet GPIO %d, IRQ %d\n", gpio, irq); 234 + return 0; 235 + } 236 + device_initcall(cpu8815_eth_init); 237 + 238 + /* 239 + * TODO: 240 + * cannot be set from device tree, convert to a proper DT 241 + * binding. 242 + */ 243 + static struct mmci_platform_data mmcsd_plat_data = { 244 + .ocr_mask = MMC_VDD_29_30, 245 + }; 246 + 247 + /* 248 + * This GPIO pin turns on a line that is used to detect card insertion 249 + * on this board. 250 + */ 251 + static int __init cpu8815_mmcsd_init(void) 252 + { 253 + struct device_node *cdbias; 254 + int gpio, err; 255 + 256 + cdbias = of_find_node_by_path("/usb-s8815/mmcsd-gpio"); 257 + if (!cdbias) { 258 + pr_info("could not find MMC/SD card detect bias node\n"); 259 + return 0; 260 + } 261 + gpio = of_get_gpio(cdbias, 0); 262 + if (gpio < 0) { 263 + pr_info("could not obtain MMC/SD card detect bias GPIO\n"); 264 + return 0; 265 + } 266 + err = gpio_request(gpio, "card detect bias"); 267 + if (err) { 268 + pr_info("failed to request card detect bias GPIO %d\n", gpio); 269 + return -ENODEV; 270 + } 271 + err = gpio_direction_output(gpio, 0); 272 + if (err){ 273 + pr_info("failed to set GPIO %d as output, low\n", gpio); 274 + return err; 275 + } 276 + pr_info("enabled USB-S8815 CD bias GPIO %d, low\n", gpio); 277 + return 0; 278 + } 279 + device_initcall(cpu8815_mmcsd_init); 280 + 281 + 282 + /* These are mostly to get the right device names for the clock lookups */ 283 + static struct of_dev_auxdata cpu8815_auxdata_lookup[] __initdata = { 284 + OF_DEV_AUXDATA("st,nomadik-gpio", NOMADIK_GPIO0_BASE, 285 + "gpio.0", NULL), 286 + OF_DEV_AUXDATA("st,nomadik-gpio", NOMADIK_GPIO1_BASE, 287 + "gpio.1", NULL), 288 + OF_DEV_AUXDATA("st,nomadik-gpio", NOMADIK_GPIO2_BASE, 289 + "gpio.2", NULL), 290 + OF_DEV_AUXDATA("st,nomadik-gpio", NOMADIK_GPIO3_BASE, 291 + "gpio.3", NULL), 292 + OF_DEV_AUXDATA("stericsson,nmk-pinctrl-stn8815", 0, 293 + "pinctrl-stn8815", NULL), 294 + OF_DEV_AUXDATA("arm,primecell", NOMADIK_UART0_BASE, 295 + "uart0", NULL), 296 + OF_DEV_AUXDATA("arm,primecell", NOMADIK_UART1_BASE, 297 + "uart1", NULL), 298 + OF_DEV_AUXDATA("arm,primecell", NOMADIK_RNG_BASE, 299 + "rng", NULL), 300 + OF_DEV_AUXDATA("arm,primecell", NOMADIK_RTC_BASE, 301 + "rtc-pl031", NULL), 302 + OF_DEV_AUXDATA("stericsson,fsmc-nand", NOMADIK_FSMC_BASE, 303 + "fsmc-nand", &cpu8815_nand_data), 304 + OF_DEV_AUXDATA("arm,primecell", NOMADIK_SDI_BASE, 305 + "mmci", &mmcsd_plat_data), 306 + { /* sentinel */ }, 307 + }; 308 + 309 + static void __init cpu8815_init_of(void) 310 + { 311 + #ifdef CONFIG_CACHE_L2X0 312 + /* At full speed latency must be >=2, so 0x249 in low bits */ 313 + l2x0_of_init(0x00730249, 0xfe000fff); 314 + #endif 315 + pinctrl_register_mappings(nhk8815_pinmap, ARRAY_SIZE(nhk8815_pinmap)); 316 + of_platform_populate(NULL, of_default_bus_match_table, 317 + cpu8815_auxdata_lookup, NULL); 318 + } 319 + 320 + static const char * cpu8815_board_compat[] = { 321 + "calaosystems,usb-s8815", 322 + NULL, 323 + }; 324 + 325 + DT_MACHINE_START(NOMADIK_DT, "Nomadik STn8815") 326 + .map_io = cpu8815_map_io, 327 + .init_irq = irqchip_init, 328 + .init_time = cpu8815_timer_init_of, 329 + .init_machine = cpu8815_init_of, 330 + .restart = cpu8815_restart, 331 + .dt_compat = cpu8815_board_compat, 332 + MACHINE_END
-4
arch/arm/mach-nomadik/cpu-8815.h
··· 1 - extern void cpu8815_map_io(void); 2 - extern void cpu8815_platform_init(void); 3 - extern void cpu8815_init_irq(void); 4 - extern void cpu8815_restart(char, const char *);
-88
arch/arm/mach-nomadik/i2c-8815nhk.c
··· 1 - #include <linux/module.h> 2 - #include <linux/init.h> 3 - #include <linux/i2c.h> 4 - #include <linux/i2c-algo-bit.h> 5 - #include <linux/i2c-gpio.h> 6 - #include <linux/platform_device.h> 7 - #include <linux/platform_data/pinctrl-nomadik.h> 8 - 9 - /* 10 - * There are two busses in the 8815NHK. 11 - * They could, in theory, be driven by the hardware component, but we 12 - * use bit-bang through GPIO by now, to keep things simple 13 - */ 14 - 15 - /* I2C0 connected to the STw4811 power management chip */ 16 - static struct i2c_gpio_platform_data nhk8815_i2c_data0 = { 17 - /* keep defaults for timeouts; pins are push-pull bidirectional */ 18 - .scl_pin = 62, 19 - .sda_pin = 63, 20 - }; 21 - 22 - /* I2C1 connected to various sensors */ 23 - static struct i2c_gpio_platform_data nhk8815_i2c_data1 = { 24 - /* keep defaults for timeouts; pins are push-pull bidirectional */ 25 - .scl_pin = 53, 26 - .sda_pin = 54, 27 - }; 28 - 29 - /* I2C2 connected to the USB portions of the STw4811 only */ 30 - static struct i2c_gpio_platform_data nhk8815_i2c_data2 = { 31 - /* keep defaults for timeouts; pins are push-pull bidirectional */ 32 - .scl_pin = 73, 33 - .sda_pin = 74, 34 - }; 35 - 36 - static struct platform_device nhk8815_i2c_dev0 = { 37 - .name = "i2c-gpio", 38 - .id = 0, 39 - .dev = { 40 - .platform_data = &nhk8815_i2c_data0, 41 - }, 42 - }; 43 - 44 - static struct platform_device nhk8815_i2c_dev1 = { 45 - .name = "i2c-gpio", 46 - .id = 1, 47 - .dev = { 48 - .platform_data = &nhk8815_i2c_data1, 49 - }, 50 - }; 51 - 52 - static struct platform_device nhk8815_i2c_dev2 = { 53 - .name = "i2c-gpio", 54 - .id = 2, 55 - .dev = { 56 - .platform_data = &nhk8815_i2c_data2, 57 - }, 58 - }; 59 - 60 - static pin_cfg_t cpu8815_pins_i2c[] = { 61 - PIN_CFG_INPUT(62, GPIO, PULLUP), 62 - PIN_CFG_INPUT(63, GPIO, PULLUP), 63 - PIN_CFG_INPUT(53, GPIO, PULLUP), 64 - PIN_CFG_INPUT(54, GPIO, PULLUP), 65 - PIN_CFG_INPUT(73, GPIO, PULLUP), 66 - PIN_CFG_INPUT(74, GPIO, PULLUP), 67 - }; 68 - 69 - static int __init nhk8815_i2c_init(void) 70 - { 71 - nmk_config_pins(cpu8815_pins_i2c, ARRAY_SIZE(cpu8815_pins_i2c)); 72 - platform_device_register(&nhk8815_i2c_dev0); 73 - platform_device_register(&nhk8815_i2c_dev1); 74 - platform_device_register(&nhk8815_i2c_dev2); 75 - 76 - return 0; 77 - } 78 - 79 - static void __exit nhk8815_i2c_exit(void) 80 - { 81 - platform_device_unregister(&nhk8815_i2c_dev0); 82 - platform_device_unregister(&nhk8815_i2c_dev1); 83 - platform_device_unregister(&nhk8815_i2c_dev2); 84 - return; 85 - } 86 - 87 - module_init(nhk8815_i2c_init); 88 - module_exit(nhk8815_i2c_exit);
-90
arch/arm/mach-nomadik/include/mach/hardware.h
··· 1 - /* 2 - * This file contains the hardware definitions of the Nomadik. 3 - * 4 - * This program is free software; you can redistribute it and/or modify 5 - * it under the terms of the GNU General Public License as published by 6 - * the Free Software Foundation; either version 2 of the License, or 7 - * (at your option) any later version. 8 - * 9 - * This program is distributed in the hope that it will be useful, 10 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 - * GNU General Public License for more details. 13 - * 14 - * YOU should have received a copy of the GNU General Public License 15 - * along with this program; if not, write to the Free Software 16 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 - */ 18 - #ifndef __ASM_ARCH_HARDWARE_H 19 - #define __ASM_ARCH_HARDWARE_H 20 - 21 - /* Nomadik registers live from 0x1000.0000 to 0x1023.0000 -- currently */ 22 - #define NOMADIK_IO_VIRTUAL 0xF0000000 /* VA of IO */ 23 - #define NOMADIK_IO_PHYSICAL 0x10000000 /* PA of IO */ 24 - #define NOMADIK_IO_SIZE 0x00300000 /* 3MB for all regs */ 25 - 26 - /* used in C code, so cast to proper type */ 27 - #define io_p2v(x) ((void __iomem *)(x) \ 28 - - NOMADIK_IO_PHYSICAL + NOMADIK_IO_VIRTUAL) 29 - #define io_v2p(x) ((unsigned long)(x) \ 30 - - NOMADIK_IO_VIRTUAL + NOMADIK_IO_PHYSICAL) 31 - 32 - /* used in asm code, so no casts */ 33 - #define IO_ADDRESS(x) IOMEM((x) - NOMADIK_IO_PHYSICAL + NOMADIK_IO_VIRTUAL) 34 - 35 - /* 36 - * Base address defination for Nomadik Onchip Logic Block 37 - */ 38 - #define NOMADIK_FSMC_BASE 0x10100000 /* FSMC registers */ 39 - #define NOMADIK_SDRAMC_BASE 0x10110000 /* SDRAM Controller */ 40 - #define NOMADIK_CLCDC_BASE 0x10120000 /* CLCD Controller */ 41 - #define NOMADIK_MDIF_BASE 0x10120000 /* MDIF */ 42 - #define NOMADIK_DMA0_BASE 0x10130000 /* DMA0 Controller */ 43 - #define NOMADIK_IC_BASE 0x10140000 /* Vectored Irq Controller */ 44 - #define NOMADIK_DMA1_BASE 0x10150000 /* DMA1 Controller */ 45 - #define NOMADIK_USB_BASE 0x10170000 /* USB-OTG conf reg base */ 46 - #define NOMADIK_CRYP_BASE 0x10180000 /* Crypto processor */ 47 - #define NOMADIK_SHA1_BASE 0x10190000 /* SHA-1 Processor */ 48 - #define NOMADIK_XTI_BASE 0x101A0000 /* XTI */ 49 - #define NOMADIK_RNG_BASE 0x101B0000 /* Random number generator */ 50 - #define NOMADIK_SRC_BASE 0x101E0000 /* SRC base */ 51 - #define NOMADIK_WDOG_BASE 0x101E1000 /* Watchdog */ 52 - #define NOMADIK_MTU0_BASE 0x101E2000 /* Multiple Timer 0 */ 53 - #define NOMADIK_MTU1_BASE 0x101E3000 /* Multiple Timer 1 */ 54 - #define NOMADIK_GPIO0_BASE 0x101E4000 /* GPIO0 */ 55 - #define NOMADIK_GPIO1_BASE 0x101E5000 /* GPIO1 */ 56 - #define NOMADIK_GPIO2_BASE 0x101E6000 /* GPIO2 */ 57 - #define NOMADIK_GPIO3_BASE 0x101E7000 /* GPIO3 */ 58 - #define NOMADIK_RTC_BASE 0x101E8000 /* Real Time Clock base */ 59 - #define NOMADIK_PMU_BASE 0x101E9000 /* Power Management Unit */ 60 - #define NOMADIK_OWM_BASE 0x101EA000 /* One wire master */ 61 - #define NOMADIK_SCR_BASE 0x101EF000 /* Secure Control registers */ 62 - #define NOMADIK_MSP2_BASE 0x101F0000 /* MSP 2 interface */ 63 - #define NOMADIK_MSP1_BASE 0x101F1000 /* MSP 1 interface */ 64 - #define NOMADIK_UART2_BASE 0x101F2000 /* UART 2 interface */ 65 - #define NOMADIK_SSIRx_BASE 0x101F3000 /* SSI 8-ch rx interface */ 66 - #define NOMADIK_SSITx_BASE 0x101F4000 /* SSI 8-ch tx interface */ 67 - #define NOMADIK_MSHC_BASE 0x101F5000 /* Memory Stick(Pro) Host */ 68 - #define NOMADIK_SDI_BASE 0x101F6000 /* SD-card/MM-Card */ 69 - #define NOMADIK_I2C1_BASE 0x101F7000 /* I2C1 interface */ 70 - #define NOMADIK_I2C0_BASE 0x101F8000 /* I2C0 interface */ 71 - #define NOMADIK_MSP0_BASE 0x101F9000 /* MSP 0 interface */ 72 - #define NOMADIK_FIRDA_BASE 0x101FA000 /* FIrDA interface */ 73 - #define NOMADIK_UART1_BASE 0x101FB000 /* UART 1 interface */ 74 - #define NOMADIK_SSP_BASE 0x101FC000 /* SSP interface */ 75 - #define NOMADIK_UART0_BASE 0x101FD000 /* UART 0 interface */ 76 - #define NOMADIK_SGA_BASE 0x101FE000 /* SGA interface */ 77 - #define NOMADIK_L2CC_BASE 0x10210000 /* L2 Cache controller */ 78 - 79 - /* Other ranges, not for p2v/v2p */ 80 - #define NOMADIK_BACKUP_RAM 0x80010000 81 - #define NOMADIK_EBROM 0x80000000 /* Embedded boot ROM */ 82 - #define NOMADIK_HAMACV_DMEM_BASE 0xA0100000 /* HAMACV Data Memory Start */ 83 - #define NOMADIK_HAMACV_DMEM_END 0xA01FFFFF /* HAMACV Data Memory End */ 84 - #define NOMADIK_HAMACA_DMEM 0xA0200000 /* HAMACA Data Memory Space */ 85 - 86 - #define NOMADIK_FSMC_VA IO_ADDRESS(NOMADIK_FSMC_BASE) 87 - #define NOMADIK_MTU0_VA IO_ADDRESS(NOMADIK_MTU0_BASE) 88 - #define NOMADIK_MTU1_VA IO_ADDRESS(NOMADIK_MTU1_BASE) 89 - 90 - #endif /* __ASM_ARCH_HARDWARE_H */
-2
arch/arm/mach-nomadik/include/mach/irqs.h
··· 20 20 #ifndef __ASM_ARCH_IRQS_H 21 21 #define __ASM_ARCH_IRQS_H 22 22 23 - #include <mach/hardware.h> 24 - 25 23 #define IRQ_VIC_START 32 /* first VIC interrupt is 1 */ 26 24 27 25 /*
-1
arch/arm/mach-nomadik/include/mach/uncompress.h
··· 21 21 22 22 #include <asm/setup.h> 23 23 #include <asm/io.h> 24 - #include <mach/hardware.h> 25 24 26 25 /* we need the constants in amba/serial.h, but it refers to amba_device */ 27 26 struct amba_device;
+15 -3
drivers/clk/tegra/clk-super.c
··· 73 73 { 74 74 struct tegra_clk_super_mux *mux = to_clk_super_mux(hw); 75 75 u32 val, state; 76 + int err = 0; 76 77 u8 parent_index, shift; 78 + unsigned long flags = 0; 79 + 80 + if (mux->lock) 81 + spin_lock_irqsave(mux->lock, flags); 77 82 78 83 val = readl_relaxed(mux->reg); 79 84 state = val & SUPER_STATE_MASK; ··· 97 92 (index == mux->pllx_index))) { 98 93 parent_index = clk_super_get_parent(hw); 99 94 if ((parent_index == mux->div2_index) || 100 - (parent_index == mux->pllx_index)) 101 - return -EINVAL; 95 + (parent_index == mux->pllx_index)) { 96 + err = -EINVAL; 97 + goto out; 98 + } 102 99 103 100 val ^= SUPER_LP_DIV2_BYPASS; 104 101 writel_relaxed(val, mux->reg); ··· 114 107 115 108 writel_relaxed(val, mux->reg); 116 109 udelay(2); 117 - return 0; 110 + 111 + out: 112 + if (mux->lock) 113 + spin_unlock_irqrestore(mux->lock, flags); 114 + 115 + return err; 118 116 } 119 117 120 118 const struct clk_ops tegra_clk_super_ops = {
+14 -8
drivers/clk/tegra/clk-tegra20.c
··· 194 194 static void __iomem *pmc_base; 195 195 196 196 static DEFINE_SPINLOCK(pll_div_lock); 197 + static DEFINE_SPINLOCK(sysrate_lock); 197 198 198 199 #define TEGRA_INIT_DATA_MUX(_name, _con_id, _dev_id, _parents, _offset, \ 199 200 _clk_num, _regs, _gate_flags, _clk_id) \ ··· 240 239 uartb = 96, vfir, spdif_in, spdif_out, vi, vi_sensor, tvo, cve, 241 240 osc, clk_32k, clk_m, sclk, cclk, hclk, pclk, blink, pll_a, pll_a_out0, 242 241 pll_c, pll_c_out1, pll_d, pll_d_out0, pll_e, pll_m, pll_m_out1, 243 - pll_p, pll_p_out1, pll_p_out2, pll_p_out3, pll_p_out4, pll_u, 244 - pll_x, audio, pll_ref, twd, clk_max, 242 + pll_p, pll_p_out1, pll_p_out2, pll_p_out3, pll_p_out4, pll_s, pll_u, 243 + pll_x, cop, audio, pll_ref, twd, clk_max, 245 244 }; 246 245 247 246 static struct clk *clks[clk_max]; ··· 769 768 770 769 /* HCLK */ 771 770 clk = clk_register_divider(NULL, "hclk_div", "sclk", 0, 772 - clk_base + CLK_SYSTEM_RATE, 4, 2, 0, NULL); 771 + clk_base + CLK_SYSTEM_RATE, 4, 2, 0, 772 + &sysrate_lock); 773 773 clk = clk_register_gate(NULL, "hclk", "hclk_div", CLK_SET_RATE_PARENT, 774 774 clk_base + CLK_SYSTEM_RATE, 7, 775 - CLK_GATE_SET_TO_DISABLE, NULL); 775 + CLK_GATE_SET_TO_DISABLE, &sysrate_lock); 776 776 clk_register_clkdev(clk, "hclk", NULL); 777 777 clks[hclk] = clk; 778 778 779 779 /* PCLK */ 780 780 clk = clk_register_divider(NULL, "pclk_div", "hclk", 0, 781 - clk_base + CLK_SYSTEM_RATE, 0, 2, 0, NULL); 781 + clk_base + CLK_SYSTEM_RATE, 0, 2, 0, 782 + &sysrate_lock); 782 783 clk = clk_register_gate(NULL, "pclk", "pclk_div", CLK_SET_RATE_PARENT, 783 784 clk_base + CLK_SYSTEM_RATE, 3, 784 - CLK_GATE_SET_TO_DISABLE, NULL); 785 + CLK_GATE_SET_TO_DISABLE, &sysrate_lock); 785 786 clk_register_clkdev(clk, "pclk", NULL); 786 787 clks[pclk] = clk; 787 788 ··· 1254 1251 {csite, clk_max, 0, 1}, 1255 1252 {emc, clk_max, 0, 1}, 1256 1253 {cclk, clk_max, 0, 1}, 1257 - {uarta, pll_p, 0, 1}, 1258 - {uartd, pll_p, 0, 1}, 1254 + {uarta, pll_p, 0, 0}, 1255 + {uartb, pll_p, 0, 0}, 1256 + {uartc, pll_p, 0, 0}, 1257 + {uartd, pll_p, 0, 0}, 1258 + {uarte, pll_p, 0, 0}, 1259 1259 {usbd, clk_max, 12000000, 0}, 1260 1260 {usb2, clk_max, 12000000, 0}, 1261 1261 {usb3, clk_max, 12000000, 0},
+27 -20
drivers/clk/tegra/clk-tegra30.c
··· 275 275 static DEFINE_SPINLOCK(pll_div_lock); 276 276 static DEFINE_SPINLOCK(cml_lock); 277 277 static DEFINE_SPINLOCK(pll_d_lock); 278 + static DEFINE_SPINLOCK(sysrate_lock); 278 279 279 280 #define TEGRA_INIT_DATA_MUX(_name, _con_id, _dev_id, _parents, _offset, \ 280 281 _clk_num, _regs, _gate_flags, _clk_id) \ ··· 328 327 kbc = 36, statmon, pmc, kfuse = 40, sbc1, nor, sbc2 = 44, sbc3 = 46, 329 328 i2c5, dsia, mipi = 50, hdmi, csi, tvdac, i2c2, uartc, emc = 57, usb2, 330 329 usb3, mpe, vde, bsea, bsev, speedo, uartd, uarte, i2c3, sbc4, sdmmc3, 331 - pcie, owr, afi, csite, pciex, avpucq, la, dtv = 79, ndspeed, i2c_slow, 330 + pcie, owr, afi, csite, pciex, avpucq, la, dtv = 79, ndspeed, i2cslow, 332 331 dsib, irama = 84, iramb, iramc, iramd, cram2, audio_2x = 90, csus = 92, 333 332 cdev1, cdev2, cpu_g = 96, cpu_lp, gr3d2, mselect, tsensor, i2s3, i2s4, 334 333 i2c4, sbc5, sbc6, d_audio, apbif, dam0, dam1, dam2, hda2codec_2x, 335 334 atomics, audio0_2x, audio1_2x, audio2_2x, audio3_2x, audio4_2x, 336 - spdif_2x, actmon, extern1, extern2, extern3, sata_oob, sata, hda, se, 337 - hda2hdmi, sata_cold, uartb = 160, vfir, spdif_out, spdif_in, vi, 338 - vi_sensor, fuse, fuse_burn, cve, tvo, clk_32k, clk_m, clk_m_div2, 335 + spdif_2x, actmon, extern1, extern2, extern3, sata_oob, sata, hda, 336 + se = 127, hda2hdmi, sata_cold, uartb = 160, vfir, spdif_in, spdif_out, 337 + vi, vi_sensor, fuse, fuse_burn, cve, tvo, clk_32k, clk_m, clk_m_div2, 339 338 clk_m_div4, pll_ref, pll_c, pll_c_out1, pll_m, pll_m_out1, pll_p, 340 339 pll_p_out1, pll_p_out2, pll_p_out3, pll_p_out4, pll_a, pll_a_out0, 341 340 pll_d, pll_d_out0, pll_d2, pll_d2_out0, pll_u, pll_x, pll_x_out0, pll_e, 342 341 spdif_in_sync, i2s0_sync, i2s1_sync, i2s2_sync, i2s3_sync, i2s4_sync, 343 342 vimclk_sync, audio0, audio1, audio2, audio3, audio4, spdif, clk_out_1, 344 343 clk_out_2, clk_out_3, sclk, blink, cclk_g, cclk_lp, twd, cml0, cml1, 345 - i2cslow, hclk, pclk, clk_out_1_mux = 300, clk_max 344 + hclk, pclk, clk_out_1_mux = 300, clk_max 346 345 }; 347 346 348 347 static struct clk *clks[clk_max]; ··· 1250 1249 1251 1250 } 1252 1251 1253 - const char *cclk_g_parents[] = { "clk_m", "pll_c", "clk_32k", "pll_m", 1254 - "pll_p_cclkg", "pll_p_out4_cclkg", 1255 - "pll_p_out3_cclkg", "unused", "pll_x" }; 1256 - const char *cclk_lp_parents[] = { "clk_m", "pll_c", "clk_32k", "pll_m", 1257 - "pll_p_cclklp", "pll_p_out4_cclklp", 1258 - "pll_p_out3_cclklp", "unused", "pll_x", 1259 - "pll_x_out0" }; 1260 - const char *sclk_parents[] = { "clk_m", "pll_c_out1", "pll_p_out4", 1261 - "pll_p_out3", "pll_p_out2", "unused", 1262 - "clk_32k", "pll_m_out1" }; 1252 + static const char *cclk_g_parents[] = { "clk_m", "pll_c", "clk_32k", "pll_m", 1253 + "pll_p_cclkg", "pll_p_out4_cclkg", 1254 + "pll_p_out3_cclkg", "unused", "pll_x" }; 1255 + static const char *cclk_lp_parents[] = { "clk_m", "pll_c", "clk_32k", "pll_m", 1256 + "pll_p_cclklp", "pll_p_out4_cclklp", 1257 + "pll_p_out3_cclklp", "unused", "pll_x", 1258 + "pll_x_out0" }; 1259 + static const char *sclk_parents[] = { "clk_m", "pll_c_out1", "pll_p_out4", 1260 + "pll_p_out3", "pll_p_out2", "unused", 1261 + "clk_32k", "pll_m_out1" }; 1263 1262 1264 1263 static void __init tegra30_super_clk_init(void) 1265 1264 { ··· 1349 1348 1350 1349 /* HCLK */ 1351 1350 clk = clk_register_divider(NULL, "hclk_div", "sclk", 0, 1352 - clk_base + SYSTEM_CLK_RATE, 4, 2, 0, NULL); 1351 + clk_base + SYSTEM_CLK_RATE, 4, 2, 0, 1352 + &sysrate_lock); 1353 1353 clk = clk_register_gate(NULL, "hclk", "hclk_div", CLK_SET_RATE_PARENT, 1354 1354 clk_base + SYSTEM_CLK_RATE, 7, 1355 - CLK_GATE_SET_TO_DISABLE, NULL); 1355 + CLK_GATE_SET_TO_DISABLE, &sysrate_lock); 1356 1356 clk_register_clkdev(clk, "hclk", NULL); 1357 1357 clks[hclk] = clk; 1358 1358 1359 1359 /* PCLK */ 1360 1360 clk = clk_register_divider(NULL, "pclk_div", "hclk", 0, 1361 - clk_base + SYSTEM_CLK_RATE, 0, 2, 0, NULL); 1361 + clk_base + SYSTEM_CLK_RATE, 0, 2, 0, 1362 + &sysrate_lock); 1362 1363 clk = clk_register_gate(NULL, "pclk", "pclk_div", CLK_SET_RATE_PARENT, 1363 1364 clk_base + SYSTEM_CLK_RATE, 3, 1364 - CLK_GATE_SET_TO_DISABLE, NULL); 1365 + CLK_GATE_SET_TO_DISABLE, &sysrate_lock); 1365 1366 clk_register_clkdev(clk, "pclk", NULL); 1366 1367 clks[pclk] = clk; 1367 1368 ··· 1877 1874 }; 1878 1875 1879 1876 static __initdata struct tegra_clk_init_table init_table[] = { 1880 - {uarta, pll_p, 408000000, 1}, 1877 + {uarta, pll_p, 408000000, 0}, 1878 + {uartb, pll_p, 408000000, 0}, 1879 + {uartc, pll_p, 408000000, 0}, 1880 + {uartd, pll_p, 408000000, 0}, 1881 + {uarte, pll_p, 408000000, 0}, 1881 1882 {pll_a, clk_max, 564480000, 1}, 1882 1883 {pll_a_out0, clk_max, 11289600, 1}, 1883 1884 {extern1, pll_a_out0, 0, 1},
+1
drivers/mtd/nand/fsmc_nand.c
··· 1211 1211 #ifdef CONFIG_OF 1212 1212 static const struct of_device_id fsmc_nand_id_table[] = { 1213 1213 { .compatible = "st,spear600-fsmc-nand" }, 1214 + { .compatible = "stericsson,fsmc-nand" }, 1214 1215 {} 1215 1216 }; 1216 1217 MODULE_DEVICE_TABLE(of, fsmc_nand_id_table);
+4
drivers/pinctrl/pinctrl-nomadik.c
··· 2104 2104 2105 2105 static const struct of_device_id nmk_pinctrl_match[] = { 2106 2106 { 2107 + .compatible = "stericsson,nmk-pinctrl-stn8815", 2108 + .data = (void *)PINCTRL_NMK_STN8815, 2109 + }, 2110 + { 2107 2111 .compatible = "stericsson,nmk-pinctrl", 2108 2112 .data = (void *)PINCTRL_NMK_DB8500, 2109 2113 },