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

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

Pull ARM SoC device tree updates (part 2) from Arnd Bergmann:
"These are mostly new device tree bindings for existing drivers, as
well as changes to the device tree source files to add support for
those devices, and a couple of new boards, most notably Samsung's
Exynos5 based Chromebook.

The changes depend on earlier platform specific updates and touch the
usual platforms: omap, exynos, tegra, mxs, mvebu and davinci."

* tag 'dt-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (169 commits)
ARM: exynos: dts: cros5250: add EC device
ARM: dts: Add sbs-battery for exynos5250-snow
ARM: dts: Add i2c-arbitrator bus for exynos5250-snow
ARM: dts: add mshc controller node for Exynos4x12 SoCs
ARM: dts: Add chip-id controller node on Exynos4/5 SoC
ARM: EXYNOS: Create virtual I/O mapping for Chip-ID controller using device tree
ARM: davinci: da850-evm: add SPI flash support
ARM: davinci: da850: override SPI DT node device name
ARM: davinci: da850: add SPI1 DT node
spi/davinci: add DT binding documentation
spi/davinci: no wildcards in DT compatible property
ARM: dts: mvebu: Convert mvebu device tree files to 64 bits
ARM: dts: mvebu: introduce internal-regs node
ARM: dts: mvebu: Convert all the mvebu files to use the range property
ARM: dts: mvebu: move all peripherals inside soc
ARM: dts: mvebu: fix cpus section indentation
ARM: davinci: da850: add EHRPWM & ECAP DT node
ARM/dts: OMAP3: fix pinctrl-single configuration
ARM: dts: Add OMAP3430 SDP NOR flash memory binding
ARM: dts: Add NOR flash bindings for OMAP2420 H4
...

+7803 -3100
+1
Documentation/devicetree/bindings/arm/omap/l3-noc.txt
··· 6 6 Required properties: 7 7 - compatible : Should be "ti,omap3-l3-smx" for OMAP3 family 8 8 Should be "ti,omap4-l3-noc" for OMAP4 family 9 + - reg: Contains L3 register address range for each noc domain. 9 10 - ti,hwmods: "l3_main_1", ... One hwmod for each noc domain. 10 11 11 12 Examples:
+15 -2
Documentation/devicetree/bindings/arm/omap/timer.txt
··· 1 1 OMAP Timer bindings 2 2 3 3 Required properties: 4 - - compatible: Must be "ti,omap2-timer" for OMAP2+ controllers. 4 + - compatible: Should be set to one of the below. Please note that 5 + OMAP44xx devices have timer instances that are 100% 6 + register compatible with OMAP3xxx devices as well as 7 + newer timers that are not 100% register compatible. 8 + So for OMAP44xx devices timer instances may use 9 + different compatible strings. 10 + 11 + ti,omap2420-timer (applicable to OMAP24xx devices) 12 + ti,omap3430-timer (applicable to OMAP3xxx/44xx devices) 13 + ti,omap4430-timer (applicable to OMAP44xx devices) 14 + ti,omap5430-timer (applicable to OMAP543x devices) 15 + ti,am335x-timer (applicable to AM335x devices) 16 + ti,am335x-timer-1ms (applicable to AM335x devices) 17 + 5 18 - reg: Contains timer register address range (base address and 6 19 length). 7 20 - interrupts: Contains the interrupt information for the timer. The ··· 35 22 Example: 36 23 37 24 timer12: timer@48304000 { 38 - compatible = "ti,omap2-timer"; 25 + compatible = "ti,omap3430-timer"; 39 26 reg = <0x48304000 0x400>; 40 27 interrupts = <95>; 41 28 ti,hwmods = "timer12"
+7
Documentation/devicetree/bindings/arm/samsung/sysreg.txt
··· 1 + SAMSUNG S5P/Exynos SoC series System Registers (SYSREG) 2 + 3 + Properties: 4 + - name : should be 'sysreg'; 5 + - compatible : should contain "samsung,<chip name>-sysreg", "syscon"; 6 + For Exynos4 SoC series it should be "samsung,exynos4-sysreg", "syscon"; 7 + - reg : offset and length of the register set.
+45 -4
Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
··· 3 3 Required properties: 4 4 - compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx" 5 5 - reg : Should contain registers location and length 6 + - interrupts : Should contain the interrupt numbers of DMA channels. 7 + If a channel is empty/reserved, 0 should be filled in place. 8 + - #dma-cells : Must be <1>. The number cell specifies the channel ID. 9 + - dma-channels : Number of channels supported by the DMA controller 10 + 11 + Optional properties: 12 + - interrupt-names : Name of DMA channel interrupts 6 13 7 14 Supported chips: 8 15 imx23, imx28. 9 16 10 17 Examples: 11 - dma-apbh@80004000 { 18 + 19 + dma_apbh: dma-apbh@80004000 { 12 20 compatible = "fsl,imx28-dma-apbh"; 13 - reg = <0x80004000 2000>; 21 + reg = <0x80004000 0x2000>; 22 + interrupts = <82 83 84 85 23 + 88 88 88 88 24 + 88 88 88 88 25 + 87 86 0 0>; 26 + interrupt-names = "ssp0", "ssp1", "ssp2", "ssp3", 27 + "gpmi0", "gmpi1", "gpmi2", "gmpi3", 28 + "gpmi4", "gmpi5", "gpmi6", "gmpi7", 29 + "hsadc", "lcdif", "empty", "empty"; 30 + #dma-cells = <1>; 31 + dma-channels = <16>; 14 32 }; 15 33 16 - dma-apbx@80024000 { 34 + dma_apbx: dma-apbx@80024000 { 17 35 compatible = "fsl,imx28-dma-apbx"; 18 - reg = <0x80024000 2000>; 36 + reg = <0x80024000 0x2000>; 37 + interrupts = <78 79 66 0 38 + 80 81 68 69 39 + 70 71 72 73 40 + 74 75 76 77>; 41 + interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty", 42 + "saif0", "saif1", "i2c0", "i2c1", 43 + "auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx", 44 + "auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx"; 45 + #dma-cells = <1>; 46 + dma-channels = <16>; 47 + }; 48 + 49 + DMA clients connected to the MXS DMA controller must use the format 50 + described in the dma.txt file. 51 + 52 + Examples: 53 + 54 + auart0: serial@8006a000 { 55 + compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 56 + reg = <0x8006a000 0x2000>; 57 + interrupts = <112>; 58 + dmas = <&dma_apbx 8>, <&dma_apbx 9>; 59 + dma-names = "rx", "tx"; 19 60 };
+33 -3
Documentation/devicetree/bindings/fb/mxsfb.txt
··· 5 5 imx23 and imx28. 6 6 - reg: Address and length of the register set for lcdif 7 7 - interrupts: Should contain lcdif interrupts 8 + - display : phandle to display node (see below for details) 8 9 9 - Optional properties: 10 - - panel-enable-gpios : Should specify the gpio for panel enable 10 + * display node 11 + 12 + Required properties: 13 + - bits-per-pixel : <16> for RGB565, <32> for RGB888/666. 14 + - bus-width : number of data lines. Could be <8>, <16>, <18> or <24>. 15 + 16 + Required sub-node: 17 + - display-timings : Refer to binding doc display-timing.txt for details. 11 18 12 19 Examples: 13 20 ··· 22 15 compatible = "fsl,imx28-lcdif"; 23 16 reg = <0x80030000 2000>; 24 17 interrupts = <38 86>; 25 - panel-enable-gpios = <&gpio3 30 0>; 18 + 19 + display: display { 20 + bits-per-pixel = <32>; 21 + bus-width = <24>; 22 + 23 + display-timings { 24 + native-mode = <&timing0>; 25 + timing0: timing0 { 26 + clock-frequency = <33500000>; 27 + hactive = <800>; 28 + vactive = <480>; 29 + hfront-porch = <164>; 30 + hback-porch = <89>; 31 + hsync-len = <10>; 32 + vback-porch = <23>; 33 + vfront-porch = <10>; 34 + vsync-len = <10>; 35 + hsync-active = <0>; 36 + vsync-active = <0>; 37 + de-active = <1>; 38 + pixelclk-active = <0>; 39 + }; 40 + }; 41 + }; 26 42 };
+4 -4
Documentation/devicetree/bindings/gpio/gpio-omap.txt
··· 5 5 - "ti,omap2-gpio" for OMAP2 controllers 6 6 - "ti,omap3-gpio" for OMAP3 controllers 7 7 - "ti,omap4-gpio" for OMAP4 controllers 8 + - gpio-controller : Marks the device node as a GPIO controller. 8 9 - #gpio-cells : Should be two. 9 10 - first cell is the pin number 10 11 - second cell is used to specify optional parameters (unused) 11 - - gpio-controller : Marks the device node as a GPIO controller. 12 + - interrupt-controller: Mark the device node as an interrupt controller. 12 13 - #interrupt-cells : Should be 2. 13 - - interrupt-controller: Mark the device node as an interrupt controller 14 14 The first cell is the GPIO number. 15 15 The second cell is used to specify flags: 16 16 bits[3:0] trigger type and level flags: ··· 32 32 gpio4: gpio4 { 33 33 compatible = "ti,omap4-gpio"; 34 34 ti,hwmods = "gpio4"; 35 - #gpio-cells = <2>; 36 35 gpio-controller; 37 - #interrupt-cells = <2>; 36 + #gpio-cells = <2>; 38 37 interrupt-controller; 38 + #interrupt-cells = <2>; 39 39 };
+20
Documentation/devicetree/bindings/gpu/samsung-g2d.txt
··· 1 + * Samsung 2D Graphics Accelerator 2 + 3 + Required properties: 4 + - compatible : value should be one among the following: 5 + (a) "samsung,s5pv210-g2d" for G2D IP present in S5PV210 & Exynos4210 SoC 6 + (b) "samsung,exynos4212-g2d" for G2D IP present in Exynos4x12 SoCs 7 + (c) "samsung,exynos5250-g2d" for G2D IP present in Exynos5250 SoC 8 + 9 + - reg : Physical base address of the IP registers and length of memory 10 + mapped region. 11 + 12 + - interrupts : G2D interrupt number to the CPU. 13 + 14 + Example: 15 + g2d@12800000 { 16 + compatible = "samsung,s5pv210-g2d"; 17 + reg = <0x12800000 0x1000>; 18 + interrupts = <0 89 0>; 19 + status = "disabled"; 20 + };
+8 -4
Documentation/devicetree/bindings/i2c/i2c-mxs.txt
··· 3 3 Required properties: 4 4 - compatible: Should be "fsl,<chip>-i2c" 5 5 - reg: Should contain registers location and length 6 - - interrupts: Should contain ERROR and DMA interrupts 6 + - interrupts: Should contain ERROR interrupt number 7 7 - clock-frequency: Desired I2C bus clock frequency in Hz. 8 8 Only 100000Hz and 400000Hz modes are supported. 9 - - fsl,i2c-dma-channel: APBX DMA channel for the I2C 9 + - dmas: DMA specifier, consisting of a phandle to DMA controller node 10 + and I2C DMA channel ID. 11 + Refer to dma.txt and fsl-mxs-dma.txt for details. 12 + - dma-names: Must be "rx-tx". 10 13 11 14 Examples: 12 15 ··· 18 15 #size-cells = <0>; 19 16 compatible = "fsl,imx28-i2c"; 20 17 reg = <0x80058000 2000>; 21 - interrupts = <111 68>; 18 + interrupts = <111>; 22 19 clock-frequency = <100000>; 23 - fsl,i2c-dma-channel = <6>; 20 + dmas = <&dma_apbx 6>; 21 + dma-names = "rx-tx"; 24 22 };
+60
Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt
··· 1 + NVIDIA Tegra20/Tegra30/Tegra114 I2C controller driver. 2 + 3 + Required properties: 4 + - compatible : should be: 5 + "nvidia,tegra114-i2c" 6 + "nvidia,tegra30-i2c" 7 + "nvidia,tegra20-i2c" 8 + "nvidia,tegra20-i2c-dvc" 9 + Details of compatible are as follows: 10 + nvidia,tegra20-i2c-dvc: Tegra20 has specific I2C controller called as DVC I2C 11 + controller. This only support master mode of I2C communication. Register 12 + interface/offset and interrupts handling are different than generic I2C 13 + controller. Driver of DVC I2C controller is only compatible with 14 + "nvidia,tegra20-i2c-dvc". 15 + nvidia,tegra20-i2c: Tegra20 has 4 generic I2C controller. This can support 16 + master and slave mode of I2C communication. The i2c-tegra driver only 17 + support master mode of I2C communication. Driver of I2C controller is 18 + only compatible with "nvidia,tegra20-i2c". 19 + nvidia,tegra30-i2c: Tegra30 has 5 generic I2C controller. This controller is 20 + very much similar to Tegra20 I2C controller with additional feature: 21 + Continue Transfer Support. This feature helps to implement M_NO_START 22 + as per I2C core API transfer flags. Driver of I2C controller is 23 + compatible with "nvidia,tegra30-i2c" to enable the continue transfer 24 + support. This is also compatible with "nvidia,tegra20-i2c" without 25 + continue transfer support. 26 + nvidia,tegra114-i2c: Tegra114 has 5 generic I2C controller. This controller is 27 + very much similar to Tegra30 I2C controller with some hardware 28 + modification: 29 + - Tegra30/Tegra20 I2C controller has 2 clock source called div-clk and 30 + fast-clk. Tegra114 has only one clock source called as div-clk and 31 + hence clock mechanism is changed in I2C controller. 32 + - Tegra30/Tegra20 I2C controller has enabled per packet transfer by 33 + default and there is no way to disable it. Tegra114 has this 34 + interrupt disable by default and SW need to enable explicitly. 35 + Due to above changes, Tegra114 I2C driver makes incompatible with 36 + previous hardware driver. Hence, tegra114 I2C controller is compatible 37 + with "nvidia,tegra114-i2c". 38 + - reg: Should contain I2C controller registers physical address and length. 39 + - interrupts: Should contain I2C controller interrupts. 40 + - address-cells: Address cells for I2C device address. 41 + - size-cells: Size of the I2C device address. 42 + - clocks: Clock ID as per 43 + Documentation/devicetree/bindings/clock/tegra<chip-id>.txt 44 + for I2C controller. 45 + - clock-names: Name of the clock: 46 + Tegra20/Tegra30 I2C controller: "div-clk and "fast-clk". 47 + Tegra114 I2C controller: "div-clk". 48 + 49 + Example: 50 + 51 + i2c@7000c000 { 52 + compatible = "nvidia,tegra20-i2c"; 53 + reg = <0x7000c000 0x100>; 54 + interrupts = <0 38 0x04>; 55 + #address-cells = <1>; 56 + #size-cells = <0>; 57 + clocks = <&tegra_car 12>, <&tegra_car 124>; 58 + clock-names = "div-clk", "fast-clk"; 59 + status = "disabled"; 60 + };
+8 -4
Documentation/devicetree/bindings/mmc/mxs-mmc.txt
··· 9 9 Required properties: 10 10 - compatible: Should be "fsl,<chip>-mmc". The supported chips include 11 11 imx23 and imx28. 12 - - interrupts: Should contain ERROR and DMA interrupts 13 - - fsl,ssp-dma-channel: APBH DMA channel for the SSP 12 + - interrupts: Should contain ERROR interrupt number 13 + - dmas: DMA specifier, consisting of a phandle to DMA controller node 14 + and SSP DMA channel ID. 15 + Refer to dma.txt and fsl-mxs-dma.txt for details. 16 + - dma-names: Must be "rx-tx". 14 17 15 18 Examples: 16 19 17 20 ssp0: ssp@80010000 { 18 21 compatible = "fsl,imx28-mmc"; 19 22 reg = <0x80010000 2000>; 20 - interrupts = <96 82>; 21 - fsl,ssp-dma-channel = <0>; 23 + interrupts = <96>; 24 + dmas = <&dma_apbh 0>; 25 + dma-names = "rx-tx"; 22 26 bus-width = <8>; 23 27 };
+10 -7
Documentation/devicetree/bindings/mtd/gpmi-nand.txt
··· 7 7 - compatible : should be "fsl,<chip>-gpmi-nand" 8 8 - reg : should contain registers location and length for gpmi and bch. 9 9 - reg-names: Should contain the reg names "gpmi-nand" and "bch" 10 - - interrupts : The first is the DMA interrupt number for GPMI. 11 - The second is the BCH interrupt number. 12 - - interrupt-names : The interrupt names "gpmi-dma", "bch"; 13 - - fsl,gpmi-dma-channel : Should contain the dma channel it uses. 10 + - interrupts : BCH interrupt number. 11 + - interrupt-names : Should be "bch". 12 + - dmas: DMA specifier, consisting of a phandle to DMA controller node 13 + and GPMI DMA channel ID. 14 + Refer to dma.txt and fsl-mxs-dma.txt for details. 15 + - dma-names: Must be "rx-tx". 14 16 15 17 Optional properties: 16 18 - nand-on-flash-bbt: boolean to enable on flash bbt option if not ··· 29 27 #size-cells = <1>; 30 28 reg = <0x8000c000 2000>, <0x8000a000 2000>; 31 29 reg-names = "gpmi-nand", "bch"; 32 - interrupts = <88>, <41>; 33 - interrupt-names = "gpmi-dma", "bch"; 34 - fsl,gpmi-dma-channel = <4>; 30 + interrupts = <41>; 31 + interrupt-names = "bch"; 32 + dmas = <&dma_apbh 4>; 33 + dma-names = "rx-tx"; 35 34 36 35 partition@0 { 37 36 ...
+4
Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
··· 70 70 0: Disable the internal pull-up 71 71 1: Enable the internal pull-up 72 72 73 + Note that when enabling the pull-up, the internal pad keeper gets disabled. 74 + Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up 75 + will only disable the internal pad keeper. 76 + 73 77 Examples: 74 78 75 79 pinctrl@80018000 {
+8
Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
··· 2 2 3 3 Required properties: 4 4 - compatible : "nvidia,tegra-audio-alc5632" 5 + - clocks : Must contain an entry for each entry in clock-names. 6 + - clock-names : Must include the following entries: 7 + "pll_a" (The Tegra clock of that name), 8 + "pll_a_out0" (The Tegra clock of that name), 9 + "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) 5 10 - nvidia,model : The user-visible name of this sound complex. 6 11 - nvidia,audio-routing : A list of the connections between audio components. 7 12 Each entry is a pair of strings, the first being the connection's sink, ··· 61 56 62 57 nvidia,i2s-controller = <&tegra_i2s1>; 63 58 nvidia,audio-codec = <&alc5632>; 59 + 60 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>; 61 + clock-names = "pll_a", "pll_a_out0", "mclk"; 64 62 };
+7
Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt
··· 2 2 3 3 Required properties: 4 4 - compatible : "nvidia,tegra-audio-trimslice" 5 + - clocks : Must contain an entry for each entry in clock-names. 6 + - clock-names : Must include the following entries: 7 + "pll_a" (The Tegra clock of that name), 8 + "pll_a_out0" (The Tegra clock of that name), 9 + "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) 5 10 - nvidia,i2s-controller : The phandle of the Tegra I2S1 controller 6 11 - nvidia,audio-codec : The phandle of the WM8903 audio codec 7 12 ··· 16 11 compatible = "nvidia,tegra-audio-trimslice"; 17 12 nvidia,i2s-controller = <&tegra_i2s1>; 18 13 nvidia,audio-codec = <&codec>; 14 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>; 15 + clock-names = "pll_a", "pll_a_out0", "mclk"; 19 16 };
+8
Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt
··· 2 2 3 3 Required properties: 4 4 - compatible : "nvidia,tegra-audio-wm8753" 5 + - clocks : Must contain an entry for each entry in clock-names. 6 + - clock-names : Must include the following entries: 7 + "pll_a" (The Tegra clock of that name), 8 + "pll_a_out0" (The Tegra clock of that name), 9 + "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) 5 10 - nvidia,model : The user-visible name of this sound complex. 6 11 - nvidia,audio-routing : A list of the connections between audio components. 7 12 Each entry is a pair of strings, the first being the connection's sink, ··· 55 50 56 51 nvidia,i2s-controller = <&i2s1>; 57 52 nvidia,audio-codec = <&wm8753>; 53 + 54 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>; 55 + clock-names = "pll_a", "pll_a_out0", "mclk"; 58 56 }; 59 57
+8
Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
··· 2 2 3 3 Required properties: 4 4 - compatible : "nvidia,tegra-audio-wm8903" 5 + - clocks : Must contain an entry for each entry in clock-names. 6 + - clock-names : Must include the following entries: 7 + "pll_a" (The Tegra clock of that name), 8 + "pll_a_out0" (The Tegra clock of that name), 9 + "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) 5 10 - nvidia,model : The user-visible name of this sound complex. 6 11 - nvidia,audio-routing : A list of the connections between audio components. 7 12 Each entry is a pair of strings, the first being the connection's sink, ··· 72 67 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 73 68 nvidia,int-mic-en-gpios = <&gpio 184 0>; /*gpio PX0 */ 74 69 nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */ 70 + 71 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>; 72 + clock-names = "pll_a", "pll_a_out0", "mclk"; 75 73 }; 76 74
+8
Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt
··· 2 2 3 3 Required properties: 4 4 - compatible : "nvidia,tegra-audio-wm9712" 5 + - clocks : Must contain an entry for each entry in clock-names. 6 + - clock-names : Must include the following entries: 7 + "pll_a" (The Tegra clock of that name), 8 + "pll_a_out0" (The Tegra clock of that name), 9 + "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) 5 10 - nvidia,model : The user-visible name of this sound complex. 6 11 - nvidia,audio-routing : A list of the connections between audio components. 7 12 Each entry is a pair of strings, the first being the connection's sink, ··· 53 48 "Mic", "MIC1"; 54 49 55 50 nvidia,ac97-controller = <&ac97>; 51 + 52 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>; 53 + clock-names = "pll_a", "pll_a_out0", "mclk"; 56 54 };
+8 -4
Documentation/devicetree/bindings/spi/mxs-spi.txt
··· 3 3 Required properties: 4 4 - compatible: Should be "fsl,<soc>-spi", where soc is "imx23" or "imx28" 5 5 - reg: Offset and length of the register set for the device 6 - - interrupts: Should contain SSP interrupts (error irq first, dma irq second) 7 - - fsl,ssp-dma-channel: APBX DMA channel for the SSP 6 + - interrupts: Should contain SSP ERROR interrupt 7 + - dmas: DMA specifier, consisting of a phandle to DMA controller node 8 + and SSP DMA channel ID. 9 + Refer to dma.txt and fsl-mxs-dma.txt for details. 10 + - dma-names: Must be "rx-tx". 8 11 9 12 Optional properties: 10 13 - clock-frequency : Input clock frequency to the SPI block in Hz. ··· 20 17 #size-cells = <0>; 21 18 compatible = "fsl,imx28-spi"; 22 19 reg = <0x80010000 0x2000>; 23 - interrupts = <96 82>; 24 - fsl,ssp-dma-channel = <0>; 20 + interrupts = <96>; 21 + dmas = <&dma_apbh 0>; 22 + dma-names = "rx-tx"; 25 23 };
+51
Documentation/devicetree/bindings/spi/spi-davinci.txt
··· 1 + Davinci SPI controller device bindings 2 + 3 + Required properties: 4 + - #address-cells: number of cells required to define a chip select 5 + address on the SPI bus. Should be set to 1. 6 + - #size-cells: should be zero. 7 + - compatible: 8 + - "ti,dm6441-spi" for SPI used similar to that on DM644x SoC family 9 + - "ti,da830-spi" for SPI used similar to that on DA8xx SoC family 10 + - reg: Offset and length of SPI controller register space 11 + - num-cs: Number of chip selects 12 + - ti,davinci-spi-intr-line: interrupt line used to connect the SPI 13 + IP to the interrupt controller within the SoC. Possible values 14 + are 0 and 1. Manual says one of the two possible interrupt 15 + lines can be tied to the interrupt controller. Set this 16 + based on a specifc SoC configuration. 17 + - interrupts: interrupt number mapped to CPU. 18 + - clocks: spi clk phandle 19 + 20 + Example of a NOR flash slave device (n25q032) connected to DaVinci 21 + SPI controller device over the SPI bus. 22 + 23 + spi0:spi@20BF0000 { 24 + #address-cells = <1>; 25 + #size-cells = <0>; 26 + compatible = "ti,dm6446-spi"; 27 + reg = <0x20BF0000 0x1000>; 28 + num-cs = <4>; 29 + ti,davinci-spi-intr-line = <0>; 30 + interrupts = <338>; 31 + clocks = <&clkspi>; 32 + 33 + flash: n25q032@0 { 34 + #address-cells = <1>; 35 + #size-cells = <1>; 36 + compatible = "st,m25p32"; 37 + spi-max-frequency = <25000000>; 38 + reg = <0>; 39 + 40 + partition@0 { 41 + label = "u-boot-spl"; 42 + reg = <0x0 0x80000>; 43 + read-only; 44 + }; 45 + 46 + partition@1 { 47 + label = "test"; 48 + reg = <0x80000 0x380000>; 49 + }; 50 + }; 51 + };
+7 -9
Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
··· 5 5 imx23 and imx28. 6 6 - reg : Address and length of the register set for the device 7 7 - interrupts : Should contain the auart interrupt numbers 8 - 9 - Optional properties: 10 - - fsl,auart-dma-channel : The DMA channels, the first is for RX, the other 11 - is for TX. If you add this property, it also means that you 12 - will enable the DMA support for the auart. 13 - Note: due to the hardware bug in imx23(see errata : 2836), 14 - only the imx28 can enable the DMA support for the auart. 8 + - dmas: DMA specifier, consisting of a phandle to DMA controller node 9 + and AUART DMA channel ID. 10 + Refer to dma.txt and fsl-mxs-dma.txt for details. 11 + - dma-names: "rx" for RX channel, "tx" for TX channel. 15 12 16 13 Example: 17 14 auart0: serial@8006a000 { 18 15 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 19 16 reg = <0x8006a000 0x2000>; 20 - interrupts = <112 70 71>; 21 - fsl,auart-dma-channel = <8 9>; 17 + interrupts = <112>; 18 + dmas = <&dma_apbx 8>, <&dma_apbx 9>; 19 + dma-names = "rx", "tx"; 22 20 }; 23 21 24 22 Note: Each auart port should have an alias correctly numbered in "aliases"
+10
Documentation/devicetree/bindings/usb/exynos-usb.txt
··· 10 10 - reg: physical base address of the controller and length of memory mapped 11 11 region. 12 12 - interrupts: interrupt number to the cpu. 13 + - clocks: from common clock binding: handle to usb clock. 14 + - clock-names: from common clock binding: Shall be "usbhost". 13 15 14 16 Optional properties: 15 17 - samsung,vbus-gpio: if present, specifies the GPIO that ··· 24 22 reg = <0x12110000 0x100>; 25 23 interrupts = <0 71 0>; 26 24 samsung,vbus-gpio = <&gpx2 6 1 3 3>; 25 + 26 + clocks = <&clock 285>; 27 + clock-names = "usbhost"; 27 28 }; 28 29 29 30 OHCI ··· 36 31 - reg: physical base address of the controller and length of memory mapped 37 32 region. 38 33 - interrupts: interrupt number to the cpu. 34 + - clocks: from common clock binding: handle to usb clock. 35 + - clock-names: from common clock binding: Shall be "usbhost". 39 36 40 37 Example: 41 38 usb@12120000 { 42 39 compatible = "samsung,exynos4210-ohci"; 43 40 reg = <0x12120000 0x100>; 44 41 interrupts = <0 71 0>; 42 + 43 + clocks = <&clock 285>; 44 + clock-names = "usbhost"; 45 45 };
+1
Documentation/devicetree/bindings/usb/omap-usb.txt
··· 18 18 represents PERIPHERAL. 19 19 - power : Should be "50". This signifies the controller can supply upto 20 20 100mA when operating in host mode. 21 + - usb-phy : the phandle for the PHY device 21 22 22 23 Optional properties: 23 24 - ctrl-module : phandle of the control module this glue uses to write to
+65
Documentation/devicetree/bindings/video/samsung-fimd.txt
··· 1 + Device-Tree bindings for Samsung SoC display controller (FIMD) 2 + 3 + FIMD (Fully Interactive Mobile Display) is the Display Controller for the 4 + Samsung series of SoCs which transfers the image data from a video memory 5 + buffer to an external LCD interface. 6 + 7 + Required properties: 8 + - compatible: value should be one of the following 9 + "samsung,s3c2443-fimd"; /* for S3C24XX SoCs */ 10 + "samsung,s3c6400-fimd"; /* for S3C64XX SoCs */ 11 + "samsung,s5p6440-fimd"; /* for S5P64X0 SoCs */ 12 + "samsung,s5pc100-fimd"; /* for S5PC100 SoC */ 13 + "samsung,s5pv210-fimd"; /* for S5PV210 SoC */ 14 + "samsung,exynos4210-fimd"; /* for Exynos4 SoCs */ 15 + "samsung,exynos5250-fimd"; /* for Exynos5 SoCs */ 16 + 17 + - reg: physical base address and length of the FIMD registers set. 18 + 19 + - interrupt-parent: should be the phandle of the fimd controller's 20 + parent interrupt controller. 21 + 22 + - interrupts: should contain a list of all FIMD IP block interrupts in the 23 + order: FIFO Level, VSYNC, LCD_SYSTEM. The interrupt specifier 24 + format depends on the interrupt controller used. 25 + 26 + - interrupt-names: should contain the interrupt names: "fifo", "vsync", 27 + "lcd_sys", in the same order as they were listed in the interrupts 28 + property. 29 + 30 + - pinctrl-0: pin control group to be used for this controller. 31 + 32 + - pinctrl-names: must contain a "default" entry. 33 + 34 + - clocks: must include clock specifiers corresponding to entries in the 35 + clock-names property. 36 + 37 + - clock-names: list of clock names sorted in the same order as the clocks 38 + property. Must contain "sclk_fimd" and "fimd". 39 + 40 + Optional Properties: 41 + - samsung,power-domain: a phandle to FIMD power domain node. 42 + 43 + Example: 44 + 45 + SoC specific DT entry: 46 + 47 + fimd@11c00000 { 48 + compatible = "samsung,exynos4210-fimd"; 49 + interrupt-parent = <&combiner>; 50 + reg = <0x11c00000 0x20000>; 51 + interrupt-names = "fifo", "vsync", "lcd_sys"; 52 + interrupts = <11 0>, <11 1>, <11 2>; 53 + clocks = <&clock 140>, <&clock 283>; 54 + clock-names = "sclk_fimd", "fimd"; 55 + samsung,power-domain = <&pd_lcd0>; 56 + status = "disabled"; 57 + }; 58 + 59 + Board specific DT entry: 60 + 61 + fimd@11c00000 { 62 + pinctrl-0 = <&lcd_clk &lcd_data24 &pwm1_out>; 63 + pinctrl-names = "default"; 64 + status = "okay"; 65 + };
+5
arch/arm/boot/dts/Makefile
··· 53 53 exynos4412-smdk4412.dtb \ 54 54 exynos4412-origen.dtb \ 55 55 exynos5250-arndale.dtb \ 56 + exynos5440-sd5v1.dtb \ 56 57 exynos5250-smdk5250.dtb \ 57 58 exynos5250-snow.dtb \ 58 59 exynos5440-ssdk5440.dtb ··· 135 134 imx28-tx28.dtb 136 135 dtb-$(CONFIG_ARCH_NOMADIK) += ste-nomadik-s8815.dtb 137 136 dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \ 137 + omap3430-sdp.dtb \ 138 138 omap3-beagle.dtb \ 139 + omap3-devkit8000.dtb \ 139 140 omap3-beagle-xm.dtb \ 140 141 omap3-evm.dtb \ 141 142 omap3-tobi.dtb \ 143 + omap3-igep0020.dtb \ 144 + omap3-igep0030.dtb \ 142 145 omap4-panda.dtb \ 143 146 omap4-panda-a4.dtb \ 144 147 omap4-panda-es.dtb \
+5 -5
arch/arm/boot/dts/am335x-bone.dts
··· 43 43 status = "okay"; 44 44 }; 45 45 46 - i2c1: i2c@44e0b000 { 46 + i2c0: i2c@44e0b000 { 47 47 status = "okay"; 48 48 clock-frequency = <400000>; 49 49 ··· 59 59 60 60 led@2 { 61 61 label = "beaglebone:green:heartbeat"; 62 - gpios = <&gpio2 21 0>; 62 + gpios = <&gpio1 21 0>; 63 63 linux,default-trigger = "heartbeat"; 64 64 default-state = "off"; 65 65 }; 66 66 67 67 led@3 { 68 68 label = "beaglebone:green:mmc0"; 69 - gpios = <&gpio2 22 0>; 69 + gpios = <&gpio1 22 0>; 70 70 linux,default-trigger = "mmc0"; 71 71 default-state = "off"; 72 72 }; 73 73 74 74 led@4 { 75 75 label = "beaglebone:green:usr2"; 76 - gpios = <&gpio2 23 0>; 76 + gpios = <&gpio1 23 0>; 77 77 default-state = "off"; 78 78 }; 79 79 80 80 led@5 { 81 81 label = "beaglebone:green:usr3"; 82 - gpios = <&gpio2 24 0>; 82 + gpios = <&gpio1 24 0>; 83 83 default-state = "off"; 84 84 }; 85 85 };
+9 -9
arch/arm/boot/dts/am335x-evm.dts
··· 51 51 status = "okay"; 52 52 }; 53 53 54 - i2c1: i2c@44e0b000 { 54 + i2c0: i2c@44e0b000 { 55 55 status = "okay"; 56 56 clock-frequency = <400000>; 57 57 ··· 60 60 }; 61 61 }; 62 62 63 - i2c2: i2c@4802a000 { 63 + i2c1: i2c@4802a000 { 64 64 status = "okay"; 65 65 clock-frequency = <100000>; 66 66 ··· 123 123 debounce-delay-ms = <5>; 124 124 col-scan-delay-us = <2>; 125 125 126 - row-gpios = <&gpio2 25 0 /* Bank1, pin25 */ 127 - &gpio2 26 0 /* Bank1, pin26 */ 128 - &gpio2 27 0>; /* Bank1, pin27 */ 126 + row-gpios = <&gpio1 25 0 /* Bank1, pin25 */ 127 + &gpio1 26 0 /* Bank1, pin26 */ 128 + &gpio1 27 0>; /* Bank1, pin27 */ 129 129 130 - col-gpios = <&gpio2 21 0 /* Bank1, pin21 */ 131 - &gpio2 22 0>; /* Bank1, pin22 */ 130 + col-gpios = <&gpio1 21 0 /* Bank1, pin21 */ 131 + &gpio1 22 0>; /* Bank1, pin22 */ 132 132 133 133 linux,keymap = <0x0000008b /* MENU */ 134 134 0x0100009e /* BACK */ ··· 147 147 switch@9 { 148 148 label = "volume-up"; 149 149 linux,code = <115>; 150 - gpios = <&gpio1 2 1>; 150 + gpios = <&gpio0 2 1>; 151 151 gpio-key,wakeup; 152 152 }; 153 153 154 154 switch@10 { 155 155 label = "volume-down"; 156 156 linux,code = <114>; 157 - gpios = <&gpio1 3 1>; 157 + gpios = <&gpio0 3 1>; 158 158 gpio-key,wakeup; 159 159 }; 160 160 };
+9 -9
arch/arm/boot/dts/am335x-evmsk.dts
··· 58 58 status = "okay"; 59 59 }; 60 60 61 - i2c1: i2c@44e0b000 { 61 + i2c0: i2c@44e0b000 { 62 62 status = "okay"; 63 63 clock-frequency = <400000>; 64 64 ··· 115 115 116 116 led@1 { 117 117 label = "evmsk:green:usr0"; 118 - gpios = <&gpio2 4 0>; 118 + gpios = <&gpio1 4 0>; 119 119 default-state = "off"; 120 120 }; 121 121 122 122 led@2 { 123 123 label = "evmsk:green:usr1"; 124 - gpios = <&gpio2 5 0>; 124 + gpios = <&gpio1 5 0>; 125 125 default-state = "off"; 126 126 }; 127 127 128 128 led@3 { 129 129 label = "evmsk:green:mmc0"; 130 - gpios = <&gpio2 6 0>; 130 + gpios = <&gpio1 6 0>; 131 131 linux,default-trigger = "mmc0"; 132 132 default-state = "off"; 133 133 }; 134 134 135 135 led@4 { 136 136 label = "evmsk:green:heartbeat"; 137 - gpios = <&gpio2 7 0>; 137 + gpios = <&gpio1 7 0>; 138 138 linux,default-trigger = "heartbeat"; 139 139 default-state = "off"; 140 140 }; ··· 148 148 switch@1 { 149 149 label = "button0"; 150 150 linux,code = <0x100>; 151 - gpios = <&gpio3 3 0>; 151 + gpios = <&gpio2 3 0>; 152 152 }; 153 153 154 154 switch@2 { 155 155 label = "button1"; 156 156 linux,code = <0x101>; 157 - gpios = <&gpio3 2 0>; 157 + gpios = <&gpio2 2 0>; 158 158 }; 159 159 160 160 switch@3 { 161 161 label = "button2"; 162 162 linux,code = <0x102>; 163 - gpios = <&gpio1 30 0>; 163 + gpios = <&gpio0 30 0>; 164 164 gpio-key,wakeup; 165 165 }; 166 166 167 167 switch@4 { 168 168 label = "button3"; 169 169 linux,code = <0x103>; 170 - gpios = <&gpio3 5 0>; 170 + gpios = <&gpio2 5 0>; 171 171 }; 172 172 }; 173 173 };
+22 -18
arch/arm/boot/dts/am33xx.dtsi
··· 21 21 serial3 = &uart4; 22 22 serial4 = &uart5; 23 23 serial5 = &uart6; 24 + d_can0 = &dcan0; 25 + d_can1 = &dcan1; 24 26 }; 25 27 26 28 cpus { ··· 89 87 reg = <0x48200000 0x1000>; 90 88 }; 91 89 92 - gpio1: gpio@44e07000 { 90 + gpio0: gpio@44e07000 { 93 91 compatible = "ti,omap4-gpio"; 94 92 ti,hwmods = "gpio1"; 95 93 gpio-controller; ··· 100 98 interrupts = <96>; 101 99 }; 102 100 103 - gpio2: gpio@4804c000 { 101 + gpio1: gpio@4804c000 { 104 102 compatible = "ti,omap4-gpio"; 105 103 ti,hwmods = "gpio2"; 106 104 gpio-controller; ··· 111 109 interrupts = <98>; 112 110 }; 113 111 114 - gpio3: gpio@481ac000 { 112 + gpio2: gpio@481ac000 { 115 113 compatible = "ti,omap4-gpio"; 116 114 ti,hwmods = "gpio3"; 117 115 gpio-controller; ··· 122 120 interrupts = <32>; 123 121 }; 124 122 125 - gpio4: gpio@481ae000 { 123 + gpio3: gpio@481ae000 { 126 124 compatible = "ti,omap4-gpio"; 127 125 ti,hwmods = "gpio4"; 128 126 gpio-controller; ··· 187 185 status = "disabled"; 188 186 }; 189 187 190 - i2c1: i2c@44e0b000 { 188 + i2c0: i2c@44e0b000 { 191 189 compatible = "ti,omap4-i2c"; 192 190 #address-cells = <1>; 193 191 #size-cells = <0>; ··· 197 195 status = "disabled"; 198 196 }; 199 197 200 - i2c2: i2c@4802a000 { 198 + i2c1: i2c@4802a000 { 201 199 compatible = "ti,omap4-i2c"; 202 200 #address-cells = <1>; 203 201 #size-cells = <0>; ··· 207 205 status = "disabled"; 208 206 }; 209 207 210 - i2c3: i2c@4819c000 { 208 + i2c2: i2c@4819c000 { 211 209 compatible = "ti,omap4-i2c"; 212 210 #address-cells = <1>; 213 211 #size-cells = <0>; ··· 227 225 dcan0: d_can@481cc000 { 228 226 compatible = "bosch,d_can"; 229 227 ti,hwmods = "d_can0"; 230 - reg = <0x481cc000 0x2000>; 228 + reg = <0x481cc000 0x2000 229 + 0x44e10644 0x4>; 231 230 interrupts = <52>; 232 231 status = "disabled"; 233 232 }; ··· 236 233 dcan1: d_can@481d0000 { 237 234 compatible = "bosch,d_can"; 238 235 ti,hwmods = "d_can1"; 239 - reg = <0x481d0000 0x2000>; 236 + reg = <0x481d0000 0x2000 237 + 0x44e10644 0x4>; 240 238 interrupts = <55>; 241 239 status = "disabled"; 242 240 }; 243 241 244 242 timer1: timer@44e31000 { 245 - compatible = "ti,omap2-timer"; 243 + compatible = "ti,am335x-timer-1ms"; 246 244 reg = <0x44e31000 0x400>; 247 245 interrupts = <67>; 248 246 ti,hwmods = "timer1"; ··· 251 247 }; 252 248 253 249 timer2: timer@48040000 { 254 - compatible = "ti,omap2-timer"; 250 + compatible = "ti,am335x-timer"; 255 251 reg = <0x48040000 0x400>; 256 252 interrupts = <68>; 257 253 ti,hwmods = "timer2"; 258 254 }; 259 255 260 256 timer3: timer@48042000 { 261 - compatible = "ti,omap2-timer"; 257 + compatible = "ti,am335x-timer"; 262 258 reg = <0x48042000 0x400>; 263 259 interrupts = <69>; 264 260 ti,hwmods = "timer3"; 265 261 }; 266 262 267 263 timer4: timer@48044000 { 268 - compatible = "ti,omap2-timer"; 264 + compatible = "ti,am335x-timer"; 269 265 reg = <0x48044000 0x400>; 270 266 interrupts = <92>; 271 267 ti,hwmods = "timer4"; ··· 273 269 }; 274 270 275 271 timer5: timer@48046000 { 276 - compatible = "ti,omap2-timer"; 272 + compatible = "ti,am335x-timer"; 277 273 reg = <0x48046000 0x400>; 278 274 interrupts = <93>; 279 275 ti,hwmods = "timer5"; ··· 281 277 }; 282 278 283 279 timer6: timer@48048000 { 284 - compatible = "ti,omap2-timer"; 280 + compatible = "ti,am335x-timer"; 285 281 reg = <0x48048000 0x400>; 286 282 interrupts = <94>; 287 283 ti,hwmods = "timer6"; ··· 289 285 }; 290 286 291 287 timer7: timer@4804a000 { 292 - compatible = "ti,omap2-timer"; 288 + compatible = "ti,am335x-timer"; 293 289 reg = <0x4804a000 0x400>; 294 290 interrupts = <95>; 295 291 ti,hwmods = "timer7"; ··· 309 305 #address-cells = <1>; 310 306 #size-cells = <0>; 311 307 reg = <0x48030000 0x400>; 312 - interrupt = <65>; 308 + interrupts = <65>; 313 309 ti,spi-num-cs = <2>; 314 310 ti,hwmods = "spi0"; 315 311 status = "disabled"; ··· 320 316 #address-cells = <1>; 321 317 #size-cells = <0>; 322 318 reg = <0x481a0000 0x400>; 323 - interrupt = <125>; 319 + interrupts = <125>; 324 320 ti,spi-num-cs = <2>; 325 321 ti,hwmods = "spi1"; 326 322 status = "disabled";
+1 -1
arch/arm/boot/dts/am3517-evm.dts
··· 7 7 */ 8 8 /dts-v1/; 9 9 10 - /include/ "omap3.dtsi" 10 + /include/ "omap34xx.dtsi" 11 11 12 12 / { 13 13 model = "TI AM3517 EVM (AM3517/05)";
+1 -1
arch/arm/boot/dts/am3517_mt_ventoux.dts
··· 7 7 */ 8 8 /dts-v1/; 9 9 10 - /include/ "omap3.dtsi" 10 + /include/ "omap34xx.dtsi" 11 11 12 12 / { 13 13 model = "TeeJet Mt.Ventoux";
+78 -76
arch/arm/boot/dts/armada-370-db.dts
··· 30 30 }; 31 31 32 32 soc { 33 - serial@d0012000 { 34 - clock-frequency = <200000000>; 35 - status = "okay"; 36 - }; 37 - sata@d00a0000 { 38 - nr-ports = <2>; 39 - status = "okay"; 40 - }; 41 - 42 - mdio { 43 - phy0: ethernet-phy@0 { 44 - reg = <0>; 45 - }; 46 - 47 - phy1: ethernet-phy@1 { 48 - reg = <1>; 49 - }; 50 - }; 51 - 52 - ethernet@d0070000 { 53 - status = "okay"; 54 - phy = <&phy0>; 55 - phy-mode = "rgmii-id"; 56 - }; 57 - ethernet@d0074000 { 58 - status = "okay"; 59 - phy = <&phy1>; 60 - phy-mode = "rgmii-id"; 61 - }; 62 - 63 - mvsdio@d00d4000 { 64 - pinctrl-0 = <&sdio_pins1>; 65 - pinctrl-names = "default"; 66 - /* 67 - * This device is disabled by default, because 68 - * using the SD card connector requires 69 - * changing the default CON40 connector 70 - * "DB-88F6710_MPP_2xRGMII_DEVICE_Jumper" to a 71 - * different connector 72 - * "DB-88F6710_MPP_RGMII_SD_Jumper". 73 - */ 74 - status = "disabled"; 75 - /* No CD or WP GPIOs */ 76 - }; 77 - 78 - usb@d0050000 { 79 - status = "okay"; 80 - }; 81 - 82 - usb@d0051000 { 83 - status = "okay"; 84 - }; 85 - 86 - spi0: spi@d0010600 { 87 - status = "okay"; 88 - 89 - spi-flash@0 { 90 - #address-cells = <1>; 91 - #size-cells = <1>; 92 - compatible = "mx25l25635e"; 93 - reg = <0>; /* Chip select 0 */ 94 - spi-max-frequency = <50000000>; 95 - }; 96 - }; 97 - 98 - pcie-controller { 99 - status = "okay"; 100 - /* 101 - * The two PCIe units are accessible through 102 - * both standard PCIe slots and mini-PCIe 103 - * slots on the board. 104 - */ 105 - pcie@1,0 { 106 - /* Port 0, Lane 0 */ 33 + internal-regs { 34 + serial@12000 { 35 + clock-frequency = <200000000>; 107 36 status = "okay"; 108 37 }; 109 - pcie@2,0 { 110 - /* Port 1, Lane 0 */ 38 + sata@a0000 { 39 + nr-ports = <2>; 111 40 status = "okay"; 41 + }; 42 + 43 + mdio { 44 + phy0: ethernet-phy@0 { 45 + reg = <0>; 46 + }; 47 + 48 + phy1: ethernet-phy@1 { 49 + reg = <1>; 50 + }; 51 + }; 52 + 53 + ethernet@70000 { 54 + status = "okay"; 55 + phy = <&phy0>; 56 + phy-mode = "rgmii-id"; 57 + }; 58 + ethernet@74000 { 59 + status = "okay"; 60 + phy = <&phy1>; 61 + phy-mode = "rgmii-id"; 62 + }; 63 + 64 + mvsdio@d4000 { 65 + pinctrl-0 = <&sdio_pins1>; 66 + pinctrl-names = "default"; 67 + /* 68 + * This device is disabled by default, because 69 + * using the SD card connector requires 70 + * changing the default CON40 connector 71 + * "DB-88F6710_MPP_2xRGMII_DEVICE_Jumper" to a 72 + * different connector 73 + * "DB-88F6710_MPP_RGMII_SD_Jumper". 74 + */ 75 + status = "disabled"; 76 + /* No CD or WP GPIOs */ 77 + }; 78 + 79 + usb@50000 { 80 + status = "okay"; 81 + }; 82 + 83 + usb@51000 { 84 + status = "okay"; 85 + }; 86 + 87 + spi0: spi@10600 { 88 + status = "okay"; 89 + 90 + spi-flash@0 { 91 + #address-cells = <1>; 92 + #size-cells = <1>; 93 + compatible = "mx25l25635e"; 94 + reg = <0>; /* Chip select 0 */ 95 + spi-max-frequency = <50000000>; 96 + }; 97 + }; 98 + 99 + pcie-controller { 100 + status = "okay"; 101 + /* 102 + * The two PCIe units are accessible through 103 + * both standard PCIe slots and mini-PCIe 104 + * slots on the board. 105 + */ 106 + pcie@1,0 { 107 + /* Port 0, Lane 0 */ 108 + status = "okay"; 109 + }; 110 + pcie@2,0 { 111 + /* Port 1, Lane 0 */ 112 + status = "okay"; 113 + }; 112 114 }; 113 115 }; 114 116 };
+104 -102
arch/arm/boot/dts/armada-370-mirabox.dts
··· 25 25 }; 26 26 27 27 soc { 28 - serial@d0012000 { 29 - clock-frequency = <200000000>; 30 - status = "okay"; 31 - }; 32 - timer@d0020300 { 33 - clock-frequency = <600000000>; 34 - status = "okay"; 35 - }; 36 - 37 - pinctrl { 38 - pwr_led_pin: pwr-led-pin { 39 - marvell,pins = "mpp63"; 40 - marvell,function = "gpo"; 28 + internal-regs { 29 + serial@12000 { 30 + clock-frequency = <200000000>; 31 + status = "okay"; 41 32 }; 42 - 43 - stat_led_pins: stat-led-pins { 44 - marvell,pins = "mpp64", "mpp65"; 45 - marvell,function = "gpio"; 46 - }; 47 - }; 48 - 49 - gpio_leds { 50 - compatible = "gpio-leds"; 51 - pinctrl-names = "default"; 52 - pinctrl-0 = <&pwr_led_pin &stat_led_pins>; 53 - 54 - green_pwr_led { 55 - label = "mirabox:green:pwr"; 56 - gpios = <&gpio1 31 1>; 57 - linux,default-trigger = "heartbeat"; 58 - }; 59 - 60 - blue_stat_led { 61 - label = "mirabox:blue:stat"; 62 - gpios = <&gpio2 0 1>; 63 - linux,default-trigger = "cpu0"; 64 - }; 65 - 66 - green_stat_led { 67 - label = "mirabox:green:stat"; 68 - gpios = <&gpio2 1 1>; 69 - default-state = "off"; 70 - }; 71 - }; 72 - 73 - mdio { 74 - phy0: ethernet-phy@0 { 75 - reg = <0>; 76 - }; 77 - 78 - phy1: ethernet-phy@1 { 79 - reg = <1>; 80 - }; 81 - }; 82 - ethernet@d0070000 { 83 - status = "okay"; 84 - phy = <&phy0>; 85 - phy-mode = "rgmii-id"; 86 - }; 87 - ethernet@d0074000 { 88 - status = "okay"; 89 - phy = <&phy1>; 90 - phy-mode = "rgmii-id"; 91 - }; 92 - 93 - mvsdio@d00d4000 { 94 - pinctrl-0 = <&sdio_pins3>; 95 - pinctrl-names = "default"; 96 - status = "okay"; 97 - /* 98 - * No CD or WP GPIOs: SDIO interface used for 99 - * Wifi/Bluetooth chip 100 - */ 101 - }; 102 - 103 - usb@d0050000 { 104 - status = "okay"; 105 - }; 106 - 107 - usb@d0051000 { 108 - status = "okay"; 109 - }; 110 - 111 - i2c@d0011000 { 112 - status = "okay"; 113 - clock-frequency = <100000>; 114 - pca9505: pca9505@25 { 115 - compatible = "nxp,pca9505"; 116 - gpio-controller; 117 - #gpio-cells = <2>; 118 - reg = <0x25>; 119 - }; 120 - }; 121 - 122 - pcie-controller { 123 - status = "okay"; 124 - 125 - /* Internal mini-PCIe connector */ 126 - pcie@1,0 { 127 - /* Port 0, Lane 0 */ 33 + timer@20300 { 34 + clock-frequency = <600000000>; 128 35 status = "okay"; 129 36 }; 130 37 131 - /* Connected on the PCB to a USB 3.0 XHCI controller */ 132 - pcie@2,0 { 133 - /* Port 1, Lane 0 */ 38 + pinctrl { 39 + pwr_led_pin: pwr-led-pin { 40 + marvell,pins = "mpp63"; 41 + marvell,function = "gpo"; 42 + }; 43 + 44 + stat_led_pins: stat-led-pins { 45 + marvell,pins = "mpp64", "mpp65"; 46 + marvell,function = "gpio"; 47 + }; 48 + }; 49 + 50 + gpio_leds { 51 + compatible = "gpio-leds"; 52 + pinctrl-names = "default"; 53 + pinctrl-0 = <&pwr_led_pin &stat_led_pins>; 54 + 55 + green_pwr_led { 56 + label = "mirabox:green:pwr"; 57 + gpios = <&gpio1 31 1>; 58 + linux,default-trigger = "heartbeat"; 59 + }; 60 + 61 + blue_stat_led { 62 + label = "mirabox:blue:stat"; 63 + gpios = <&gpio2 0 1>; 64 + linux,default-trigger = "cpu0"; 65 + }; 66 + 67 + green_stat_led { 68 + label = "mirabox:green:stat"; 69 + gpios = <&gpio2 1 1>; 70 + default-state = "off"; 71 + }; 72 + }; 73 + 74 + mdio { 75 + phy0: ethernet-phy@0 { 76 + reg = <0>; 77 + }; 78 + 79 + phy1: ethernet-phy@1 { 80 + reg = <1>; 81 + }; 82 + }; 83 + ethernet@70000 { 134 84 status = "okay"; 85 + phy = <&phy0>; 86 + phy-mode = "rgmii-id"; 87 + }; 88 + ethernet@74000 { 89 + status = "okay"; 90 + phy = <&phy1>; 91 + phy-mode = "rgmii-id"; 92 + }; 93 + 94 + mvsdio@d4000 { 95 + pinctrl-0 = <&sdio_pins3>; 96 + pinctrl-names = "default"; 97 + status = "okay"; 98 + /* 99 + * No CD or WP GPIOs: SDIO interface used for 100 + * Wifi/Bluetooth chip 101 + */ 102 + }; 103 + 104 + usb@50000 { 105 + status = "okay"; 106 + }; 107 + 108 + usb@51000 { 109 + status = "okay"; 110 + }; 111 + 112 + i2c@11000 { 113 + status = "okay"; 114 + clock-frequency = <100000>; 115 + pca9505: pca9505@25 { 116 + compatible = "nxp,pca9505"; 117 + gpio-controller; 118 + #gpio-cells = <2>; 119 + reg = <0x25>; 120 + }; 121 + }; 122 + 123 + pcie-controller { 124 + status = "okay"; 125 + 126 + /* Internal mini-PCIe connector */ 127 + pcie@1,0 { 128 + /* Port 0, Lane 0 */ 129 + status = "okay"; 130 + }; 131 + 132 + /* Connected on the PCB to a USB 3.0 XHCI controller */ 133 + pcie@2,0 { 134 + /* Port 1, Lane 0 */ 135 + status = "okay"; 136 + }; 135 137 }; 136 138 }; 137 139 };
+54 -52
arch/arm/boot/dts/armada-370-rd.dts
··· 28 28 }; 29 29 30 30 soc { 31 - serial@d0012000 { 32 - clock-frequency = <200000000>; 33 - status = "okay"; 34 - }; 35 - sata@d00a0000 { 36 - nr-ports = <2>; 37 - status = "okay"; 38 - }; 39 - 40 - mdio { 41 - phy0: ethernet-phy@0 { 42 - reg = <0>; 31 + internal-regs { 32 + serial@12000 { 33 + clock-frequency = <200000000>; 34 + status = "okay"; 35 + }; 36 + sata@a0000 { 37 + nr-ports = <2>; 38 + status = "okay"; 43 39 }; 44 40 45 - phy1: ethernet-phy@1 { 46 - reg = <1>; 41 + mdio { 42 + phy0: ethernet-phy@0 { 43 + reg = <0>; 44 + }; 45 + 46 + phy1: ethernet-phy@1 { 47 + reg = <1>; 48 + }; 49 + }; 50 + 51 + ethernet@70000 { 52 + status = "okay"; 53 + phy = <&phy0>; 54 + phy-mode = "sgmii"; 55 + }; 56 + ethernet@74000 { 57 + status = "okay"; 58 + phy = <&phy1>; 59 + phy-mode = "rgmii-id"; 60 + }; 61 + 62 + mvsdio@d4000 { 63 + pinctrl-0 = <&sdio_pins1>; 64 + pinctrl-names = "default"; 65 + status = "okay"; 66 + /* No CD or WP GPIOs */ 67 + }; 68 + 69 + usb@50000 { 70 + status = "okay"; 71 + }; 72 + 73 + usb@51000 { 74 + status = "okay"; 75 + }; 76 + 77 + gpio-keys { 78 + compatible = "gpio-keys"; 79 + #address-cells = <1>; 80 + #size-cells = <0>; 81 + button@1 { 82 + label = "Software Button"; 83 + linux,code = <116>; 84 + gpios = <&gpio0 6 1>; 85 + }; 47 86 }; 48 87 }; 49 - 50 - ethernet@d0070000 { 51 - status = "okay"; 52 - phy = <&phy0>; 53 - phy-mode = "sgmii"; 54 - }; 55 - ethernet@d0074000 { 56 - status = "okay"; 57 - phy = <&phy1>; 58 - phy-mode = "rgmii-id"; 59 - }; 60 - 61 - mvsdio@d00d4000 { 62 - pinctrl-0 = <&sdio_pins1>; 63 - pinctrl-names = "default"; 64 - status = "okay"; 65 - /* No CD or WP GPIOs */ 66 - }; 67 - 68 - usb@d0050000 { 69 - status = "okay"; 70 - }; 71 - 72 - usb@d0051000 { 73 - status = "okay"; 74 - }; 75 88 }; 76 - 77 - gpio-keys { 78 - compatible = "gpio-keys"; 79 - #address-cells = <1>; 80 - #size-cells = <0>; 81 - button@1 { 82 - label = "Software Button"; 83 - linux,code = <116>; 84 - gpios = <&gpio0 6 1>; 85 - }; 86 - }; 87 - }; 89 + };
+157 -153
arch/arm/boot/dts/armada-370-xp.dtsi
··· 16 16 * 370 and Armada XP SoC. 17 17 */ 18 18 19 - /include/ "skeleton.dtsi" 19 + /include/ "skeleton64.dtsi" 20 20 21 21 / { 22 22 model = "Marvell Armada 370 and XP SoC"; ··· 28 28 }; 29 29 }; 30 30 31 - mpic: interrupt-controller@d0020000 { 32 - compatible = "marvell,mpic"; 33 - #interrupt-cells = <1>; 34 - #size-cells = <1>; 35 - interrupt-controller; 36 - }; 37 - 38 - coherency-fabric@d0020200 { 39 - compatible = "marvell,coherency-fabric"; 40 - reg = <0xd0020200 0xb0>, 41 - <0xd0021810 0x1c>; 42 - }; 43 - 44 31 soc { 45 32 #address-cells = <1>; 46 33 #size-cells = <1>; 47 34 compatible = "simple-bus"; 48 35 interrupt-parent = <&mpic>; 49 - ranges; 36 + ranges = <0 0 0xd0000000 0x100000>; 50 37 51 - serial@d0012000 { 38 + internal-regs { 39 + compatible = "simple-bus"; 40 + #address-cells = <1>; 41 + #size-cells = <1>; 42 + ranges; 43 + 44 + mpic: interrupt-controller@20000 { 45 + compatible = "marvell,mpic"; 46 + #interrupt-cells = <1>; 47 + #size-cells = <1>; 48 + interrupt-controller; 49 + }; 50 + 51 + coherency-fabric@20200 { 52 + compatible = "marvell,coherency-fabric"; 53 + reg = <0x20200 0xb0>, <0x21810 0x1c>; 54 + }; 55 + 56 + serial@12000 { 52 57 compatible = "snps,dw-apb-uart"; 53 - reg = <0xd0012000 0x100>; 58 + reg = <0x12000 0x100>; 54 59 reg-shift = <2>; 55 60 interrupts = <41>; 56 61 reg-io-width = <1>; 57 62 status = "disabled"; 58 - }; 59 - serial@d0012100 { 63 + }; 64 + serial@12100 { 60 65 compatible = "snps,dw-apb-uart"; 61 - reg = <0xd0012100 0x100>; 66 + reg = <0x12100 0x100>; 62 67 reg-shift = <2>; 63 68 interrupts = <42>; 64 69 reg-io-width = <1>; 65 70 status = "disabled"; 66 - }; 71 + }; 67 72 68 - timer@d0020300 { 69 - compatible = "marvell,armada-370-xp-timer"; 70 - reg = <0xd0020300 0x30>, 71 - <0xd0021040 0x30>; 72 - interrupts = <37>, <38>, <39>, <40>, <5>, <6>; 73 - clocks = <&coreclk 2>; 74 - }; 73 + timer@20300 { 74 + compatible = "marvell,armada-370-xp-timer"; 75 + reg = <0x20300 0x30>, <0x21040 0x30>; 76 + interrupts = <37>, <38>, <39>, <40>, <5>, <6>; 77 + clocks = <&coreclk 2>; 78 + }; 75 79 76 - sata@d00a0000 { 77 - compatible = "marvell,orion-sata"; 78 - reg = <0xd00a0000 0x2400>; 79 - interrupts = <55>; 80 - clocks = <&gateclk 15>, <&gateclk 30>; 81 - clock-names = "0", "1"; 82 - status = "disabled"; 83 - }; 80 + sata@a0000 { 81 + compatible = "marvell,orion-sata"; 82 + reg = <0xa0000 0x2400>; 83 + interrupts = <55>; 84 + clocks = <&gateclk 15>, <&gateclk 30>; 85 + clock-names = "0", "1"; 86 + status = "disabled"; 87 + }; 84 88 85 - mdio { 86 - #address-cells = <1>; 87 - #size-cells = <0>; 88 - compatible = "marvell,orion-mdio"; 89 - reg = <0xd0072004 0x4>; 90 - }; 89 + mdio { 90 + #address-cells = <1>; 91 + #size-cells = <0>; 92 + compatible = "marvell,orion-mdio"; 93 + reg = <0x72004 0x4>; 94 + }; 91 95 92 - ethernet@d0070000 { 96 + ethernet@70000 { 93 97 compatible = "marvell,armada-370-neta"; 94 - reg = <0xd0070000 0x2500>; 98 + reg = <0x70000 0x2500>; 95 99 interrupts = <8>; 96 100 clocks = <&gateclk 4>; 97 101 status = "disabled"; 98 - }; 102 + }; 99 103 100 - ethernet@d0074000 { 104 + ethernet@74000 { 101 105 compatible = "marvell,armada-370-neta"; 102 - reg = <0xd0074000 0x2500>; 106 + reg = <0x74000 0x2500>; 103 107 interrupts = <10>; 104 108 clocks = <&gateclk 3>; 105 109 status = "disabled"; 106 - }; 110 + }; 107 111 108 - i2c0: i2c@d0011000 { 109 - compatible = "marvell,mv64xxx-i2c"; 110 - reg = <0xd0011000 0x20>; 111 - #address-cells = <1>; 112 - #size-cells = <0>; 113 - interrupts = <31>; 114 - timeout-ms = <1000>; 115 - clocks = <&coreclk 0>; 116 - status = "disabled"; 117 - }; 112 + i2c0: i2c@11000 { 113 + compatible = "marvell,mv64xxx-i2c"; 114 + reg = <0x11000 0x20>; 115 + #address-cells = <1>; 116 + #size-cells = <0>; 117 + interrupts = <31>; 118 + timeout-ms = <1000>; 119 + clocks = <&coreclk 0>; 120 + status = "disabled"; 121 + }; 118 122 119 - i2c1: i2c@d0011100 { 120 - compatible = "marvell,mv64xxx-i2c"; 121 - reg = <0xd0011100 0x20>; 122 - #address-cells = <1>; 123 - #size-cells = <0>; 124 - interrupts = <32>; 125 - timeout-ms = <1000>; 126 - clocks = <&coreclk 0>; 127 - status = "disabled"; 128 - }; 123 + i2c1: i2c@11100 { 124 + compatible = "marvell,mv64xxx-i2c"; 125 + reg = <0x11100 0x20>; 126 + #address-cells = <1>; 127 + #size-cells = <0>; 128 + interrupts = <32>; 129 + timeout-ms = <1000>; 130 + clocks = <&coreclk 0>; 131 + status = "disabled"; 132 + }; 129 133 130 - rtc@10300 { 131 - compatible = "marvell,orion-rtc"; 132 - reg = <0xd0010300 0x20>; 133 - interrupts = <50>; 134 - }; 134 + rtc@10300 { 135 + compatible = "marvell,orion-rtc"; 136 + reg = <0x10300 0x20>; 137 + interrupts = <50>; 138 + }; 135 139 136 - mvsdio@d00d4000 { 137 - compatible = "marvell,orion-sdio"; 138 - reg = <0xd00d4000 0x200>; 139 - interrupts = <54>; 140 - clocks = <&gateclk 17>; 141 - status = "disabled"; 142 - }; 140 + mvsdio@d4000 { 141 + compatible = "marvell,orion-sdio"; 142 + reg = <0xd4000 0x200>; 143 + interrupts = <54>; 144 + clocks = <&gateclk 17>; 145 + status = "disabled"; 146 + }; 143 147 144 - usb@d0050000 { 145 - compatible = "marvell,orion-ehci"; 146 - reg = <0xd0050000 0x500>; 147 - interrupts = <45>; 148 - status = "disabled"; 149 - }; 148 + usb@50000 { 149 + compatible = "marvell,orion-ehci"; 150 + reg = <0x50000 0x500>; 151 + interrupts = <45>; 152 + status = "disabled"; 153 + }; 150 154 151 - usb@d0051000 { 152 - compatible = "marvell,orion-ehci"; 153 - reg = <0xd0051000 0x500>; 154 - interrupts = <46>; 155 - status = "disabled"; 156 - }; 155 + usb@51000 { 156 + compatible = "marvell,orion-ehci"; 157 + reg = <0x51000 0x500>; 158 + interrupts = <46>; 159 + status = "disabled"; 160 + }; 157 161 158 - spi0: spi@d0010600 { 159 - compatible = "marvell,orion-spi"; 160 - reg = <0xd0010600 0x28>; 161 - #address-cells = <1>; 162 - #size-cells = <0>; 163 - cell-index = <0>; 164 - interrupts = <30>; 165 - clocks = <&coreclk 0>; 166 - status = "disabled"; 167 - }; 162 + spi0: spi@10600 { 163 + compatible = "marvell,orion-spi"; 164 + reg = <0x10600 0x28>; 165 + #address-cells = <1>; 166 + #size-cells = <0>; 167 + cell-index = <0>; 168 + interrupts = <30>; 169 + clocks = <&coreclk 0>; 170 + status = "disabled"; 171 + }; 168 172 169 - spi1: spi@d0010680 { 170 - compatible = "marvell,orion-spi"; 171 - reg = <0xd0010680 0x28>; 172 - #address-cells = <1>; 173 - #size-cells = <0>; 174 - cell-index = <1>; 175 - interrupts = <92>; 176 - clocks = <&coreclk 0>; 177 - status = "disabled"; 178 - }; 173 + spi1: spi@10680 { 174 + compatible = "marvell,orion-spi"; 175 + reg = <0x10680 0x28>; 176 + #address-cells = <1>; 177 + #size-cells = <0>; 178 + cell-index = <1>; 179 + interrupts = <92>; 180 + clocks = <&coreclk 0>; 181 + status = "disabled"; 182 + }; 179 183 180 - devbus-bootcs@d0010400 { 181 - compatible = "marvell,mvebu-devbus"; 182 - reg = <0xd0010400 0x8>; 183 - #address-cells = <1>; 184 - #size-cells = <1>; 185 - clocks = <&coreclk 0>; 186 - status = "disabled"; 187 - }; 184 + devbus-bootcs@10400 { 185 + compatible = "marvell,mvebu-devbus"; 186 + reg = <0x10400 0x8>; 187 + #address-cells = <1>; 188 + #size-cells = <1>; 189 + clocks = <&coreclk 0>; 190 + status = "disabled"; 191 + }; 188 192 189 - devbus-cs0@d0010408 { 190 - compatible = "marvell,mvebu-devbus"; 191 - reg = <0xd0010408 0x8>; 192 - #address-cells = <1>; 193 - #size-cells = <1>; 194 - clocks = <&coreclk 0>; 195 - status = "disabled"; 196 - }; 193 + devbus-cs0@10408 { 194 + compatible = "marvell,mvebu-devbus"; 195 + reg = <0x10408 0x8>; 196 + #address-cells = <1>; 197 + #size-cells = <1>; 198 + clocks = <&coreclk 0>; 199 + status = "disabled"; 200 + }; 197 201 198 - devbus-cs1@d0010410 { 199 - compatible = "marvell,mvebu-devbus"; 200 - reg = <0xd0010410 0x8>; 201 - #address-cells = <1>; 202 - #size-cells = <1>; 203 - clocks = <&coreclk 0>; 204 - status = "disabled"; 205 - }; 202 + devbus-cs1@10410 { 203 + compatible = "marvell,mvebu-devbus"; 204 + reg = <0x10410 0x8>; 205 + #address-cells = <1>; 206 + #size-cells = <1>; 207 + clocks = <&coreclk 0>; 208 + status = "disabled"; 209 + }; 206 210 207 - devbus-cs2@d0010418 { 208 - compatible = "marvell,mvebu-devbus"; 209 - reg = <0xd0010418 0x8>; 210 - #address-cells = <1>; 211 - #size-cells = <1>; 212 - clocks = <&coreclk 0>; 213 - status = "disabled"; 214 - }; 211 + devbus-cs2@10418 { 212 + compatible = "marvell,mvebu-devbus"; 213 + reg = <0x10418 0x8>; 214 + #address-cells = <1>; 215 + #size-cells = <1>; 216 + clocks = <&coreclk 0>; 217 + status = "disabled"; 218 + }; 215 219 216 - devbus-cs3@d0010420 { 217 - compatible = "marvell,mvebu-devbus"; 218 - reg = <0xd0010420 0x8>; 219 - #address-cells = <1>; 220 - #size-cells = <1>; 221 - clocks = <&coreclk 0>; 222 - status = "disabled"; 220 + devbus-cs3@10420 { 221 + compatible = "marvell,mvebu-devbus"; 222 + reg = <0x10420 0x8>; 223 + #address-cells = <1>; 224 + #size-cells = <1>; 225 + clocks = <&coreclk 0>; 226 + status = "disabled"; 227 + }; 223 228 }; 224 229 }; 225 - }; 226 - 230 + };
+162 -158
arch/arm/boot/dts/armada-370.dtsi
··· 16 16 */ 17 17 18 18 /include/ "armada-370-xp.dtsi" 19 + /include/ "skeleton.dtsi" 19 20 20 21 / { 21 22 model = "Marvell Armada 370 family SoC"; 22 23 compatible = "marvell,armada370", "marvell,armada-370-xp"; 23 - L2: l2-cache { 24 - compatible = "marvell,aurora-outer-cache"; 25 - reg = <0xd0008000 0x1000>; 26 - cache-id-part = <0x100>; 27 - wt-override; 28 - }; 29 24 30 25 aliases { 31 26 gpio0 = &gpio0; ··· 28 33 gpio2 = &gpio2; 29 34 }; 30 35 31 - mpic: interrupt-controller@d0020000 { 32 - reg = <0xd0020a00 0x1d0>, 33 - <0xd0021870 0x58>; 34 - }; 35 - 36 36 soc { 37 - system-controller@d0018200 { 37 + ranges = <0 0xd0000000 0x100000>; 38 + internal-regs { 39 + system-controller@18200 { 38 40 compatible = "marvell,armada-370-xp-system-controller"; 39 - reg = <0xd0018200 0x100>; 40 - }; 41 - 42 - pinctrl { 43 - compatible = "marvell,mv88f6710-pinctrl"; 44 - reg = <0xd0018000 0x38>; 45 - 46 - sdio_pins1: sdio-pins1 { 47 - marvell,pins = "mpp9", "mpp11", "mpp12", 48 - "mpp13", "mpp14", "mpp15"; 49 - marvell,function = "sd0"; 41 + reg = <0x18200 0x100>; 50 42 }; 51 43 52 - sdio_pins2: sdio-pins2 { 53 - marvell,pins = "mpp47", "mpp48", "mpp49", 54 - "mpp50", "mpp51", "mpp52"; 55 - marvell,function = "sd0"; 44 + L2: l2-cache { 45 + compatible = "marvell,aurora-outer-cache"; 46 + reg = <0xd0008000 0x1000>; 47 + cache-id-part = <0x100>; 48 + wt-override; 56 49 }; 57 50 58 - sdio_pins3: sdio-pins3 { 59 - marvell,pins = "mpp48", "mpp49", "mpp50", 60 - "mpp51", "mpp52", "mpp53"; 61 - marvell,function = "sd0"; 51 + mpic: interrupt-controller@20000 { 52 + reg = <0x20a00 0x1d0>, <0x21870 0x58>; 62 53 }; 63 - }; 64 54 65 - gpio0: gpio@d0018100 { 66 - compatible = "marvell,orion-gpio"; 67 - reg = <0xd0018100 0x40>; 68 - ngpios = <32>; 69 - gpio-controller; 70 - #gpio-cells = <2>; 71 - interrupt-controller; 72 - #interrupts-cells = <2>; 73 - interrupts = <82>, <83>, <84>, <85>; 74 - }; 55 + pinctrl { 56 + compatible = "marvell,mv88f6710-pinctrl"; 57 + reg = <0x18000 0x38>; 75 58 76 - gpio1: gpio@d0018140 { 77 - compatible = "marvell,orion-gpio"; 78 - reg = <0xd0018140 0x40>; 79 - ngpios = <32>; 80 - gpio-controller; 81 - #gpio-cells = <2>; 82 - interrupt-controller; 83 - #interrupts-cells = <2>; 84 - interrupts = <87>, <88>, <89>, <90>; 85 - }; 59 + sdio_pins1: sdio-pins1 { 60 + marvell,pins = "mpp9", "mpp11", "mpp12", 61 + "mpp13", "mpp14", "mpp15"; 62 + marvell,function = "sd0"; 63 + }; 86 64 87 - gpio2: gpio@d0018180 { 88 - compatible = "marvell,orion-gpio"; 89 - reg = <0xd0018180 0x40>; 90 - ngpios = <2>; 91 - gpio-controller; 92 - #gpio-cells = <2>; 93 - interrupt-controller; 94 - #interrupts-cells = <2>; 95 - interrupts = <91>; 96 - }; 65 + sdio_pins2: sdio-pins2 { 66 + marvell,pins = "mpp47", "mpp48", "mpp49", 67 + "mpp50", "mpp51", "mpp52"; 68 + marvell,function = "sd0"; 69 + }; 97 70 98 - coreclk: mvebu-sar@d0018230 { 99 - compatible = "marvell,armada-370-core-clock"; 100 - reg = <0xd0018230 0x08>; 101 - #clock-cells = <1>; 102 - }; 103 - 104 - gateclk: clock-gating-control@d0018220 { 105 - compatible = "marvell,armada-370-gating-clock"; 106 - reg = <0xd0018220 0x4>; 107 - clocks = <&coreclk 0>; 108 - #clock-cells = <1>; 109 - }; 110 - 111 - xor@d0060800 { 112 - compatible = "marvell,orion-xor"; 113 - reg = <0xd0060800 0x100 114 - 0xd0060A00 0x100>; 115 - status = "okay"; 116 - 117 - xor00 { 118 - interrupts = <51>; 119 - dmacap,memcpy; 120 - dmacap,xor; 71 + sdio_pins3: sdio-pins3 { 72 + marvell,pins = "mpp48", "mpp49", "mpp50", 73 + "mpp51", "mpp52", "mpp53"; 74 + marvell,function = "sd0"; 75 + }; 121 76 }; 122 - xor01 { 123 - interrupts = <52>; 124 - dmacap,memcpy; 125 - dmacap,xor; 126 - dmacap,memset; 77 + 78 + gpio0: gpio@18100 { 79 + compatible = "marvell,orion-gpio"; 80 + reg = <0x18100 0x40>; 81 + ngpios = <32>; 82 + gpio-controller; 83 + #gpio-cells = <2>; 84 + interrupt-controller; 85 + #interrupts-cells = <2>; 86 + interrupts = <82>, <83>, <84>, <85>; 127 87 }; 128 - }; 129 88 130 - xor@d0060900 { 131 - compatible = "marvell,orion-xor"; 132 - reg = <0xd0060900 0x100 133 - 0xd0060b00 0x100>; 134 - status = "okay"; 135 - 136 - xor10 { 137 - interrupts = <94>; 138 - dmacap,memcpy; 139 - dmacap,xor; 89 + gpio1: gpio@18140 { 90 + compatible = "marvell,orion-gpio"; 91 + reg = <0x18140 0x40>; 92 + ngpios = <32>; 93 + gpio-controller; 94 + #gpio-cells = <2>; 95 + interrupt-controller; 96 + #interrupts-cells = <2>; 97 + interrupts = <87>, <88>, <89>, <90>; 140 98 }; 141 - xor11 { 142 - interrupts = <95>; 143 - dmacap,memcpy; 144 - dmacap,xor; 145 - dmacap,memset; 99 + 100 + gpio2: gpio@18180 { 101 + compatible = "marvell,orion-gpio"; 102 + reg = <0x18180 0x40>; 103 + ngpios = <2>; 104 + gpio-controller; 105 + #gpio-cells = <2>; 106 + interrupt-controller; 107 + #interrupts-cells = <2>; 108 + interrupts = <91>; 146 109 }; 147 - }; 148 110 149 - usb@d0050000 { 150 - clocks = <&coreclk 0>; 151 - }; 111 + coreclk: mvebu-sar@18230 { 112 + compatible = "marvell,armada-370-core-clock"; 113 + reg = <0x18230 0x08>; 114 + #clock-cells = <1>; 115 + }; 152 116 153 - usb@d0051000 { 154 - clocks = <&coreclk 0>; 155 - }; 117 + gateclk: clock-gating-control@18220 { 118 + compatible = "marvell,armada-370-gating-clock"; 119 + reg = <0x18220 0x4>; 120 + clocks = <&coreclk 0>; 121 + #clock-cells = <1>; 122 + }; 156 123 157 - thermal@d0018300 { 158 - compatible = "marvell,armada370-thermal"; 159 - reg = <0xd0018300 0x4 160 - 0xd0018304 0x4>; 161 - status = "okay"; 162 - }; 124 + xor@60800 { 125 + compatible = "marvell,orion-xor"; 126 + reg = <0x60800 0x100 127 + 0x60A00 0x100>; 128 + status = "okay"; 163 129 164 - pcie-controller { 165 - compatible = "marvell,armada-370-pcie"; 166 - status = "disabled"; 167 - device_type = "pci"; 130 + xor00 { 131 + interrupts = <51>; 132 + dmacap,memcpy; 133 + dmacap,xor; 134 + }; 135 + xor01 { 136 + interrupts = <52>; 137 + dmacap,memcpy; 138 + dmacap,xor; 139 + dmacap,memset; 140 + }; 141 + }; 168 142 169 - #address-cells = <3>; 170 - #size-cells = <2>; 143 + xor@60900 { 144 + compatible = "marvell,orion-xor"; 145 + reg = <0x60900 0x100 146 + 0x60b00 0x100>; 147 + status = "okay"; 171 148 172 - bus-range = <0x00 0xff>; 149 + xor10 { 150 + interrupts = <94>; 151 + dmacap,memcpy; 152 + dmacap,xor; 153 + }; 154 + xor11 { 155 + interrupts = <95>; 156 + dmacap,memcpy; 157 + dmacap,xor; 158 + dmacap,memset; 159 + }; 160 + }; 173 161 174 - reg = <0xd0040000 0x2000>, <0xd0080000 0x2000>; 162 + usb@50000 { 163 + clocks = <&coreclk 0>; 164 + }; 175 165 176 - reg-names = "pcie0.0", "pcie1.0"; 166 + usb@51000 { 167 + clocks = <&coreclk 0>; 168 + }; 177 169 178 - ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */ 179 - 0x82000000 0 0xd0080000 0xd0080000 0 0x00002000 /* Port 1.0 registers */ 180 - 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */ 181 - 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */ 170 + thermal@18300 { 171 + compatible = "marvell,armada370-thermal"; 172 + reg = <0x18300 0x4 173 + 0x18304 0x4>; 174 + status = "okay"; 175 + }; 182 176 183 - pcie@1,0 { 177 + pcie-controller { 178 + compatible = "marvell,armada-370-pcie"; 179 + status = "disabled"; 184 180 device_type = "pci"; 185 - assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>; 186 - reg = <0x0800 0 0 0 0>; 181 + 187 182 #address-cells = <3>; 188 183 #size-cells = <2>; 189 - #interrupt-cells = <1>; 190 - ranges; 191 - interrupt-map-mask = <0 0 0 0>; 192 - interrupt-map = <0 0 0 0 &mpic 58>; 193 - marvell,pcie-port = <0>; 194 - marvell,pcie-lane = <0>; 195 - clocks = <&gateclk 5>; 196 - status = "disabled"; 197 - }; 198 184 199 - pcie@2,0 { 200 - device_type = "pci"; 201 - assigned-addresses = <0x82002800 0 0xd0080000 0 0x2000>; 202 - reg = <0x1000 0 0 0 0>; 203 - #address-cells = <3>; 204 - #size-cells = <2>; 205 - #interrupt-cells = <1>; 206 - ranges; 207 - interrupt-map-mask = <0 0 0 0>; 208 - interrupt-map = <0 0 0 0 &mpic 62>; 209 - marvell,pcie-port = <1>; 210 - marvell,pcie-lane = <0>; 211 - clocks = <&gateclk 9>; 212 - status = "disabled"; 185 + bus-range = <0x00 0xff>; 186 + 187 + reg = <0x40000 0x2000>, <0x80000 0x2000>; 188 + 189 + reg-names = "pcie0.0", "pcie1.0"; 190 + 191 + ranges = <0x82000000 0 0x40000 0x40000 0 0x00002000 /* Port 0.0 registers */ 192 + 0x82000000 0 0x80000 0x80000 0 0x00002000 /* Port 1.0 registers */ 193 + 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */ 194 + 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */ 195 + 196 + pcie@1,0 { 197 + device_type = "pci"; 198 + assigned-addresses = <0x82000800 0 0x40000 0 0x2000>; 199 + reg = <0x0800 0 0 0 0>; 200 + #address-cells = <3>; 201 + #size-cells = <2>; 202 + #interrupt-cells = <1>; 203 + ranges; 204 + interrupt-map-mask = <0 0 0 0>; 205 + interrupt-map = <0 0 0 0 &mpic 58>; 206 + marvell,pcie-port = <0>; 207 + marvell,pcie-lane = <0>; 208 + clocks = <&gateclk 5>; 209 + status = "disabled"; 210 + }; 211 + 212 + pcie@2,0 { 213 + device_type = "pci"; 214 + assigned-addresses = <0x82002800 0 0x80000 0 0x2000>; 215 + reg = <0x1000 0 0 0 0>; 216 + #address-cells = <3>; 217 + #size-cells = <2>; 218 + #interrupt-cells = <1>; 219 + ranges; 220 + interrupt-map-mask = <0 0 0 0>; 221 + interrupt-map = <0 0 0 0 &mpic 62>; 222 + marvell,pcie-port = <1>; 223 + marvell,pcie-lane = <0>; 224 + clocks = <&gateclk 9>; 225 + status = "disabled"; 226 + }; 213 227 }; 214 228 }; 215 229 };
+114 -112
arch/arm/boot/dts/armada-xp-db.dts
··· 26 26 27 27 memory { 28 28 device_type = "memory"; 29 - reg = <0x00000000 0x80000000>; /* 2 GB */ 29 + reg = <0 0x00000000 0 0x80000000>; /* 2 GB */ 30 30 }; 31 31 32 32 soc { 33 - serial@d0012000 { 34 - clock-frequency = <250000000>; 35 - status = "okay"; 36 - }; 37 - serial@d0012100 { 38 - clock-frequency = <250000000>; 39 - status = "okay"; 40 - }; 41 - serial@d0012200 { 42 - clock-frequency = <250000000>; 43 - status = "okay"; 44 - }; 45 - serial@d0012300 { 46 - clock-frequency = <250000000>; 47 - status = "okay"; 48 - }; 49 - 50 - sata@d00a0000 { 51 - nr-ports = <2>; 52 - status = "okay"; 53 - }; 54 - 55 - mdio { 56 - phy0: ethernet-phy@0 { 57 - reg = <0>; 58 - }; 59 - 60 - phy1: ethernet-phy@1 { 61 - reg = <1>; 62 - }; 63 - 64 - phy2: ethernet-phy@2 { 65 - reg = <25>; 66 - }; 67 - 68 - phy3: ethernet-phy@3 { 69 - reg = <27>; 70 - }; 71 - }; 72 - 73 - ethernet@d0070000 { 74 - status = "okay"; 75 - phy = <&phy0>; 76 - phy-mode = "rgmii-id"; 77 - }; 78 - ethernet@d0074000 { 79 - status = "okay"; 80 - phy = <&phy1>; 81 - phy-mode = "rgmii-id"; 82 - }; 83 - ethernet@d0030000 { 84 - status = "okay"; 85 - phy = <&phy2>; 86 - phy-mode = "sgmii"; 87 - }; 88 - ethernet@d0034000 { 89 - status = "okay"; 90 - phy = <&phy3>; 91 - phy-mode = "sgmii"; 92 - }; 93 - 94 - mvsdio@d00d4000 { 95 - pinctrl-0 = <&sdio_pins>; 96 - pinctrl-names = "default"; 97 - status = "okay"; 98 - /* No CD or WP GPIOs */ 99 - }; 100 - 101 - usb@d0050000 { 102 - status = "okay"; 103 - }; 104 - 105 - usb@d0051000 { 106 - status = "okay"; 107 - }; 108 - 109 - usb@d0052000 { 110 - status = "okay"; 111 - }; 112 - 113 - spi0: spi@d0010600 { 114 - status = "okay"; 115 - 116 - spi-flash@0 { 117 - #address-cells = <1>; 118 - #size-cells = <1>; 119 - compatible = "m25p64"; 120 - reg = <0>; /* Chip select 0 */ 121 - spi-max-frequency = <20000000>; 122 - }; 123 - }; 124 - 125 - pcie-controller { 126 - status = "okay"; 127 - 128 - /* 129 - * All 6 slots are physically present as 130 - * standard PCIe slots on the board. 131 - */ 132 - pcie@1,0 { 133 - /* Port 0, Lane 0 */ 33 + internal-regs { 34 + serial@12000 { 35 + clock-frequency = <250000000>; 134 36 status = "okay"; 135 37 }; 136 - pcie@2,0 { 137 - /* Port 0, Lane 1 */ 38 + serial@12100 { 39 + clock-frequency = <250000000>; 138 40 status = "okay"; 139 41 }; 140 - pcie@3,0 { 141 - /* Port 0, Lane 2 */ 42 + serial@12200 { 43 + clock-frequency = <250000000>; 142 44 status = "okay"; 143 45 }; 144 - pcie@4,0 { 145 - /* Port 0, Lane 3 */ 46 + serial@12300 { 47 + clock-frequency = <250000000>; 146 48 status = "okay"; 147 49 }; 148 - pcie@9,0 { 149 - /* Port 2, Lane 0 */ 50 + 51 + sata@a0000 { 52 + nr-ports = <2>; 150 53 status = "okay"; 151 54 }; 152 - pcie@10,0 { 153 - /* Port 3, Lane 0 */ 55 + 56 + mdio { 57 + phy0: ethernet-phy@0 { 58 + reg = <0>; 59 + }; 60 + 61 + phy1: ethernet-phy@1 { 62 + reg = <1>; 63 + }; 64 + 65 + phy2: ethernet-phy@2 { 66 + reg = <25>; 67 + }; 68 + 69 + phy3: ethernet-phy@3 { 70 + reg = <27>; 71 + }; 72 + }; 73 + 74 + ethernet@70000 { 154 75 status = "okay"; 76 + phy = <&phy0>; 77 + phy-mode = "rgmii-id"; 78 + }; 79 + ethernet@74000 { 80 + status = "okay"; 81 + phy = <&phy1>; 82 + phy-mode = "rgmii-id"; 83 + }; 84 + ethernet@30000 { 85 + status = "okay"; 86 + phy = <&phy2>; 87 + phy-mode = "sgmii"; 88 + }; 89 + ethernet@34000 { 90 + status = "okay"; 91 + phy = <&phy3>; 92 + phy-mode = "sgmii"; 93 + }; 94 + 95 + mvsdio@d4000 { 96 + pinctrl-0 = <&sdio_pins>; 97 + pinctrl-names = "default"; 98 + status = "okay"; 99 + /* No CD or WP GPIOs */ 100 + }; 101 + 102 + usb@50000 { 103 + status = "okay"; 104 + }; 105 + 106 + usb@51000 { 107 + status = "okay"; 108 + }; 109 + 110 + usb@52000 { 111 + status = "okay"; 112 + }; 113 + 114 + spi0: spi@10600 { 115 + status = "okay"; 116 + 117 + spi-flash@0 { 118 + #address-cells = <1>; 119 + #size-cells = <1>; 120 + compatible = "m25p64"; 121 + reg = <0>; /* Chip select 0 */ 122 + spi-max-frequency = <20000000>; 123 + }; 124 + }; 125 + 126 + pcie-controller { 127 + status = "okay"; 128 + 129 + /* 130 + * All 6 slots are physically present as 131 + * standard PCIe slots on the board. 132 + */ 133 + pcie@1,0 { 134 + /* Port 0, Lane 0 */ 135 + status = "okay"; 136 + }; 137 + pcie@2,0 { 138 + /* Port 0, Lane 1 */ 139 + status = "okay"; 140 + }; 141 + pcie@3,0 { 142 + /* Port 0, Lane 2 */ 143 + status = "okay"; 144 + }; 145 + pcie@4,0 { 146 + /* Port 0, Lane 3 */ 147 + status = "okay"; 148 + }; 149 + pcie@9,0 { 150 + /* Port 2, Lane 0 */ 151 + status = "okay"; 152 + }; 153 + pcie@10,0 { 154 + /* Port 3, Lane 0 */ 155 + status = "okay"; 156 + }; 155 157 }; 156 158 }; 157 159 };
+125 -121
arch/arm/boot/dts/armada-xp-gp.dts
··· 26 26 27 27 memory { 28 28 device_type = "memory"; 29 - 30 29 /* 31 - * 4 GB of plug-in RAM modules by default but only 3GB 32 - * are visible, the amount of memory available can be 33 - * changed by the bootloader according the size of the 34 - * module actually plugged 30 + * 8 GB of plug-in RAM modules by default.The amount 31 + * of memory available can be changed by the 32 + * bootloader according the size of the module 33 + * actually plugged. Only 7GB are usable because 34 + * addresses from 0xC0000000 to 0xffffffff are used by 35 + * the internal registers of the SoC. 35 36 */ 36 - reg = <0x00000000 0xC0000000>; 37 + reg = <0x00000000 0x00000000 0x00000000 0xC0000000>, 38 + <0x00000001 0x00000000 0x00000001 0x00000000>; 37 39 }; 38 40 39 41 soc { 40 - serial@d0012000 { 41 - clock-frequency = <250000000>; 42 - status = "okay"; 43 - }; 44 - serial@d0012100 { 45 - clock-frequency = <250000000>; 46 - status = "okay"; 47 - }; 48 - serial@d0012200 { 49 - clock-frequency = <250000000>; 50 - status = "okay"; 51 - }; 52 - serial@d0012300 { 53 - clock-frequency = <250000000>; 54 - status = "okay"; 55 - }; 56 - 57 - sata@d00a0000 { 58 - nr-ports = <2>; 59 - status = "okay"; 60 - }; 61 - 62 - mdio { 63 - phy0: ethernet-phy@0 { 64 - reg = <16>; 65 - }; 66 - 67 - phy1: ethernet-phy@1 { 68 - reg = <17>; 69 - }; 70 - 71 - phy2: ethernet-phy@2 { 72 - reg = <18>; 73 - }; 74 - 75 - phy3: ethernet-phy@3 { 76 - reg = <19>; 77 - }; 78 - }; 79 - 80 - ethernet@d0070000 { 81 - status = "okay"; 82 - phy = <&phy0>; 83 - phy-mode = "rgmii-id"; 84 - }; 85 - ethernet@d0074000 { 86 - status = "okay"; 87 - phy = <&phy1>; 88 - phy-mode = "rgmii-id"; 89 - }; 90 - ethernet@d0030000 { 91 - status = "okay"; 92 - phy = <&phy2>; 93 - phy-mode = "rgmii-id"; 94 - }; 95 - ethernet@d0034000 { 96 - status = "okay"; 97 - phy = <&phy3>; 98 - phy-mode = "rgmii-id"; 99 - }; 100 - 101 - spi0: spi@d0010600 { 102 - status = "okay"; 103 - 104 - spi-flash@0 { 105 - #address-cells = <1>; 106 - #size-cells = <1>; 107 - compatible = "n25q128a13"; 108 - reg = <0>; /* Chip select 0 */ 109 - spi-max-frequency = <108000000>; 110 - }; 111 - }; 112 - 113 - devbus-bootcs@d0010400 { 114 - status = "okay"; 115 - ranges = <0 0xf0000000 0x1000000>; /* @addr 0xf000000, size 0x1000000 */ 116 - 117 - /* Device Bus parameters are required */ 118 - 119 - /* Read parameters */ 120 - devbus,bus-width = <8>; 121 - devbus,turn-off-ps = <60000>; 122 - devbus,badr-skew-ps = <0>; 123 - devbus,acc-first-ps = <124000>; 124 - devbus,acc-next-ps = <248000>; 125 - devbus,rd-setup-ps = <0>; 126 - devbus,rd-hold-ps = <0>; 127 - 128 - /* Write parameters */ 129 - devbus,sync-enable = <0>; 130 - devbus,wr-high-ps = <60000>; 131 - devbus,wr-low-ps = <60000>; 132 - devbus,ale-wr-ps = <60000>; 133 - 134 - /* NOR 16 MiB */ 135 - nor@0 { 136 - compatible = "cfi-flash"; 137 - reg = <0 0x1000000>; 138 - bank-width = <2>; 139 - }; 140 - }; 141 - 142 - pcie-controller { 143 - status = "okay"; 144 - 145 - /* 146 - * The 3 slots are physically present as 147 - * standard PCIe slots on the board. 148 - */ 149 - pcie@1,0 { 150 - /* Port 0, Lane 0 */ 42 + internal-regs { 43 + serial@12000 { 44 + clock-frequency = <250000000>; 151 45 status = "okay"; 152 46 }; 153 - pcie@9,0 { 154 - /* Port 2, Lane 0 */ 47 + serial@12100 { 48 + clock-frequency = <250000000>; 155 49 status = "okay"; 156 50 }; 157 - pcie@10,0 { 158 - /* Port 3, Lane 0 */ 51 + serial@12200 { 52 + clock-frequency = <250000000>; 159 53 status = "okay"; 54 + }; 55 + serial@12300 { 56 + clock-frequency = <250000000>; 57 + status = "okay"; 58 + }; 59 + 60 + sata@a0000 { 61 + nr-ports = <2>; 62 + status = "okay"; 63 + }; 64 + 65 + mdio { 66 + phy0: ethernet-phy@0 { 67 + reg = <16>; 68 + }; 69 + 70 + phy1: ethernet-phy@1 { 71 + reg = <17>; 72 + }; 73 + 74 + phy2: ethernet-phy@2 { 75 + reg = <18>; 76 + }; 77 + 78 + phy3: ethernet-phy@3 { 79 + reg = <19>; 80 + }; 81 + }; 82 + 83 + ethernet@70000 { 84 + status = "okay"; 85 + phy = <&phy0>; 86 + phy-mode = "rgmii-id"; 87 + }; 88 + ethernet@74000 { 89 + status = "okay"; 90 + phy = <&phy1>; 91 + phy-mode = "rgmii-id"; 92 + }; 93 + ethernet@30000 { 94 + status = "okay"; 95 + phy = <&phy2>; 96 + phy-mode = "rgmii-id"; 97 + }; 98 + ethernet@34000 { 99 + status = "okay"; 100 + phy = <&phy3>; 101 + phy-mode = "rgmii-id"; 102 + }; 103 + 104 + spi0: spi@10600 { 105 + status = "okay"; 106 + 107 + spi-flash@0 { 108 + #address-cells = <1>; 109 + #size-cells = <1>; 110 + compatible = "n25q128a13"; 111 + reg = <0>; /* Chip select 0 */ 112 + spi-max-frequency = <108000000>; 113 + }; 114 + }; 115 + 116 + devbus-bootcs@10400 { 117 + status = "okay"; 118 + ranges = <0 0xf0000000 0x1000000>; /* @addr 0xf000000, size 0x1000000 */ 119 + 120 + /* Device Bus parameters are required */ 121 + 122 + /* Read parameters */ 123 + devbus,bus-width = <8>; 124 + devbus,turn-off-ps = <60000>; 125 + devbus,badr-skew-ps = <0>; 126 + devbus,acc-first-ps = <124000>; 127 + devbus,acc-next-ps = <248000>; 128 + devbus,rd-setup-ps = <0>; 129 + devbus,rd-hold-ps = <0>; 130 + 131 + /* Write parameters */ 132 + devbus,sync-enable = <0>; 133 + devbus,wr-high-ps = <60000>; 134 + devbus,wr-low-ps = <60000>; 135 + devbus,ale-wr-ps = <60000>; 136 + 137 + /* NOR 16 MiB */ 138 + nor@0 { 139 + compatible = "cfi-flash"; 140 + reg = <0 0x1000000>; 141 + bank-width = <2>; 142 + }; 143 + }; 144 + 145 + pcie-controller { 146 + status = "okay"; 147 + 148 + /* 149 + * The 3 slots are physically present as 150 + * standard PCIe slots on the board. 151 + */ 152 + pcie@1,0 { 153 + /* Port 0, Lane 0 */ 154 + status = "okay"; 155 + }; 156 + pcie@9,0 { 157 + /* Port 2, Lane 0 */ 158 + status = "okay"; 159 + }; 160 + pcie@10,0 { 161 + /* Port 3, Lane 0 */ 162 + status = "okay"; 163 + }; 160 164 }; 161 165 }; 162 166 };
+141 -139
arch/arm/boot/dts/armada-xp-mv78230.dtsi
··· 25 25 }; 26 26 27 27 cpus { 28 - #address-cells = <1>; 29 - #size-cells = <0>; 28 + #address-cells = <1>; 29 + #size-cells = <0>; 30 30 31 - cpu@0 { 32 - device_type = "cpu"; 33 - compatible = "marvell,sheeva-v7"; 34 - reg = <0>; 35 - clocks = <&cpuclk 0>; 36 - }; 31 + cpu@0 { 32 + device_type = "cpu"; 33 + compatible = "marvell,sheeva-v7"; 34 + reg = <0>; 35 + clocks = <&cpuclk 0>; 36 + }; 37 37 38 - cpu@1 { 39 - device_type = "cpu"; 40 - compatible = "marvell,sheeva-v7"; 41 - reg = <1>; 42 - clocks = <&cpuclk 1>; 43 - }; 38 + cpu@1 { 39 + device_type = "cpu"; 40 + compatible = "marvell,sheeva-v7"; 41 + reg = <1>; 42 + clocks = <&cpuclk 1>; 43 + }; 44 44 }; 45 45 46 46 soc { 47 - pinctrl { 48 - compatible = "marvell,mv78230-pinctrl"; 49 - reg = <0xd0018000 0x38>; 47 + internal-regs { 48 + pinctrl { 49 + compatible = "marvell,mv78230-pinctrl"; 50 + reg = <0x18000 0x38>; 50 51 51 - sdio_pins: sdio-pins { 52 - marvell,pins = "mpp30", "mpp31", "mpp32", 53 - "mpp33", "mpp34", "mpp35"; 54 - marvell,function = "sd0"; 55 - }; 56 - }; 57 - 58 - gpio0: gpio@d0018100 { 59 - compatible = "marvell,orion-gpio"; 60 - reg = <0xd0018100 0x40>; 61 - ngpios = <32>; 62 - gpio-controller; 63 - #gpio-cells = <2>; 64 - interrupt-controller; 65 - #interrupts-cells = <2>; 66 - interrupts = <82>, <83>, <84>, <85>; 67 - }; 68 - 69 - gpio1: gpio@d0018140 { 70 - compatible = "marvell,orion-gpio"; 71 - reg = <0xd0018140 0x40>; 72 - ngpios = <17>; 73 - gpio-controller; 74 - #gpio-cells = <2>; 75 - interrupt-controller; 76 - #interrupts-cells = <2>; 77 - interrupts = <87>, <88>, <89>; 78 - }; 79 - 80 - /* 81 - * MV78230 has 2 PCIe units Gen2.0: One unit can be 82 - * configured as x4 or quad x1 lanes. One unit is 83 - * x4/x1. 84 - */ 85 - pcie-controller { 86 - compatible = "marvell,armada-xp-pcie"; 87 - status = "disabled"; 88 - device_type = "pci"; 89 - 90 - #address-cells = <3>; 91 - #size-cells = <2>; 92 - 93 - bus-range = <0x00 0xff>; 94 - 95 - ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */ 96 - 0x82000000 0 0xd0042000 0xd0042000 0 0x00002000 /* Port 2.0 registers */ 97 - 0x82000000 0 0xd0044000 0xd0044000 0 0x00002000 /* Port 0.1 registers */ 98 - 0x82000000 0 0xd0048000 0xd0048000 0 0x00002000 /* Port 0.2 registers */ 99 - 0x82000000 0 0xd004c000 0xd004c000 0 0x00002000 /* Port 0.3 registers */ 100 - 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */ 101 - 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */ 102 - 103 - pcie@1,0 { 104 - device_type = "pci"; 105 - assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>; 106 - reg = <0x0800 0 0 0 0>; 107 - #address-cells = <3>; 108 - #size-cells = <2>; 109 - #interrupt-cells = <1>; 110 - ranges; 111 - interrupt-map-mask = <0 0 0 0>; 112 - interrupt-map = <0 0 0 0 &mpic 58>; 113 - marvell,pcie-port = <0>; 114 - marvell,pcie-lane = <0>; 115 - clocks = <&gateclk 5>; 116 - status = "disabled"; 52 + sdio_pins: sdio-pins { 53 + marvell,pins = "mpp30", "mpp31", "mpp32", 54 + "mpp33", "mpp34", "mpp35"; 55 + marvell,function = "sd0"; 56 + }; 117 57 }; 118 58 119 - pcie@2,0 { 120 - device_type = "pci"; 121 - assigned-addresses = <0x82000800 0 0xd0044000 0 0x2000>; 122 - reg = <0x1000 0 0 0 0>; 123 - #address-cells = <3>; 124 - #size-cells = <2>; 125 - #interrupt-cells = <1>; 126 - ranges; 127 - interrupt-map-mask = <0 0 0 0>; 128 - interrupt-map = <0 0 0 0 &mpic 59>; 129 - marvell,pcie-port = <0>; 130 - marvell,pcie-lane = <1>; 131 - clocks = <&gateclk 6>; 132 - status = "disabled"; 59 + gpio0: gpio@18100 { 60 + compatible = "marvell,orion-gpio"; 61 + reg = <0x18100 0x40>; 62 + ngpios = <32>; 63 + gpio-controller; 64 + #gpio-cells = <2>; 65 + interrupt-controller; 66 + #interrupts-cells = <2>; 67 + interrupts = <82>, <83>, <84>, <85>; 133 68 }; 134 69 135 - pcie@3,0 { 136 - device_type = "pci"; 137 - assigned-addresses = <0x82000800 0 0xd0048000 0 0x2000>; 138 - reg = <0x1800 0 0 0 0>; 139 - #address-cells = <3>; 140 - #size-cells = <2>; 141 - #interrupt-cells = <1>; 142 - ranges; 143 - interrupt-map-mask = <0 0 0 0>; 144 - interrupt-map = <0 0 0 0 &mpic 60>; 145 - marvell,pcie-port = <0>; 146 - marvell,pcie-lane = <2>; 147 - clocks = <&gateclk 7>; 148 - status = "disabled"; 70 + gpio1: gpio@18140 { 71 + compatible = "marvell,orion-gpio"; 72 + reg = <0x18140 0x40>; 73 + ngpios = <17>; 74 + gpio-controller; 75 + #gpio-cells = <2>; 76 + interrupt-controller; 77 + #interrupts-cells = <2>; 78 + interrupts = <87>, <88>, <89>; 149 79 }; 150 80 151 - pcie@4,0 { 152 - device_type = "pci"; 153 - assigned-addresses = <0x82000800 0 0xd004c000 0 0x2000>; 154 - reg = <0x2000 0 0 0 0>; 155 - #address-cells = <3>; 156 - #size-cells = <2>; 157 - #interrupt-cells = <1>; 158 - ranges; 159 - interrupt-map-mask = <0 0 0 0>; 160 - interrupt-map = <0 0 0 0 &mpic 61>; 161 - marvell,pcie-port = <0>; 162 - marvell,pcie-lane = <3>; 163 - clocks = <&gateclk 8>; 81 + /* 82 + * MV78230 has 2 PCIe units Gen2.0: One unit can be 83 + * configured as x4 or quad x1 lanes. One unit is 84 + * x4/x1. 85 + */ 86 + pcie-controller { 87 + compatible = "marvell,armada-xp-pcie"; 164 88 status = "disabled"; 165 - }; 89 + device_type = "pci"; 166 90 167 - pcie@9,0 { 168 - device_type = "pci"; 169 - assigned-addresses = <0x82000800 0 0xd0042000 0 0x2000>; 170 - reg = <0x4800 0 0 0 0>; 171 - #address-cells = <3>; 172 - #size-cells = <2>; 173 - #interrupt-cells = <1>; 174 - ranges; 175 - interrupt-map-mask = <0 0 0 0>; 176 - interrupt-map = <0 0 0 0 &mpic 99>; 177 - marvell,pcie-port = <2>; 178 - marvell,pcie-lane = <0>; 179 - clocks = <&gateclk 26>; 180 - status = "disabled"; 91 + #address-cells = <3>; 92 + #size-cells = <2>; 93 + 94 + bus-range = <0x00 0xff>; 95 + 96 + ranges = <0x82000000 0 0x40000 0x40000 0 0x00002000 /* Port 0.0 registers */ 97 + 0x82000000 0 0x42000 0x42000 0 0x00002000 /* Port 2.0 registers */ 98 + 0x82000000 0 0x44000 0x44000 0 0x00002000 /* Port 0.1 registers */ 99 + 0x82000000 0 0x48000 0x48000 0 0x00002000 /* Port 0.2 registers */ 100 + 0x82000000 0 0x4c000 0x4c000 0 0x00002000 /* Port 0.3 registers */ 101 + 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */ 102 + 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */ 103 + 104 + pcie@1,0 { 105 + device_type = "pci"; 106 + assigned-addresses = <0x82000800 0 0x40000 0 0x2000>; 107 + reg = <0x0800 0 0 0 0>; 108 + #address-cells = <3>; 109 + #size-cells = <2>; 110 + #interrupt-cells = <1>; 111 + ranges; 112 + interrupt-map-mask = <0 0 0 0>; 113 + interrupt-map = <0 0 0 0 &mpic 58>; 114 + marvell,pcie-port = <0>; 115 + marvell,pcie-lane = <0>; 116 + clocks = <&gateclk 5>; 117 + status = "disabled"; 118 + }; 119 + 120 + pcie@2,0 { 121 + device_type = "pci"; 122 + assigned-addresses = <0x82000800 0 0x44000 0 0x2000>; 123 + reg = <0x1000 0 0 0 0>; 124 + #address-cells = <3>; 125 + #size-cells = <2>; 126 + #interrupt-cells = <1>; 127 + ranges; 128 + interrupt-map-mask = <0 0 0 0>; 129 + interrupt-map = <0 0 0 0 &mpic 59>; 130 + marvell,pcie-port = <0>; 131 + marvell,pcie-lane = <1>; 132 + clocks = <&gateclk 6>; 133 + status = "disabled"; 134 + }; 135 + 136 + pcie@3,0 { 137 + device_type = "pci"; 138 + assigned-addresses = <0x82000800 0 0x48000 0 0x2000>; 139 + reg = <0x1800 0 0 0 0>; 140 + #address-cells = <3>; 141 + #size-cells = <2>; 142 + #interrupt-cells = <1>; 143 + ranges; 144 + interrupt-map-mask = <0 0 0 0>; 145 + interrupt-map = <0 0 0 0 &mpic 60>; 146 + marvell,pcie-port = <0>; 147 + marvell,pcie-lane = <2>; 148 + clocks = <&gateclk 7>; 149 + status = "disabled"; 150 + }; 151 + 152 + pcie@4,0 { 153 + device_type = "pci"; 154 + assigned-addresses = <0x82000800 0 0x4c000 0 0x2000>; 155 + reg = <0x2000 0 0 0 0>; 156 + #address-cells = <3>; 157 + #size-cells = <2>; 158 + #interrupt-cells = <1>; 159 + ranges; 160 + interrupt-map-mask = <0 0 0 0>; 161 + interrupt-map = <0 0 0 0 &mpic 61>; 162 + marvell,pcie-port = <0>; 163 + marvell,pcie-lane = <3>; 164 + clocks = <&gateclk 8>; 165 + status = "disabled"; 166 + }; 167 + 168 + pcie@9,0 { 169 + device_type = "pci"; 170 + assigned-addresses = <0x82000800 0 0x42000 0 0x2000>; 171 + reg = <0x4800 0 0 0 0>; 172 + #address-cells = <3>; 173 + #size-cells = <2>; 174 + #interrupt-cells = <1>; 175 + ranges; 176 + interrupt-map-mask = <0 0 0 0>; 177 + interrupt-map = <0 0 0 0 &mpic 99>; 178 + marvell,pcie-port = <2>; 179 + marvell,pcie-lane = <0>; 180 + clocks = <&gateclk 26>; 181 + status = "disabled"; 182 + }; 181 183 }; 182 184 }; 183 185 };
+168 -166
arch/arm/boot/dts/armada-xp-mv78260.dtsi
··· 26 26 }; 27 27 28 28 cpus { 29 - #address-cells = <1>; 30 - #size-cells = <0>; 29 + #address-cells = <1>; 30 + #size-cells = <0>; 31 31 32 - cpu@0 { 33 - device_type = "cpu"; 34 - compatible = "marvell,sheeva-v7"; 35 - reg = <0>; 36 - clocks = <&cpuclk 0>; 37 - }; 32 + cpu@0 { 33 + device_type = "cpu"; 34 + compatible = "marvell,sheeva-v7"; 35 + reg = <0>; 36 + clocks = <&cpuclk 0>; 37 + }; 38 38 39 - cpu@1 { 40 - device_type = "cpu"; 41 - compatible = "marvell,sheeva-v7"; 42 - reg = <1>; 43 - clocks = <&cpuclk 1>; 44 - }; 39 + cpu@1 { 40 + device_type = "cpu"; 41 + compatible = "marvell,sheeva-v7"; 42 + reg = <1>; 43 + clocks = <&cpuclk 1>; 44 + }; 45 45 }; 46 46 47 47 soc { 48 - pinctrl { 49 - compatible = "marvell,mv78260-pinctrl"; 50 - reg = <0xd0018000 0x38>; 48 + internal-regs { 49 + pinctrl { 50 + compatible = "marvell,mv78260-pinctrl"; 51 + reg = <0x18000 0x38>; 51 52 52 - sdio_pins: sdio-pins { 53 - marvell,pins = "mpp30", "mpp31", "mpp32", 54 - "mpp33", "mpp34", "mpp35"; 55 - marvell,function = "sd0"; 53 + sdio_pins: sdio-pins { 54 + marvell,pins = "mpp30", "mpp31", "mpp32", 55 + "mpp33", "mpp34", "mpp35"; 56 + marvell,function = "sd0"; 57 + }; 56 58 }; 57 - }; 58 59 59 - gpio0: gpio@d0018100 { 60 - compatible = "marvell,orion-gpio"; 61 - reg = <0xd0018100 0x40>; 62 - ngpios = <32>; 63 - gpio-controller; 64 - #gpio-cells = <2>; 65 - interrupt-controller; 66 - #interrupts-cells = <2>; 67 - interrupts = <82>, <83>, <84>, <85>; 68 - }; 60 + gpio0: gpio@18100 { 61 + compatible = "marvell,orion-gpio"; 62 + reg = <0x18100 0x40>; 63 + ngpios = <32>; 64 + gpio-controller; 65 + #gpio-cells = <2>; 66 + interrupt-controller; 67 + #interrupts-cells = <2>; 68 + interrupts = <82>, <83>, <84>, <85>; 69 + }; 69 70 70 - gpio1: gpio@d0018140 { 71 - compatible = "marvell,orion-gpio"; 72 - reg = <0xd0018140 0x40>; 73 - ngpios = <32>; 74 - gpio-controller; 75 - #gpio-cells = <2>; 76 - interrupt-controller; 77 - #interrupts-cells = <2>; 78 - interrupts = <87>, <88>, <89>, <90>; 79 - }; 71 + gpio1: gpio@18140 { 72 + compatible = "marvell,orion-gpio"; 73 + reg = <0x18140 0x40>; 74 + ngpios = <32>; 75 + gpio-controller; 76 + #gpio-cells = <2>; 77 + interrupt-controller; 78 + #interrupts-cells = <2>; 79 + interrupts = <87>, <88>, <89>, <90>; 80 + }; 80 81 81 - gpio2: gpio@d0018180 { 82 - compatible = "marvell,orion-gpio"; 83 - reg = <0xd0018180 0x40>; 84 - ngpios = <3>; 85 - gpio-controller; 86 - #gpio-cells = <2>; 87 - interrupt-controller; 88 - #interrupts-cells = <2>; 89 - interrupts = <91>; 90 - }; 82 + gpio2: gpio@18180 { 83 + compatible = "marvell,orion-gpio"; 84 + reg = <0x18180 0x40>; 85 + ngpios = <3>; 86 + gpio-controller; 87 + #gpio-cells = <2>; 88 + interrupt-controller; 89 + #interrupts-cells = <2>; 90 + interrupts = <91>; 91 + }; 91 92 92 - ethernet@d0034000 { 93 + ethernet@34000 { 93 94 compatible = "marvell,armada-370-neta"; 94 - reg = <0xd0034000 0x2500>; 95 + reg = <0x34000 0x2500>; 95 96 interrupts = <14>; 96 97 clocks = <&gateclk 1>; 97 98 status = "disabled"; 98 - }; 99 - 100 - /* 101 - * MV78260 has 3 PCIe units Gen2.0: Two units can be 102 - * configured as x4 or quad x1 lanes. One unit is 103 - * x4/x1. 104 - */ 105 - pcie-controller { 106 - compatible = "marvell,armada-xp-pcie"; 107 - status = "disabled"; 108 - device_type = "pci"; 109 - 110 - #address-cells = <3>; 111 - #size-cells = <2>; 112 - 113 - bus-range = <0x00 0xff>; 114 - 115 - ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */ 116 - 0x82000000 0 0xd0042000 0xd0042000 0 0x00002000 /* Port 2.0 registers */ 117 - 0x82000000 0 0xd0044000 0xd0044000 0 0x00002000 /* Port 0.1 registers */ 118 - 0x82000000 0 0xd0048000 0xd0048000 0 0x00002000 /* Port 0.2 registers */ 119 - 0x82000000 0 0xd004c000 0xd004c000 0 0x00002000 /* Port 0.3 registers */ 120 - 0x82000000 0 0xd0080000 0xd0080000 0 0x00002000 /* Port 1.0 registers */ 121 - 0x82000000 0 0xd0082000 0xd0082000 0 0x00002000 /* Port 3.0 registers */ 122 - 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */ 123 - 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */ 124 - 125 - pcie@1,0 { 126 - device_type = "pci"; 127 - assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>; 128 - reg = <0x0800 0 0 0 0>; 129 - #address-cells = <3>; 130 - #size-cells = <2>; 131 - #interrupt-cells = <1>; 132 - ranges; 133 - interrupt-map-mask = <0 0 0 0>; 134 - interrupt-map = <0 0 0 0 &mpic 58>; 135 - marvell,pcie-port = <0>; 136 - marvell,pcie-lane = <0>; 137 - clocks = <&gateclk 5>; 138 - status = "disabled"; 139 99 }; 140 100 141 - pcie@2,0 { 142 - device_type = "pci"; 143 - assigned-addresses = <0x82000800 0 0xd0044000 0 0x2000>; 144 - reg = <0x1000 0 0 0 0>; 145 - #address-cells = <3>; 146 - #size-cells = <2>; 147 - #interrupt-cells = <1>; 148 - ranges; 149 - interrupt-map-mask = <0 0 0 0>; 150 - interrupt-map = <0 0 0 0 &mpic 59>; 151 - marvell,pcie-port = <0>; 152 - marvell,pcie-lane = <1>; 153 - clocks = <&gateclk 6>; 101 + /* 102 + * MV78260 has 3 PCIe units Gen2.0: Two units can be 103 + * configured as x4 or quad x1 lanes. One unit is 104 + * x4/x1. 105 + */ 106 + pcie-controller { 107 + compatible = "marvell,armada-xp-pcie"; 154 108 status = "disabled"; 155 - }; 109 + device_type = "pci"; 156 110 157 - pcie@3,0 { 158 - device_type = "pci"; 159 - assigned-addresses = <0x82000800 0 0xd0048000 0 0x2000>; 160 - reg = <0x1800 0 0 0 0>; 161 111 #address-cells = <3>; 162 112 #size-cells = <2>; 163 - #interrupt-cells = <1>; 164 - ranges; 165 - interrupt-map-mask = <0 0 0 0>; 166 - interrupt-map = <0 0 0 0 &mpic 60>; 167 - marvell,pcie-port = <0>; 168 - marvell,pcie-lane = <2>; 169 - clocks = <&gateclk 7>; 170 - status = "disabled"; 171 - }; 172 113 173 - pcie@4,0 { 174 - device_type = "pci"; 175 - assigned-addresses = <0x82000800 0 0xd004c000 0 0x2000>; 176 - reg = <0x2000 0 0 0 0>; 177 - #address-cells = <3>; 178 - #size-cells = <2>; 179 - #interrupt-cells = <1>; 180 - ranges; 181 - interrupt-map-mask = <0 0 0 0>; 182 - interrupt-map = <0 0 0 0 &mpic 61>; 183 - marvell,pcie-port = <0>; 184 - marvell,pcie-lane = <3>; 185 - clocks = <&gateclk 8>; 186 - status = "disabled"; 187 - }; 114 + bus-range = <0x00 0xff>; 188 115 189 - pcie@9,0 { 190 - device_type = "pci"; 191 - assigned-addresses = <0x82000800 0 0xd0042000 0 0x2000>; 192 - reg = <0x4800 0 0 0 0>; 193 - #address-cells = <3>; 194 - #size-cells = <2>; 195 - #interrupt-cells = <1>; 196 - ranges; 197 - interrupt-map-mask = <0 0 0 0>; 198 - interrupt-map = <0 0 0 0 &mpic 99>; 199 - marvell,pcie-port = <2>; 200 - marvell,pcie-lane = <0>; 201 - clocks = <&gateclk 26>; 202 - status = "disabled"; 203 - }; 116 + ranges = <0x82000000 0 0x40000 0x40000 0 0x00002000 /* Port 0.0 registers */ 117 + 0x82000000 0 0x42000 0x42000 0 0x00002000 /* Port 2.0 registers */ 118 + 0x82000000 0 0x44000 0x44000 0 0x00002000 /* Port 0.1 registers */ 119 + 0x82000000 0 0x48000 0x48000 0 0x00002000 /* Port 0.2 registers */ 120 + 0x82000000 0 0x4c000 0x4c000 0 0x00002000 /* Port 0.3 registers */ 121 + 0x82000000 0 0x80000 0x80000 0 0x00002000 /* Port 1.0 registers */ 122 + 0x82000000 0 0x82000 0x82000 0 0x00002000 /* Port 3.0 registers */ 123 + 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */ 124 + 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */ 204 125 205 - pcie@10,0 { 206 - device_type = "pci"; 207 - assigned-addresses = <0x82000800 0 0xd0082000 0 0x2000>; 208 - reg = <0x5000 0 0 0 0>; 209 - #address-cells = <3>; 210 - #size-cells = <2>; 211 - #interrupt-cells = <1>; 212 - ranges; 213 - interrupt-map-mask = <0 0 0 0>; 214 - interrupt-map = <0 0 0 0 &mpic 103>; 215 - marvell,pcie-port = <3>; 216 - marvell,pcie-lane = <0>; 217 - clocks = <&gateclk 27>; 218 - status = "disabled"; 126 + pcie@1,0 { 127 + device_type = "pci"; 128 + assigned-addresses = <0x82000800 0 0x40000 0 0x2000>; 129 + reg = <0x0800 0 0 0 0>; 130 + #address-cells = <3>; 131 + #size-cells = <2>; 132 + #interrupt-cells = <1>; 133 + ranges; 134 + interrupt-map-mask = <0 0 0 0>; 135 + interrupt-map = <0 0 0 0 &mpic 58>; 136 + marvell,pcie-port = <0>; 137 + marvell,pcie-lane = <0>; 138 + clocks = <&gateclk 5>; 139 + status = "disabled"; 140 + }; 141 + 142 + pcie@2,0 { 143 + device_type = "pci"; 144 + assigned-addresses = <0x82000800 0 0x44000 0 0x2000>; 145 + reg = <0x1000 0 0 0 0>; 146 + #address-cells = <3>; 147 + #size-cells = <2>; 148 + #interrupt-cells = <1>; 149 + ranges; 150 + interrupt-map-mask = <0 0 0 0>; 151 + interrupt-map = <0 0 0 0 &mpic 59>; 152 + marvell,pcie-port = <0>; 153 + marvell,pcie-lane = <1>; 154 + clocks = <&gateclk 6>; 155 + status = "disabled"; 156 + }; 157 + 158 + pcie@3,0 { 159 + device_type = "pci"; 160 + assigned-addresses = <0x82000800 0 0x48000 0 0x2000>; 161 + reg = <0x1800 0 0 0 0>; 162 + #address-cells = <3>; 163 + #size-cells = <2>; 164 + #interrupt-cells = <1>; 165 + ranges; 166 + interrupt-map-mask = <0 0 0 0>; 167 + interrupt-map = <0 0 0 0 &mpic 60>; 168 + marvell,pcie-port = <0>; 169 + marvell,pcie-lane = <2>; 170 + clocks = <&gateclk 7>; 171 + status = "disabled"; 172 + }; 173 + 174 + pcie@4,0 { 175 + device_type = "pci"; 176 + assigned-addresses = <0x82000800 0 0x4c000 0 0x2000>; 177 + reg = <0x2000 0 0 0 0>; 178 + #address-cells = <3>; 179 + #size-cells = <2>; 180 + #interrupt-cells = <1>; 181 + ranges; 182 + interrupt-map-mask = <0 0 0 0>; 183 + interrupt-map = <0 0 0 0 &mpic 61>; 184 + marvell,pcie-port = <0>; 185 + marvell,pcie-lane = <3>; 186 + clocks = <&gateclk 8>; 187 + status = "disabled"; 188 + }; 189 + 190 + pcie@9,0 { 191 + device_type = "pci"; 192 + assigned-addresses = <0x82000800 0 0x42000 0 0x2000>; 193 + reg = <0x4800 0 0 0 0>; 194 + #address-cells = <3>; 195 + #size-cells = <2>; 196 + #interrupt-cells = <1>; 197 + ranges; 198 + interrupt-map-mask = <0 0 0 0>; 199 + interrupt-map = <0 0 0 0 &mpic 99>; 200 + marvell,pcie-port = <2>; 201 + marvell,pcie-lane = <0>; 202 + clocks = <&gateclk 26>; 203 + status = "disabled"; 204 + }; 205 + 206 + pcie@10,0 { 207 + device_type = "pci"; 208 + assigned-addresses = <0x82000800 0 0x82000 0 0x2000>; 209 + reg = <0x5000 0 0 0 0>; 210 + #address-cells = <3>; 211 + #size-cells = <2>; 212 + #interrupt-cells = <1>; 213 + ranges; 214 + interrupt-map-mask = <0 0 0 0>; 215 + interrupt-map = <0 0 0 0 &mpic 103>; 216 + marvell,pcie-port = <3>; 217 + marvell,pcie-lane = <0>; 218 + clocks = <&gateclk 27>; 219 + status = "disabled"; 220 + }; 219 221 }; 220 222 }; 221 223 };
+244 -242
arch/arm/boot/dts/armada-xp-mv78460.dtsi
··· 27 27 28 28 29 29 cpus { 30 - #address-cells = <1>; 31 - #size-cells = <0>; 30 + #address-cells = <1>; 31 + #size-cells = <0>; 32 32 33 - cpu@0 { 34 - device_type = "cpu"; 35 - compatible = "marvell,sheeva-v7"; 36 - reg = <0>; 37 - clocks = <&cpuclk 0>; 38 - }; 33 + cpu@0 { 34 + device_type = "cpu"; 35 + compatible = "marvell,sheeva-v7"; 36 + reg = <0>; 37 + clocks = <&cpuclk 0>; 38 + }; 39 39 40 - cpu@1 { 41 - device_type = "cpu"; 42 - compatible = "marvell,sheeva-v7"; 43 - reg = <1>; 44 - clocks = <&cpuclk 1>; 45 - }; 40 + cpu@1 { 41 + device_type = "cpu"; 42 + compatible = "marvell,sheeva-v7"; 43 + reg = <1>; 44 + clocks = <&cpuclk 1>; 45 + }; 46 46 47 - cpu@2 { 48 - device_type = "cpu"; 49 - compatible = "marvell,sheeva-v7"; 50 - reg = <2>; 51 - clocks = <&cpuclk 2>; 52 - }; 47 + cpu@2 { 48 + device_type = "cpu"; 49 + compatible = "marvell,sheeva-v7"; 50 + reg = <2>; 51 + clocks = <&cpuclk 2>; 52 + }; 53 53 54 - cpu@3 { 55 - device_type = "cpu"; 56 - compatible = "marvell,sheeva-v7"; 57 - reg = <3>; 58 - clocks = <&cpuclk 3>; 59 - }; 54 + cpu@3 { 55 + device_type = "cpu"; 56 + compatible = "marvell,sheeva-v7"; 57 + reg = <3>; 58 + clocks = <&cpuclk 3>; 59 + }; 60 60 }; 61 61 62 62 soc { 63 - pinctrl { 64 - compatible = "marvell,mv78460-pinctrl"; 65 - reg = <0xd0018000 0x38>; 63 + internal-regs { 64 + pinctrl { 65 + compatible = "marvell,mv78460-pinctrl"; 66 + reg = <0x18000 0x38>; 66 67 67 - sdio_pins: sdio-pins { 68 - marvell,pins = "mpp30", "mpp31", "mpp32", 69 - "mpp33", "mpp34", "mpp35"; 70 - marvell,function = "sd0"; 68 + sdio_pins: sdio-pins { 69 + marvell,pins = "mpp30", "mpp31", "mpp32", 70 + "mpp33", "mpp34", "mpp35"; 71 + marvell,function = "sd0"; 72 + }; 71 73 }; 72 - }; 73 74 74 - gpio0: gpio@d0018100 { 75 - compatible = "marvell,orion-gpio"; 76 - reg = <0xd0018100 0x40>; 77 - ngpios = <32>; 78 - gpio-controller; 79 - #gpio-cells = <2>; 80 - interrupt-controller; 81 - #interrupts-cells = <2>; 82 - interrupts = <82>, <83>, <84>, <85>; 83 - }; 75 + gpio0: gpio@18100 { 76 + compatible = "marvell,orion-gpio"; 77 + reg = <0x18100 0x40>; 78 + ngpios = <32>; 79 + gpio-controller; 80 + #gpio-cells = <2>; 81 + interrupt-controller; 82 + #interrupts-cells = <2>; 83 + interrupts = <82>, <83>, <84>, <85>; 84 + }; 84 85 85 - gpio1: gpio@d0018140 { 86 - compatible = "marvell,orion-gpio"; 87 - reg = <0xd0018140 0x40>; 88 - ngpios = <32>; 89 - gpio-controller; 90 - #gpio-cells = <2>; 91 - interrupt-controller; 92 - #interrupts-cells = <2>; 93 - interrupts = <87>, <88>, <89>, <90>; 94 - }; 86 + gpio1: gpio@18140 { 87 + compatible = "marvell,orion-gpio"; 88 + reg = <0x18140 0x40>; 89 + ngpios = <32>; 90 + gpio-controller; 91 + #gpio-cells = <2>; 92 + interrupt-controller; 93 + #interrupts-cells = <2>; 94 + interrupts = <87>, <88>, <89>, <90>; 95 + }; 95 96 96 - gpio2: gpio@d0018180 { 97 - compatible = "marvell,orion-gpio"; 98 - reg = <0xd0018180 0x40>; 99 - ngpios = <3>; 100 - gpio-controller; 101 - #gpio-cells = <2>; 102 - interrupt-controller; 103 - #interrupts-cells = <2>; 104 - interrupts = <91>; 105 - }; 97 + gpio2: gpio@18180 { 98 + compatible = "marvell,orion-gpio"; 99 + reg = <0x18180 0x40>; 100 + ngpios = <3>; 101 + gpio-controller; 102 + #gpio-cells = <2>; 103 + interrupt-controller; 104 + #interrupts-cells = <2>; 105 + interrupts = <91>; 106 + }; 106 107 107 - ethernet@d0034000 { 108 + ethernet@34000 { 108 109 compatible = "marvell,armada-370-neta"; 109 - reg = <0xd0034000 0x2500>; 110 + reg = <0x34000 0x2500>; 110 111 interrupts = <14>; 111 112 clocks = <&gateclk 1>; 112 113 status = "disabled"; 113 - }; 114 - 115 - /* 116 - * MV78460 has 4 PCIe units Gen2.0: Two units can be 117 - * configured as x4 or quad x1 lanes. Two units are 118 - * x4/x1. 119 - */ 120 - pcie-controller { 121 - compatible = "marvell,armada-xp-pcie"; 122 - status = "disabled"; 123 - device_type = "pci"; 124 - 125 - #address-cells = <3>; 126 - #size-cells = <2>; 127 - 128 - bus-range = <0x00 0xff>; 129 - 130 - ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */ 131 - 0x82000000 0 0xd0042000 0xd0042000 0 0x00002000 /* Port 2.0 registers */ 132 - 0x82000000 0 0xd0044000 0xd0044000 0 0x00002000 /* Port 0.1 registers */ 133 - 0x82000000 0 0xd0048000 0xd0048000 0 0x00002000 /* Port 0.2 registers */ 134 - 0x82000000 0 0xd004c000 0xd004c000 0 0x00002000 /* Port 0.3 registers */ 135 - 0x82000000 0 0xd0080000 0xd0080000 0 0x00002000 /* Port 1.0 registers */ 136 - 0x82000000 0 0xd0082000 0xd0082000 0 0x00002000 /* Port 3.0 registers */ 137 - 0x82000000 0 0xd0084000 0xd0084000 0 0x00002000 /* Port 1.1 registers */ 138 - 0x82000000 0 0xd0088000 0xd0088000 0 0x00002000 /* Port 1.2 registers */ 139 - 0x82000000 0 0xd008c000 0xd008c000 0 0x00002000 /* Port 1.3 registers */ 140 - 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */ 141 - 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */ 142 - 143 - pcie@1,0 { 144 - device_type = "pci"; 145 - assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>; 146 - reg = <0x0800 0 0 0 0>; 147 - #address-cells = <3>; 148 - #size-cells = <2>; 149 - #interrupt-cells = <1>; 150 - ranges; 151 - interrupt-map-mask = <0 0 0 0>; 152 - interrupt-map = <0 0 0 0 &mpic 58>; 153 - marvell,pcie-port = <0>; 154 - marvell,pcie-lane = <0>; 155 - clocks = <&gateclk 5>; 156 - status = "disabled"; 157 114 }; 158 115 159 - pcie@2,0 { 160 - device_type = "pci"; 161 - assigned-addresses = <0x82001000 0 0xd0044000 0 0x2000>; 162 - reg = <0x1000 0 0 0 0>; 163 - #address-cells = <3>; 164 - #size-cells = <2>; 165 - #interrupt-cells = <1>; 166 - ranges; 167 - interrupt-map-mask = <0 0 0 0>; 168 - interrupt-map = <0 0 0 0 &mpic 59>; 169 - marvell,pcie-port = <0>; 170 - marvell,pcie-lane = <1>; 171 - clocks = <&gateclk 6>; 116 + /* 117 + * MV78460 has 4 PCIe units Gen2.0: Two units can be 118 + * configured as x4 or quad x1 lanes. Two units are 119 + * x4/x1. 120 + */ 121 + pcie-controller { 122 + compatible = "marvell,armada-xp-pcie"; 172 123 status = "disabled"; 173 - }; 124 + device_type = "pci"; 174 125 175 - pcie@3,0 { 176 - device_type = "pci"; 177 - assigned-addresses = <0x82001800 0 0xd0048000 0 0x2000>; 178 - reg = <0x1800 0 0 0 0>; 179 126 #address-cells = <3>; 180 127 #size-cells = <2>; 181 - #interrupt-cells = <1>; 182 - ranges; 183 - interrupt-map-mask = <0 0 0 0>; 184 - interrupt-map = <0 0 0 0 &mpic 60>; 185 - marvell,pcie-port = <0>; 186 - marvell,pcie-lane = <2>; 187 - clocks = <&gateclk 7>; 188 - status = "disabled"; 189 - }; 190 128 191 - pcie@4,0 { 192 - device_type = "pci"; 193 - assigned-addresses = <0x82002000 0 0xd004c000 0 0x2000>; 194 - reg = <0x2000 0 0 0 0>; 195 - #address-cells = <3>; 196 - #size-cells = <2>; 197 - #interrupt-cells = <1>; 198 - ranges; 199 - interrupt-map-mask = <0 0 0 0>; 200 - interrupt-map = <0 0 0 0 &mpic 61>; 201 - marvell,pcie-port = <0>; 202 - marvell,pcie-lane = <3>; 203 - clocks = <&gateclk 8>; 204 - status = "disabled"; 205 - }; 129 + bus-range = <0x00 0xff>; 206 130 207 - pcie@5,0 { 208 - device_type = "pci"; 209 - assigned-addresses = <0x82002800 0 0xd0080000 0 0x2000>; 210 - reg = <0x2800 0 0 0 0>; 211 - #address-cells = <3>; 212 - #size-cells = <2>; 213 - #interrupt-cells = <1>; 214 - ranges; 215 - interrupt-map-mask = <0 0 0 0>; 216 - interrupt-map = <0 0 0 0 &mpic 62>; 217 - marvell,pcie-port = <1>; 218 - marvell,pcie-lane = <0>; 219 - clocks = <&gateclk 9>; 220 - status = "disabled"; 221 - }; 131 + ranges = <0x82000000 0 0x40000 0x40000 0 0x00002000 /* Port 0.0 registers */ 132 + 0x82000000 0 0x42000 0x42000 0 0x00002000 /* Port 2.0 registers */ 133 + 0x82000000 0 0x44000 0x44000 0 0x00002000 /* Port 0.1 registers */ 134 + 0x82000000 0 0x48000 0x48000 0 0x00002000 /* Port 0.2 registers */ 135 + 0x82000000 0 0x4c000 0x4c000 0 0x00002000 /* Port 0.3 registers */ 136 + 0x82000000 0 0x80000 0x80000 0 0x00002000 /* Port 1.0 registers */ 137 + 0x82000000 0 0x82000 0x82000 0 0x00002000 /* Port 3.0 registers */ 138 + 0x82000000 0 0x84000 0x84000 0 0x00002000 /* Port 1.1 registers */ 139 + 0x82000000 0 0x88000 0x88000 0 0x00002000 /* Port 1.2 registers */ 140 + 0x82000000 0 0x8c000 0x8c000 0 0x00002000 /* Port 1.3 registers */ 141 + 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */ 142 + 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */ 222 143 223 - pcie@6,0 { 224 - device_type = "pci"; 225 - assigned-addresses = <0x82003000 0 0xd0084000 0 0x2000>; 226 - reg = <0x3000 0 0 0 0>; 227 - #address-cells = <3>; 228 - #size-cells = <2>; 229 - #interrupt-cells = <1>; 230 - ranges; 231 - interrupt-map-mask = <0 0 0 0>; 232 - interrupt-map = <0 0 0 0 &mpic 63>; 233 - marvell,pcie-port = <1>; 234 - marvell,pcie-lane = <1>; 235 - clocks = <&gateclk 10>; 236 - status = "disabled"; 237 - }; 144 + pcie@1,0 { 145 + device_type = "pci"; 146 + assigned-addresses = <0x82000800 0 0x40000 0 0x2000>; 147 + reg = <0x0800 0 0 0 0>; 148 + #address-cells = <3>; 149 + #size-cells = <2>; 150 + #interrupt-cells = <1>; 151 + ranges; 152 + interrupt-map-mask = <0 0 0 0>; 153 + interrupt-map = <0 0 0 0 &mpic 58>; 154 + marvell,pcie-port = <0>; 155 + marvell,pcie-lane = <0>; 156 + clocks = <&gateclk 5>; 157 + status = "disabled"; 158 + }; 238 159 239 - pcie@7,0 { 240 - device_type = "pci"; 241 - assigned-addresses = <0x82003800 0 0xd0088000 0 0x2000>; 242 - reg = <0x3800 0 0 0 0>; 243 - #address-cells = <3>; 244 - #size-cells = <2>; 245 - #interrupt-cells = <1>; 246 - ranges; 247 - interrupt-map-mask = <0 0 0 0>; 248 - interrupt-map = <0 0 0 0 &mpic 64>; 249 - marvell,pcie-port = <1>; 250 - marvell,pcie-lane = <2>; 251 - clocks = <&gateclk 11>; 252 - status = "disabled"; 253 - }; 160 + pcie@2,0 { 161 + device_type = "pci"; 162 + assigned-addresses = <0x82001000 0 0x44000 0 0x2000>; 163 + reg = <0x1000 0 0 0 0>; 164 + #address-cells = <3>; 165 + #size-cells = <2>; 166 + #interrupt-cells = <1>; 167 + ranges; 168 + interrupt-map-mask = <0 0 0 0>; 169 + interrupt-map = <0 0 0 0 &mpic 59>; 170 + marvell,pcie-port = <0>; 171 + marvell,pcie-lane = <1>; 172 + clocks = <&gateclk 6>; 173 + status = "disabled"; 174 + }; 254 175 255 - pcie@8,0 { 256 - device_type = "pci"; 257 - assigned-addresses = <0x82004000 0 0xd008c000 0 0x2000>; 258 - reg = <0x4000 0 0 0 0>; 259 - #address-cells = <3>; 260 - #size-cells = <2>; 261 - #interrupt-cells = <1>; 262 - ranges; 263 - interrupt-map-mask = <0 0 0 0>; 264 - interrupt-map = <0 0 0 0 &mpic 65>; 265 - marvell,pcie-port = <1>; 266 - marvell,pcie-lane = <3>; 267 - clocks = <&gateclk 12>; 268 - status = "disabled"; 269 - }; 270 - pcie@9,0 { 271 - device_type = "pci"; 272 - assigned-addresses = <0x82004800 0 0xd0042000 0 0x2000>; 273 - reg = <0x4800 0 0 0 0>; 274 - #address-cells = <3>; 275 - #size-cells = <2>; 276 - #interrupt-cells = <1>; 277 - ranges; 278 - interrupt-map-mask = <0 0 0 0>; 279 - interrupt-map = <0 0 0 0 &mpic 99>; 280 - marvell,pcie-port = <2>; 281 - marvell,pcie-lane = <0>; 282 - clocks = <&gateclk 26>; 283 - status = "disabled"; 284 - }; 176 + pcie@3,0 { 177 + device_type = "pci"; 178 + assigned-addresses = <0x82001800 0 0x48000 0 0x2000>; 179 + reg = <0x1800 0 0 0 0>; 180 + #address-cells = <3>; 181 + #size-cells = <2>; 182 + #interrupt-cells = <1>; 183 + ranges; 184 + interrupt-map-mask = <0 0 0 0>; 185 + interrupt-map = <0 0 0 0 &mpic 60>; 186 + marvell,pcie-port = <0>; 187 + marvell,pcie-lane = <2>; 188 + clocks = <&gateclk 7>; 189 + status = "disabled"; 190 + }; 285 191 286 - pcie@10,0 { 287 - device_type = "pci"; 288 - assigned-addresses = <0x82005000 0 0xd0082000 0 0x2000>; 289 - reg = <0x5000 0 0 0 0>; 290 - #address-cells = <3>; 291 - #size-cells = <2>; 292 - #interrupt-cells = <1>; 293 - ranges; 294 - interrupt-map-mask = <0 0 0 0>; 295 - interrupt-map = <0 0 0 0 &mpic 103>; 296 - marvell,pcie-port = <3>; 297 - marvell,pcie-lane = <0>; 298 - clocks = <&gateclk 27>; 299 - status = "disabled"; 192 + pcie@4,0 { 193 + device_type = "pci"; 194 + assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>; 195 + reg = <0x2000 0 0 0 0>; 196 + #address-cells = <3>; 197 + #size-cells = <2>; 198 + #interrupt-cells = <1>; 199 + ranges; 200 + interrupt-map-mask = <0 0 0 0>; 201 + interrupt-map = <0 0 0 0 &mpic 61>; 202 + marvell,pcie-port = <0>; 203 + marvell,pcie-lane = <3>; 204 + clocks = <&gateclk 8>; 205 + status = "disabled"; 206 + }; 207 + 208 + pcie@5,0 { 209 + device_type = "pci"; 210 + assigned-addresses = <0x82002800 0 0x80000 0 0x2000>; 211 + reg = <0x2800 0 0 0 0>; 212 + #address-cells = <3>; 213 + #size-cells = <2>; 214 + #interrupt-cells = <1>; 215 + ranges; 216 + interrupt-map-mask = <0 0 0 0>; 217 + interrupt-map = <0 0 0 0 &mpic 62>; 218 + marvell,pcie-port = <1>; 219 + marvell,pcie-lane = <0>; 220 + clocks = <&gateclk 9>; 221 + status = "disabled"; 222 + }; 223 + 224 + pcie@6,0 { 225 + device_type = "pci"; 226 + assigned-addresses = <0x82003000 0 0x84000 0 0x2000>; 227 + reg = <0x3000 0 0 0 0>; 228 + #address-cells = <3>; 229 + #size-cells = <2>; 230 + #interrupt-cells = <1>; 231 + ranges; 232 + interrupt-map-mask = <0 0 0 0>; 233 + interrupt-map = <0 0 0 0 &mpic 63>; 234 + marvell,pcie-port = <1>; 235 + marvell,pcie-lane = <1>; 236 + clocks = <&gateclk 10>; 237 + status = "disabled"; 238 + }; 239 + 240 + pcie@7,0 { 241 + device_type = "pci"; 242 + assigned-addresses = <0x82003800 0 0x88000 0 0x2000>; 243 + reg = <0x3800 0 0 0 0>; 244 + #address-cells = <3>; 245 + #size-cells = <2>; 246 + #interrupt-cells = <1>; 247 + ranges; 248 + interrupt-map-mask = <0 0 0 0>; 249 + interrupt-map = <0 0 0 0 &mpic 64>; 250 + marvell,pcie-port = <1>; 251 + marvell,pcie-lane = <2>; 252 + clocks = <&gateclk 11>; 253 + status = "disabled"; 254 + }; 255 + 256 + pcie@8,0 { 257 + device_type = "pci"; 258 + assigned-addresses = <0x82004000 0 0x8c000 0 0x2000>; 259 + reg = <0x4000 0 0 0 0>; 260 + #address-cells = <3>; 261 + #size-cells = <2>; 262 + #interrupt-cells = <1>; 263 + ranges; 264 + interrupt-map-mask = <0 0 0 0>; 265 + interrupt-map = <0 0 0 0 &mpic 65>; 266 + marvell,pcie-port = <1>; 267 + marvell,pcie-lane = <3>; 268 + clocks = <&gateclk 12>; 269 + status = "disabled"; 270 + }; 271 + pcie@9,0 { 272 + device_type = "pci"; 273 + assigned-addresses = <0x82004800 0 0x42000 0 0x2000>; 274 + reg = <0x4800 0 0 0 0>; 275 + #address-cells = <3>; 276 + #size-cells = <2>; 277 + #interrupt-cells = <1>; 278 + ranges; 279 + interrupt-map-mask = <0 0 0 0>; 280 + interrupt-map = <0 0 0 0 &mpic 99>; 281 + marvell,pcie-port = <2>; 282 + marvell,pcie-lane = <0>; 283 + clocks = <&gateclk 26>; 284 + status = "disabled"; 285 + }; 286 + 287 + pcie@10,0 { 288 + device_type = "pci"; 289 + assigned-addresses = <0x82005000 0 0x82000 0 0x2000>; 290 + reg = <0x5000 0 0 0 0>; 291 + #address-cells = <3>; 292 + #size-cells = <2>; 293 + #interrupt-cells = <1>; 294 + ranges; 295 + interrupt-map-mask = <0 0 0 0>; 296 + interrupt-map = <0 0 0 0 &mpic 103>; 297 + marvell,pcie-port = <3>; 298 + marvell,pcie-lane = <0>; 299 + clocks = <&gateclk 27>; 300 + status = "disabled"; 301 + }; 300 302 }; 301 303 }; 302 304 }; 303 - }; 305 + };
+150 -148
arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
··· 23 23 24 24 memory { 25 25 device_type = "memory"; 26 - reg = <0x00000000 0xC0000000>; /* 3 GB */ 26 + reg = <0 0x00000000 0 0xC0000000>; /* 3 GB */ 27 27 }; 28 28 29 29 soc { 30 - serial@d0012000 { 31 - clock-frequency = <250000000>; 32 - status = "okay"; 33 - }; 34 - serial@d0012100 { 35 - clock-frequency = <250000000>; 36 - status = "okay"; 37 - }; 38 - pinctrl { 39 - led_pins: led-pins-0 { 40 - marvell,pins = "mpp49", "mpp51", "mpp53"; 41 - marvell,function = "gpio"; 42 - }; 43 - }; 44 - leds { 45 - compatible = "gpio-leds"; 46 - pinctrl-names = "default"; 47 - pinctrl-0 = <&led_pins>; 48 - 49 - red_led { 50 - label = "red_led"; 51 - gpios = <&gpio1 17 1>; 52 - default-state = "off"; 53 - }; 54 - 55 - yellow_led { 56 - label = "yellow_led"; 57 - gpios = <&gpio1 19 1>; 58 - default-state = "off"; 59 - }; 60 - 61 - green_led { 62 - label = "green_led"; 63 - gpios = <&gpio1 21 1>; 64 - default-state = "off"; 65 - linux,default-trigger = "heartbeat"; 66 - }; 67 - }; 68 - 69 - gpio_keys { 70 - compatible = "gpio-keys"; 71 - #address-cells = <1>; 72 - #size-cells = <0>; 73 - 74 - button@1 { 75 - label = "Init Button"; 76 - linux,code = <116>; 77 - gpios = <&gpio1 28 0>; 78 - }; 79 - }; 80 - 81 - mdio { 82 - phy0: ethernet-phy@0 { 83 - reg = <0>; 84 - }; 85 - 86 - phy1: ethernet-phy@1 { 87 - reg = <1>; 88 - }; 89 - 90 - phy2: ethernet-phy@2 { 91 - reg = <2>; 92 - }; 93 - 94 - phy3: ethernet-phy@3 { 95 - reg = <3>; 96 - }; 97 - }; 98 - 99 - ethernet@d0070000 { 100 - status = "okay"; 101 - phy = <&phy0>; 102 - phy-mode = "sgmii"; 103 - }; 104 - ethernet@d0074000 { 105 - status = "okay"; 106 - phy = <&phy1>; 107 - phy-mode = "sgmii"; 108 - }; 109 - ethernet@d0030000 { 110 - status = "okay"; 111 - phy = <&phy2>; 112 - phy-mode = "sgmii"; 113 - }; 114 - ethernet@d0034000 { 115 - status = "okay"; 116 - phy = <&phy3>; 117 - phy-mode = "sgmii"; 118 - }; 119 - i2c@d0011000 { 120 - status = "okay"; 121 - clock-frequency = <400000>; 122 - }; 123 - i2c@d0011100 { 124 - status = "okay"; 125 - clock-frequency = <400000>; 126 - 127 - s35390a: s35390a@30 { 128 - compatible = "s35390a"; 129 - reg = <0x30>; 130 - }; 131 - }; 132 - sata@d00a0000 { 133 - nr-ports = <2>; 134 - status = "okay"; 135 - }; 136 - usb@d0050000 { 137 - status = "okay"; 138 - }; 139 - usb@d0051000 { 140 - status = "okay"; 141 - }; 142 - 143 - devbus-bootcs@d0010400 { 144 - status = "okay"; 145 - ranges = <0 0xf0000000 0x8000000>; /* @addr 0xf000000, size 0x8000000 */ 146 - 147 - /* Device Bus parameters are required */ 148 - 149 - /* Read parameters */ 150 - devbus,bus-width = <8>; 151 - devbus,turn-off-ps = <60000>; 152 - devbus,badr-skew-ps = <0>; 153 - devbus,acc-first-ps = <124000>; 154 - devbus,acc-next-ps = <248000>; 155 - devbus,rd-setup-ps = <0>; 156 - devbus,rd-hold-ps = <0>; 157 - 158 - /* Write parameters */ 159 - devbus,sync-enable = <0>; 160 - devbus,wr-high-ps = <60000>; 161 - devbus,wr-low-ps = <60000>; 162 - devbus,ale-wr-ps = <60000>; 163 - 164 - /* NOR 128 MiB */ 165 - nor@0 { 166 - compatible = "cfi-flash"; 167 - reg = <0 0x8000000>; 168 - bank-width = <2>; 169 - }; 170 - }; 171 - 172 - pcie-controller { 173 - status = "okay"; 174 - /* Internal mini-PCIe connector */ 175 - pcie@1,0 { 176 - /* Port 0, Lane 0 */ 30 + internal-regs { 31 + serial@12000 { 32 + clock-frequency = <250000000>; 177 33 status = "okay"; 34 + }; 35 + serial@12100 { 36 + clock-frequency = <250000000>; 37 + status = "okay"; 38 + }; 39 + pinctrl { 40 + led_pins: led-pins-0 { 41 + marvell,pins = "mpp49", "mpp51", "mpp53"; 42 + marvell,function = "gpio"; 43 + }; 44 + }; 45 + leds { 46 + compatible = "gpio-leds"; 47 + pinctrl-names = "default"; 48 + pinctrl-0 = <&led_pins>; 49 + 50 + red_led { 51 + label = "red_led"; 52 + gpios = <&gpio1 17 1>; 53 + default-state = "off"; 54 + }; 55 + 56 + yellow_led { 57 + label = "yellow_led"; 58 + gpios = <&gpio1 19 1>; 59 + default-state = "off"; 60 + }; 61 + 62 + green_led { 63 + label = "green_led"; 64 + gpios = <&gpio1 21 1>; 65 + default-state = "off"; 66 + linux,default-trigger = "heartbeat"; 67 + }; 68 + }; 69 + 70 + gpio_keys { 71 + compatible = "gpio-keys"; 72 + #address-cells = <1>; 73 + #size-cells = <0>; 74 + 75 + button@1 { 76 + label = "Init Button"; 77 + linux,code = <116>; 78 + gpios = <&gpio1 28 0>; 79 + }; 80 + }; 81 + 82 + mdio { 83 + phy0: ethernet-phy@0 { 84 + reg = <0>; 85 + }; 86 + 87 + phy1: ethernet-phy@1 { 88 + reg = <1>; 89 + }; 90 + 91 + phy2: ethernet-phy@2 { 92 + reg = <2>; 93 + }; 94 + 95 + phy3: ethernet-phy@3 { 96 + reg = <3>; 97 + }; 98 + }; 99 + 100 + ethernet@70000 { 101 + status = "okay"; 102 + phy = <&phy0>; 103 + phy-mode = "sgmii"; 104 + }; 105 + ethernet@74000 { 106 + status = "okay"; 107 + phy = <&phy1>; 108 + phy-mode = "sgmii"; 109 + }; 110 + ethernet@30000 { 111 + status = "okay"; 112 + phy = <&phy2>; 113 + phy-mode = "sgmii"; 114 + }; 115 + ethernet@34000 { 116 + status = "okay"; 117 + phy = <&phy3>; 118 + phy-mode = "sgmii"; 119 + }; 120 + i2c@11000 { 121 + status = "okay"; 122 + clock-frequency = <400000>; 123 + }; 124 + i2c@11100 { 125 + status = "okay"; 126 + clock-frequency = <400000>; 127 + 128 + s35390a: s35390a@30 { 129 + compatible = "s35390a"; 130 + reg = <0x30>; 131 + }; 132 + }; 133 + sata@a0000 { 134 + nr-ports = <2>; 135 + status = "okay"; 136 + }; 137 + usb@50000 { 138 + status = "okay"; 139 + }; 140 + usb@51000 { 141 + status = "okay"; 142 + }; 143 + 144 + devbus-bootcs@10400 { 145 + status = "okay"; 146 + ranges = <0 0xf0000000 0x8000000>; /* @addr 0xf000000, size 0x8000000 */ 147 + 148 + /* Device Bus parameters are required */ 149 + 150 + /* Read parameters */ 151 + devbus,bus-width = <8>; 152 + devbus,turn-off-ps = <60000>; 153 + devbus,badr-skew-ps = <0>; 154 + devbus,acc-first-ps = <124000>; 155 + devbus,acc-next-ps = <248000>; 156 + devbus,rd-setup-ps = <0>; 157 + devbus,rd-hold-ps = <0>; 158 + 159 + /* Write parameters */ 160 + devbus,sync-enable = <0>; 161 + devbus,wr-high-ps = <60000>; 162 + devbus,wr-low-ps = <60000>; 163 + devbus,ale-wr-ps = <60000>; 164 + 165 + /* NOR 128 MiB */ 166 + nor@0 { 167 + compatible = "cfi-flash"; 168 + reg = <0 0x8000000>; 169 + bank-width = <2>; 170 + }; 171 + }; 172 + 173 + pcie-controller { 174 + status = "okay"; 175 + /* Internal mini-PCIe connector */ 176 + pcie@1,0 { 177 + /* Port 0, Lane 0 */ 178 + status = "okay"; 179 + }; 178 180 }; 179 181 }; 180 182 };
+102 -102
arch/arm/boot/dts/armada-xp.dtsi
··· 22 22 model = "Marvell Armada XP family SoC"; 23 23 compatible = "marvell,armadaxp", "marvell,armada-370-xp"; 24 24 25 - L2: l2-cache { 26 - compatible = "marvell,aurora-system-cache"; 27 - reg = <0xd0008000 0x1000>; 28 - cache-id-part = <0x100>; 29 - wt-override; 30 - }; 31 - 32 - mpic: interrupt-controller@d0020000 { 33 - reg = <0xd0020a00 0x2d0>, 34 - <0xd0021070 0x58>; 35 - }; 36 - 37 - armada-370-xp-pmsu@d0022000 { 38 - compatible = "marvell,armada-370-xp-pmsu"; 39 - reg = <0xd0022100 0x430>, 40 - <0xd0020800 0x20>; 41 - }; 42 - 43 25 soc { 44 - serial@d0012200 { 26 + internal-regs { 27 + L2: l2-cache { 28 + compatible = "marvell,aurora-system-cache"; 29 + reg = <0x08000 0x1000>; 30 + cache-id-part = <0x100>; 31 + wt-override; 32 + }; 33 + 34 + mpic: interrupt-controller@20000 { 35 + reg = <0x20a00 0x2d0>, <0x21070 0x58>; 36 + }; 37 + 38 + armada-370-xp-pmsu@22000 { 39 + compatible = "marvell,armada-370-xp-pmsu"; 40 + reg = <0x22100 0x430>, <0x20800 0x20>; 41 + }; 42 + 43 + serial@12200 { 45 44 compatible = "snps,dw-apb-uart"; 46 - reg = <0xd0012200 0x100>; 45 + reg = <0x12200 0x100>; 47 46 reg-shift = <2>; 48 47 interrupts = <43>; 49 48 reg-io-width = <1>; 50 49 status = "disabled"; 51 - }; 52 - serial@d0012300 { 50 + }; 51 + serial@12300 { 53 52 compatible = "snps,dw-apb-uart"; 54 - reg = <0xd0012300 0x100>; 53 + reg = <0x12300 0x100>; 55 54 reg-shift = <2>; 56 55 interrupts = <44>; 57 56 reg-io-width = <1>; 58 57 status = "disabled"; 59 - }; 58 + }; 60 59 61 - timer@d0020300 { 60 + timer@20300 { 62 61 marvell,timer-25Mhz; 63 - }; 62 + }; 64 63 65 - coreclk: mvebu-sar@d0018230 { 66 - compatible = "marvell,armada-xp-core-clock"; 67 - reg = <0xd0018230 0x08>; 68 - #clock-cells = <1>; 69 - }; 64 + coreclk: mvebu-sar@18230 { 65 + compatible = "marvell,armada-xp-core-clock"; 66 + reg = <0x18230 0x08>; 67 + #clock-cells = <1>; 68 + }; 70 69 71 - cpuclk: clock-complex@d0018700 { 72 - #clock-cells = <1>; 73 - compatible = "marvell,armada-xp-cpu-clock"; 74 - reg = <0xd0018700 0xA0>; 75 - clocks = <&coreclk 1>; 76 - }; 70 + cpuclk: clock-complex@18700 { 71 + #clock-cells = <1>; 72 + compatible = "marvell,armada-xp-cpu-clock"; 73 + reg = <0x18700 0xA0>; 74 + clocks = <&coreclk 1>; 75 + }; 77 76 78 - gateclk: clock-gating-control@d0018220 { 79 - compatible = "marvell,armada-xp-gating-clock"; 80 - reg = <0xd0018220 0x4>; 81 - clocks = <&coreclk 0>; 82 - #clock-cells = <1>; 83 - }; 77 + gateclk: clock-gating-control@18220 { 78 + compatible = "marvell,armada-xp-gating-clock"; 79 + reg = <0x18220 0x4>; 80 + clocks = <&coreclk 0>; 81 + #clock-cells = <1>; 82 + }; 84 83 85 - system-controller@d0018200 { 84 + system-controller@18200 { 86 85 compatible = "marvell,armada-370-xp-system-controller"; 87 - reg = <0xd0018200 0x500>; 88 - }; 86 + reg = <0x18200 0x500>; 87 + }; 89 88 90 - ethernet@d0030000 { 89 + ethernet@30000 { 91 90 compatible = "marvell,armada-370-neta"; 92 - reg = <0xd0030000 0x2500>; 91 + reg = <0x30000 0x2500>; 93 92 interrupts = <12>; 94 93 clocks = <&gateclk 2>; 95 94 status = "disabled"; 96 - }; 97 - 98 - xor@d0060900 { 99 - compatible = "marvell,orion-xor"; 100 - reg = <0xd0060900 0x100 101 - 0xd0060b00 0x100>; 102 - clocks = <&gateclk 22>; 103 - status = "okay"; 104 - 105 - xor10 { 106 - interrupts = <51>; 107 - dmacap,memcpy; 108 - dmacap,xor; 109 95 }; 110 - xor11 { 111 - interrupts = <52>; 112 - dmacap,memcpy; 113 - dmacap,xor; 114 - dmacap,memset; 96 + 97 + xor@60900 { 98 + compatible = "marvell,orion-xor"; 99 + reg = <0x60900 0x100 100 + 0x60b00 0x100>; 101 + clocks = <&gateclk 22>; 102 + status = "okay"; 103 + 104 + xor10 { 105 + interrupts = <51>; 106 + dmacap,memcpy; 107 + dmacap,xor; 108 + }; 109 + xor11 { 110 + interrupts = <52>; 111 + dmacap,memcpy; 112 + dmacap,xor; 113 + dmacap,memset; 114 + }; 115 115 }; 116 - }; 117 116 118 - xor@d00f0900 { 119 - compatible = "marvell,orion-xor"; 120 - reg = <0xd00F0900 0x100 121 - 0xd00F0B00 0x100>; 122 - clocks = <&gateclk 28>; 123 - status = "okay"; 117 + xor@f0900 { 118 + compatible = "marvell,orion-xor"; 119 + reg = <0xF0900 0x100 120 + 0xF0B00 0x100>; 121 + clocks = <&gateclk 28>; 122 + status = "okay"; 124 123 125 - xor00 { 126 - interrupts = <94>; 127 - dmacap,memcpy; 128 - dmacap,xor; 124 + xor00 { 125 + interrupts = <94>; 126 + dmacap,memcpy; 127 + dmacap,xor; 128 + }; 129 + xor01 { 130 + interrupts = <95>; 131 + dmacap,memcpy; 132 + dmacap,xor; 133 + dmacap,memset; 134 + }; 129 135 }; 130 - xor01 { 131 - interrupts = <95>; 132 - dmacap,memcpy; 133 - dmacap,xor; 134 - dmacap,memset; 136 + 137 + usb@50000 { 138 + clocks = <&gateclk 18>; 135 139 }; 136 - }; 137 140 138 - usb@d0050000 { 139 - clocks = <&gateclk 18>; 140 - }; 141 + usb@51000 { 142 + clocks = <&gateclk 19>; 143 + }; 141 144 142 - usb@d0051000 { 143 - clocks = <&gateclk 19>; 144 - }; 145 + usb@52000 { 146 + compatible = "marvell,orion-ehci"; 147 + reg = <0x52000 0x500>; 148 + interrupts = <47>; 149 + clocks = <&gateclk 20>; 150 + status = "disabled"; 151 + }; 145 152 146 - usb@d0052000 { 147 - compatible = "marvell,orion-ehci"; 148 - reg = <0xd0052000 0x500>; 149 - interrupts = <47>; 150 - clocks = <&gateclk 20>; 151 - status = "disabled"; 152 - }; 153 - 154 - thermal@d00182b0 { 155 - compatible = "marvell,armadaxp-thermal"; 156 - reg = <0xd00182b0 0x4 157 - 0xd00184d0 0x4>; 158 - status = "okay"; 153 + thermal@182b0 { 154 + compatible = "marvell,armadaxp-thermal"; 155 + reg = <0x182b0 0x4 156 + 0x184d0 0x4>; 157 + status = "okay"; 158 + }; 159 159 }; 160 160 }; 161 161 };
+20 -34
arch/arm/boot/dts/cros5250-common.dtsi
··· 19 19 chosen { 20 20 }; 21 21 22 + pinctrl@11400000 { 23 + /* 24 + * Disabled pullups since external part has its own pullups and 25 + * double-pulling gets us out of spec in some cases. 26 + */ 27 + i2c2_bus: i2c2-bus { 28 + samsung,pin-pud = <0>; 29 + }; 30 + }; 31 + 22 32 i2c@12C60000 { 23 33 samsung,i2c-sda-delay = <100>; 24 34 samsung,i2c-max-bus-freq = <378000>; 25 - gpios = <&gpb3 0 2 3 0>, 26 - <&gpb3 1 2 3 0>; 27 35 28 36 max77686@09 { 29 37 compatible = "maxim,max77686"; ··· 175 167 i2c@12C70000 { 176 168 samsung,i2c-sda-delay = <100>; 177 169 samsung,i2c-max-bus-freq = <378000>; 178 - gpios = <&gpb3 2 2 3 0>, 179 - <&gpb3 3 2 3 0>; 180 170 }; 181 171 182 172 i2c@12C80000 { 183 173 samsung,i2c-sda-delay = <100>; 184 174 samsung,i2c-max-bus-freq = <66000>; 185 - 186 - /* 187 - * Disabled pullups since external part has its own pullups and 188 - * double-pulling gets us out of spec in some cases. 189 - */ 190 - gpios = <&gpa0 6 3 0 0>, 191 - <&gpa0 7 3 0 0>; 192 175 193 176 hdmiddc@50 { 194 177 compatible = "samsung,exynos5-hdmiddc"; ··· 190 191 i2c@12C90000 { 191 192 samsung,i2c-sda-delay = <100>; 192 193 samsung,i2c-max-bus-freq = <66000>; 193 - gpios = <&gpa1 2 3 3 0>, 194 - <&gpa1 3 3 3 0>; 195 194 }; 196 195 197 196 i2c@12CA0000 { 198 - status = "disabled"; 197 + samsung,i2c-sda-delay = <100>; 198 + samsung,i2c-max-bus-freq = <66000>; 199 199 }; 200 200 201 201 i2c@12CB0000 { 202 202 samsung,i2c-sda-delay = <100>; 203 203 samsung,i2c-max-bus-freq = <66000>; 204 - gpios = <&gpa2 2 3 3 0>, 205 - <&gpa2 3 3 3 0>; 206 204 }; 207 205 208 206 i2c@12CC0000 { ··· 209 213 i2c@12CD0000 { 210 214 samsung,i2c-sda-delay = <100>; 211 215 samsung,i2c-max-bus-freq = <66000>; 212 - gpios = <&gpb2 2 3 3 0>, 213 - <&gpb2 3 3 3 0>; 214 216 }; 215 217 216 218 i2c@12CE0000 { ··· 230 236 samsung,dw-mshc-ciu-div = <3>; 231 237 samsung,dw-mshc-sdr-timing = <2 3>; 232 238 samsung,dw-mshc-ddr-timing = <1 2>; 239 + pinctrl-names = "default"; 240 + pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus4 &sd0_bus8>; 233 241 234 242 slot@0 { 235 243 reg = <0>; 236 244 bus-width = <8>; 237 - gpios = <&gpc0 0 2 0 3>, <&gpc0 1 2 0 3>, 238 - <&gpc1 0 2 3 3>, <&gpc1 1 2 3 3>, 239 - <&gpc1 2 2 3 3>, <&gpc1 3 2 3 3>, 240 - <&gpc0 3 2 3 3>, <&gpc0 4 2 3 3>, 241 - <&gpc0 5 2 3 3>, <&gpc0 6 2 3 3>; 242 245 }; 243 246 }; 244 247 ··· 251 260 samsung,dw-mshc-ciu-div = <3>; 252 261 samsung,dw-mshc-sdr-timing = <2 3>; 253 262 samsung,dw-mshc-ddr-timing = <1 2>; 263 + pinctrl-names = "default"; 264 + pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>; 254 265 255 266 slot@0 { 256 267 reg = <0>; 257 268 bus-width = <4>; 258 - samsung,cd-pinmux-gpio = <&gpc3 2 2 3 3>; 259 - wp-gpios = <&gpc2 1 0 0 3>; 260 - gpios = <&gpc3 0 2 0 3>, <&gpc3 1 2 0 3>, 261 - <&gpc3 3 2 3 3>, <&gpc3 4 2 3 3>, 262 - <&gpc3 5 2 3 3>, <&gpc3 6 2 3 3>; 269 + wp-gpios = <&gpc2 1 0>; 263 270 }; 264 271 }; 265 272 ··· 270 281 samsung,dw-mshc-ciu-div = <3>; 271 282 samsung,dw-mshc-sdr-timing = <2 3>; 272 283 samsung,dw-mshc-ddr-timing = <1 2>; 284 + /* See board-specific dts files for pin setup */ 273 285 274 286 slot@0 { 275 287 reg = <0>; 276 288 bus-width = <4>; 277 - /* See board-specific dts files for GPIOs */ 278 289 }; 279 290 }; 280 291 ··· 283 294 }; 284 295 285 296 spi_1: spi@12d30000 { 286 - gpios = <&gpa2 4 2 3 0>, 287 - <&gpa2 6 2 3 0>, 288 - <&gpa2 7 2 3 0>; 289 297 samsung,spi-src-clk = <0>; 290 298 num-cs = <1>; 291 299 }; ··· 292 306 }; 293 307 294 308 hdmi { 295 - hpd-gpio = <&gpx3 7 0xf 1 3>; 309 + hpd-gpio = <&gpx3 7 0>; 296 310 }; 297 311 298 312 gpio-keys { ··· 300 314 301 315 power { 302 316 label = "Power"; 303 - gpios = <&gpx1 3 0 0x10000 0>; 317 + gpios = <&gpx1 3 1>; 304 318 linux,code = <116>; /* KEY_POWER */ 305 319 gpio-key,wakeup; 306 320 };
+40
arch/arm/boot/dts/da850-evm.dts
··· 50 50 pinctrl-names = "default"; 51 51 pinctrl-0 = <&mmc0_pins>; 52 52 }; 53 + spi1: spi@1f0e000 { 54 + status = "okay"; 55 + pinctrl-names = "default"; 56 + pinctrl-0 = <&spi1_pins &spi1_cs0_pin>; 57 + flash: m25p80@0 { 58 + #address-cells = <1>; 59 + #size-cells = <1>; 60 + compatible = "m25p64"; 61 + spi-max-frequency = <30000000>; 62 + reg = <0>; 63 + partition@0 { 64 + label = "U-Boot-SPL"; 65 + reg = <0x00000000 0x00010000>; 66 + read-only; 67 + }; 68 + partition@1 { 69 + label = "U-Boot"; 70 + reg = <0x00010000 0x00080000>; 71 + read-only; 72 + }; 73 + partition@2 { 74 + label = "U-Boot-Env"; 75 + reg = <0x00090000 0x00010000>; 76 + read-only; 77 + }; 78 + partition@3 { 79 + label = "Kernel"; 80 + reg = <0x000a0000 0x00280000>; 81 + }; 82 + partition@4 { 83 + label = "Filesystem"; 84 + reg = <0x00320000 0x00400000>; 85 + }; 86 + partition@5 { 87 + label = "MAC-Address"; 88 + reg = <0x007f0000 0x00010000>; 89 + read-only; 90 + }; 91 + }; 92 + }; 53 93 }; 54 94 nand_cs3@62000000 { 55 95 status = "okay";
+94
arch/arm/boot/dts/da850.dtsi
··· 71 71 0x28 0x00222222 0x00ffffff 72 72 >; 73 73 }; 74 + ehrpwm0a_pins: pinmux_ehrpwm0a_pins { 75 + pinctrl-single,bits = < 76 + /* EPWM0A */ 77 + 0xc 0x00000002 0x0000000f 78 + >; 79 + }; 80 + ehrpwm0b_pins: pinmux_ehrpwm0b_pins { 81 + pinctrl-single,bits = < 82 + /* EPWM0B */ 83 + 0xc 0x00000020 0x000000f0 84 + >; 85 + }; 86 + ehrpwm1a_pins: pinmux_ehrpwm1a_pins { 87 + pinctrl-single,bits = < 88 + /* EPWM1A */ 89 + 0x14 0x00000002 0x0000000f 90 + >; 91 + }; 92 + ehrpwm1b_pins: pinmux_ehrpwm1b_pins { 93 + pinctrl-single,bits = < 94 + /* EPWM1B */ 95 + 0x14 0x00000020 0x000000f0 96 + >; 97 + }; 98 + ecap0_pins: pinmux_ecap0_pins { 99 + pinctrl-single,bits = < 100 + /* ECAP0_APWM0 */ 101 + 0x8 0x20000000 0xf0000000 102 + >; 103 + }; 104 + ecap1_pins: pinmux_ecap1_pins { 105 + pinctrl-single,bits = < 106 + /* ECAP1_APWM1 */ 107 + 0x4 0x40000000 0xf0000000 108 + >; 109 + }; 110 + ecap2_pins: pinmux_ecap2_pins { 111 + pinctrl-single,bits = < 112 + /* ECAP2_APWM2 */ 113 + 0x4 0x00000004 0x0000000f 114 + >; 115 + }; 116 + spi1_pins: pinmux_spi_pins { 117 + pinctrl-single,bits = < 118 + /* SIMO, SOMI, CLK */ 119 + 0x14 0x00110100 0x00ff0f00 120 + >; 121 + }; 122 + spi1_cs0_pin: pinmux_spi1_cs0 { 123 + pinctrl-single,bits = < 124 + /* CS0 */ 125 + 0x14 0x00000010 0x000000f0 126 + >; 127 + }; 74 128 }; 75 129 serial0: serial@1c42000 { 76 130 compatible = "ns16550a"; ··· 174 120 compatible = "ti,da830-mmc"; 175 121 reg = <0x40000 0x1000>; 176 122 interrupts = <16>; 123 + status = "disabled"; 124 + }; 125 + ehrpwm0: ehrpwm@01f00000 { 126 + compatible = "ti,da850-ehrpwm", "ti,am33xx-ehrpwm"; 127 + #pwm-cells = <3>; 128 + reg = <0x300000 0x2000>; 129 + status = "disabled"; 130 + }; 131 + ehrpwm1: ehrpwm@01f02000 { 132 + compatible = "ti,da850-ehrpwm", "ti,am33xx-ehrpwm"; 133 + #pwm-cells = <3>; 134 + reg = <0x302000 0x2000>; 135 + status = "disabled"; 136 + }; 137 + ecap0: ecap@01f06000 { 138 + compatible = "ti,da850-ecap", "ti,am33xx-ecap"; 139 + #pwm-cells = <3>; 140 + reg = <0x306000 0x80>; 141 + status = "disabled"; 142 + }; 143 + ecap1: ecap@01f07000 { 144 + compatible = "ti,da850-ecap", "ti,am33xx-ecap"; 145 + #pwm-cells = <3>; 146 + reg = <0x307000 0x80>; 147 + status = "disabled"; 148 + }; 149 + ecap2: ecap@01f08000 { 150 + compatible = "ti,da850-ecap", "ti,am33xx-ecap"; 151 + #pwm-cells = <3>; 152 + reg = <0x308000 0x80>; 153 + status = "disabled"; 154 + }; 155 + spi1: spi@1f0e000 { 156 + #address-cells = <1>; 157 + #size-cells = <0>; 158 + compatible = "ti,da830-spi"; 159 + reg = <0x30e000 0x1000>; 160 + num-cs = <4>; 161 + ti,davinci-spi-intr-line = <1>; 162 + interrupts = <56>; 177 163 status = "disabled"; 178 164 }; 179 165 };
+32
arch/arm/boot/dts/exynos4.dtsi
··· 38 38 i2c7 = &i2c_7; 39 39 }; 40 40 41 + chipid@10000000 { 42 + compatible = "samsung,exynos4210-chipid"; 43 + reg = <0x10000000 0x100>; 44 + }; 45 + 41 46 pd_mfc: mfc-power-domain@10023C40 { 42 47 compatible = "samsung,exynos4210-pd"; 43 48 reg = <0x10023C40 0x20>; ··· 85 80 #interrupt-cells = <2>; 86 81 interrupt-controller; 87 82 reg = <0x10440000 0x1000>; 83 + }; 84 + 85 + sys_reg: sysreg { 86 + compatible = "samsung,exynos4-sysreg", "syscon"; 87 + reg = <0x10010000 0x400>; 88 88 }; 89 89 90 90 watchdog@10060000 { ··· 207 197 interrupts = <0 58 0>; 208 198 clocks = <&clock 317>; 209 199 clock-names = "i2c"; 200 + pinctrl-names = "default"; 201 + pinctrl-0 = <&i2c0_bus>; 210 202 status = "disabled"; 211 203 }; 212 204 ··· 220 208 interrupts = <0 59 0>; 221 209 clocks = <&clock 318>; 222 210 clock-names = "i2c"; 211 + pinctrl-names = "default"; 212 + pinctrl-0 = <&i2c1_bus>; 223 213 status = "disabled"; 224 214 }; 225 215 ··· 301 287 #size-cells = <0>; 302 288 clocks = <&clock 327>, <&clock 159>; 303 289 clock-names = "spi", "spi_busclk0"; 290 + pinctrl-names = "default"; 291 + pinctrl-0 = <&spi0_bus>; 304 292 status = "disabled"; 305 293 }; 306 294 ··· 316 300 #size-cells = <0>; 317 301 clocks = <&clock 328>, <&clock 160>; 318 302 clock-names = "spi", "spi_busclk0"; 303 + pinctrl-names = "default"; 304 + pinctrl-0 = <&spi1_bus>; 319 305 status = "disabled"; 320 306 }; 321 307 ··· 331 313 #size-cells = <0>; 332 314 clocks = <&clock 329>, <&clock 161>; 333 315 clock-names = "spi", "spi_busclk0"; 316 + pinctrl-names = "default"; 317 + pinctrl-0 = <&spi2_bus>; 334 318 status = "disabled"; 335 319 }; 336 320 ··· 375 355 #dma-channels = <8>; 376 356 #dma-requests = <1>; 377 357 }; 358 + }; 359 + 360 + fimd: fimd@11c00000 { 361 + compatible = "samsung,exynos4210-fimd"; 362 + interrupt-parent = <&combiner>; 363 + reg = <0x11c00000 0x20000>; 364 + interrupt-names = "fifo", "vsync", "lcd_sys"; 365 + interrupts = <11 0>, <11 1>, <11 2>; 366 + clocks = <&clock 140>, <&clock 283>; 367 + clock-names = "sclk_fimd", "fimd"; 368 + samsung,power-domain = <&pd_lcd0>; 369 + status = "disabled"; 378 370 }; 379 371 };
+4
arch/arm/boot/dts/exynos4210-origen.dts
··· 57 57 status = "okay"; 58 58 }; 59 59 60 + g2d@12800000 { 61 + status = "okay"; 62 + }; 63 + 60 64 codec@13400000 { 61 65 samsung,mfc-r = <0x43000000 0x800000>; 62 66 samsung,mfc-l = <0x51000000 0x800000>;
+28 -29
arch/arm/boot/dts/exynos4210-smdkv310.dts
··· 30 30 }; 31 31 32 32 sdhci@12530000 { 33 - samsung,sdhci-bus-width = <4>; 34 - linux,mmc_cap_4_bit_data; 35 - samsung,sdhci-cd-internal; 36 - gpio-cd = <&gpk2 2 2 3 3>; 37 - gpios = <&gpk2 0 2 0 3>, 38 - <&gpk2 1 2 0 3>, 39 - <&gpk2 3 2 3 3>, 40 - <&gpk2 4 2 3 3>, 41 - <&gpk2 5 2 3 3>, 42 - <&gpk2 6 2 3 3>; 33 + bus-width = <4>; 34 + pinctrl-names = "default"; 35 + pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>; 36 + status = "okay"; 37 + }; 38 + 39 + g2d@12800000 { 43 40 status = "okay"; 44 41 }; 45 42 ··· 62 65 status = "okay"; 63 66 }; 64 67 68 + pinctrl@11000000 { 69 + keypad_rows: keypad-rows { 70 + samsung,pins = "gpx2-0", "gpx2-1"; 71 + samsung,pin-function = <3>; 72 + samsung,pin-pud = <3>; 73 + samsung,pin-drv = <0>; 74 + }; 75 + 76 + keypad_cols: keypad-cols { 77 + samsung,pins = "gpx1-0", "gpx1-1", "gpx1-2", "gpx1-3", 78 + "gpx1-4", "gpx1-5", "gpx1-6", "gpx1-7"; 79 + samsung,pin-function = <3>; 80 + samsung,pin-pud = <0>; 81 + samsung,pin-drv = <0>; 82 + }; 83 + }; 84 + 65 85 keypad@100A0000 { 66 86 samsung,keypad-num-rows = <2>; 67 87 samsung,keypad-num-columns = <8>; 68 88 linux,keypad-no-autorepeat; 69 89 linux,keypad-wakeup; 90 + pinctrl-names = "default"; 91 + pinctrl-0 = <&keypad_rows &keypad_cols>; 70 92 status = "okay"; 71 - 72 - row-gpios = <&gpx2 0 3 3 0>, 73 - <&gpx2 1 3 3 0>; 74 - 75 - col-gpios = <&gpx1 0 3 0 0>, 76 - <&gpx1 1 3 0 0>, 77 - <&gpx1 2 3 0 0>, 78 - <&gpx1 3 3 0 0>, 79 - <&gpx1 4 3 0 0>, 80 - <&gpx1 5 3 0 0>, 81 - <&gpx1 6 3 0 0>, 82 - <&gpx1 7 3 0 0>; 83 93 84 94 key_1 { 85 95 keypad,row = <0>; ··· 153 149 #address-cells = <1>; 154 150 #size-cells = <0>; 155 151 samsung,i2c-sda-delay = <100>; 156 - samsung,i2c-max-bus-freq = <20000>; 157 - gpios = <&gpd1 0 2 3 0>, 158 - <&gpd1 1 2 3 0>; 152 + samsung,i2c-max-bus-freq = <100000>; 159 153 status = "okay"; 160 154 161 155 eeprom@50 { ··· 168 166 }; 169 167 170 168 spi_2: spi@13940000 { 171 - gpios = <&gpc1 1 5 3 0>, 172 - <&gpc1 3 5 3 0>, 173 - <&gpc1 4 5 3 0>; 174 169 status = "okay"; 175 170 176 171 w25x80@0 { ··· 178 179 spi-max-frequency = <1000000>; 179 180 180 181 controller-data { 181 - cs-gpio = <&gpc1 2 1 0 3>; 182 + cs-gpio = <&gpc1 2 0>; 182 183 samsung,spi-feedback-delay = <0>; 183 184 }; 184 185
+7
arch/arm/boot/dts/exynos4210.dtsi
··· 112 112 reg = <0x100C0000 0x100>; 113 113 interrupts = <2 4>; 114 114 }; 115 + 116 + g2d@12800000 { 117 + compatible = "samsung,s5pv210-g2d"; 118 + reg = <0x12800000 0x1000>; 119 + interrupts = <0 89 0>; 120 + status = "disabled"; 121 + }; 115 122 };
+21
arch/arm/boot/dts/exynos4412-origen.dts
··· 72 72 status = "okay"; 73 73 }; 74 74 75 + fimd@11c00000 { 76 + pinctrl-0 = <&lcd_clk &lcd_data24 &pwm1_out>; 77 + pinctrl-names = "default"; 78 + status = "okay"; 79 + }; 80 + 81 + display-timings { 82 + native-mode = <&timing0>; 83 + timing0: timing { 84 + clock-frequency = <50000>; 85 + hactive = <1024>; 86 + vactive = <600>; 87 + hfront-porch = <64>; 88 + hback-porch = <16>; 89 + hsync-len = <48>; 90 + vback-porch = <64>; 91 + vfront-porch = <16>; 92 + vsync-len = <3>; 93 + }; 94 + }; 95 + 75 96 serial@13800000 { 76 97 status = "okay"; 77 98 };
+8
arch/arm/boot/dts/exynos4412-smdk4412.dts
··· 27 27 bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc"; 28 28 }; 29 29 30 + g2d@10800000 { 31 + status = "okay"; 32 + }; 33 + 34 + g2d@10800000 { 35 + status = "okay"; 36 + }; 37 + 30 38 sdhci@12530000 { 31 39 bus-width = <4>; 32 40 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &sd2_cd>;
+8
arch/arm/boot/dts/exynos4412.dtsi
··· 51 51 <0x7 0 &gic 1 12 0>; 52 52 }; 53 53 }; 54 + 55 + mshc@12550000 { 56 + compatible = "samsung,exynos4412-dw-mshc"; 57 + reg = <0x12550000 0x1000>; 58 + interrupts = <0 77 0>; 59 + #address-cells = <1>; 60 + #size-cells = <0>; 61 + }; 54 62 };
+7
arch/arm/boot/dts/exynos4x12.dtsi
··· 72 72 reg = <0x106E0000 0x1000>; 73 73 interrupts = <0 72 0>; 74 74 }; 75 + 76 + g2d@10800000 { 77 + compatible = "samsung,exynos4212-g2d"; 78 + reg = <0x10800000 0x1000>; 79 + interrupts = <0 89 0>; 80 + status = "disabled"; 81 + }; 75 82 };
+333 -10
arch/arm/boot/dts/exynos5250-arndale.dts
··· 24 24 bootargs = "console=ttySAC2,115200"; 25 25 }; 26 26 27 + codec@11000000 { 28 + samsung,mfc-r = <0x43000000 0x800000>; 29 + samsung,mfc-l = <0x51000000 0x800000>; 30 + }; 31 + 27 32 i2c@12C60000 { 28 - status = "disabled"; 33 + samsung,i2c-sda-delay = <100>; 34 + samsung,i2c-max-bus-freq = <20000>; 35 + samsung,i2c-slave-addr = <0x66>; 36 + 37 + s5m8767_pmic@66 { 38 + compatible = "samsung,s5m8767-pmic"; 39 + reg = <0x66>; 40 + 41 + s5m8767,pmic-buck2-dvs-voltage = <1300000>; 42 + s5m8767,pmic-buck3-dvs-voltage = <1100000>; 43 + s5m8767,pmic-buck4-dvs-voltage = <1200000>; 44 + s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 0>, 45 + <&gpd1 1 0>, 46 + <&gpd1 2 0>; 47 + s5m8767,pmic-buck-ds-gpios = <&gpx2 3 0>, 48 + <&gpx2 4 0>, 49 + <&gpx2 5 0>; 50 + regulators { 51 + ldo1_reg: LDO1 { 52 + regulator-name = "VDD_ALIVE_1.0V"; 53 + regulator-min-microvolt = <1100000>; 54 + regulator-max-microvolt = <1100000>; 55 + regulator-always-on; 56 + regulator-boot-on; 57 + op_mode = <1>; 58 + }; 59 + 60 + ldo2_reg: LDO2 { 61 + regulator-name = "VDD_28IO_DP_1.35V"; 62 + regulator-min-microvolt = <1200000>; 63 + regulator-max-microvolt = <1200000>; 64 + regulator-always-on; 65 + regulator-boot-on; 66 + op_mode = <1>; 67 + }; 68 + 69 + ldo3_reg: LDO3 { 70 + regulator-name = "VDD_COMMON1_1.8V"; 71 + regulator-min-microvolt = <1800000>; 72 + regulator-max-microvolt = <1800000>; 73 + regulator-always-on; 74 + regulator-boot-on; 75 + op_mode = <1>; 76 + }; 77 + 78 + ldo4_reg: LDO4 { 79 + regulator-name = "VDD_IOPERI_1.8V"; 80 + regulator-min-microvolt = <1800000>; 81 + regulator-max-microvolt = <1800000>; 82 + op_mode = <1>; 83 + }; 84 + 85 + ldo5_reg: LDO5 { 86 + regulator-name = "VDD_EXT_1.8V"; 87 + regulator-min-microvolt = <1800000>; 88 + regulator-max-microvolt = <1800000>; 89 + regulator-always-on; 90 + regulator-boot-on; 91 + op_mode = <1>; 92 + }; 93 + 94 + ldo6_reg: LDO6 { 95 + regulator-name = "VDD_MPLL_1.1V"; 96 + regulator-min-microvolt = <1100000>; 97 + regulator-max-microvolt = <1100000>; 98 + regulator-always-on; 99 + regulator-boot-on; 100 + op_mode = <1>; 101 + }; 102 + 103 + ldo7_reg: LDO7 { 104 + regulator-name = "VDD_XPLL_1.1V"; 105 + regulator-min-microvolt = <1100000>; 106 + regulator-max-microvolt = <1100000>; 107 + regulator-always-on; 108 + regulator-boot-on; 109 + op_mode = <1>; 110 + }; 111 + 112 + ldo8_reg: LDO8 { 113 + regulator-name = "VDD_COMMON2_1.0V"; 114 + regulator-min-microvolt = <1000000>; 115 + regulator-max-microvolt = <1000000>; 116 + regulator-always-on; 117 + regulator-boot-on; 118 + op_mode = <1>; 119 + }; 120 + 121 + ldo9_reg: LDO9 { 122 + regulator-name = "VDD_33ON_3.0V"; 123 + regulator-min-microvolt = <3000000>; 124 + regulator-max-microvolt = <3000000>; 125 + op_mode = <1>; 126 + }; 127 + 128 + ldo10_reg: LDO10 { 129 + regulator-name = "VDD_COMMON3_1.8V"; 130 + regulator-min-microvolt = <1800000>; 131 + regulator-max-microvolt = <1800000>; 132 + regulator-always-on; 133 + regulator-boot-on; 134 + op_mode = <1>; 135 + }; 136 + 137 + ldo11_reg: LDO11 { 138 + regulator-name = "VDD_ABB2_1.8V"; 139 + regulator-min-microvolt = <1800000>; 140 + regulator-max-microvolt = <1800000>; 141 + regulator-always-on; 142 + regulator-boot-on; 143 + op_mode = <1>; 144 + }; 145 + 146 + ldo12_reg: LDO12 { 147 + regulator-name = "VDD_USB_3.0V"; 148 + regulator-min-microvolt = <3000000>; 149 + regulator-max-microvolt = <3000000>; 150 + regulator-always-on; 151 + regulator-boot-on; 152 + op_mode = <1>; 153 + }; 154 + 155 + ldo13_reg: LDO13 { 156 + regulator-name = "VDDQ_C2C_W_1.8V"; 157 + regulator-min-microvolt = <1800000>; 158 + regulator-max-microvolt = <1800000>; 159 + regulator-always-on; 160 + regulator-boot-on; 161 + op_mode = <1>; 162 + }; 163 + 164 + ldo14_reg: LDO14 { 165 + regulator-name = "VDD18_ABB0_3_1.8V"; 166 + regulator-min-microvolt = <1800000>; 167 + regulator-max-microvolt = <1800000>; 168 + regulator-always-on; 169 + regulator-boot-on; 170 + op_mode = <1>; 171 + }; 172 + 173 + ldo15_reg: LDO15 { 174 + regulator-name = "VDD10_COMMON4_1.0V"; 175 + regulator-min-microvolt = <1000000>; 176 + regulator-max-microvolt = <1000000>; 177 + regulator-always-on; 178 + regulator-boot-on; 179 + op_mode = <1>; 180 + }; 181 + 182 + ldo16_reg: LDO16 { 183 + regulator-name = "VDD18_HSIC_1.8V"; 184 + regulator-min-microvolt = <1800000>; 185 + regulator-max-microvolt = <1800000>; 186 + regulator-always-on; 187 + regulator-boot-on; 188 + op_mode = <1>; 189 + }; 190 + 191 + ldo17_reg: LDO17 { 192 + regulator-name = "VDDQ_MMC2_3_2.8V"; 193 + regulator-min-microvolt = <2800000>; 194 + regulator-max-microvolt = <2800000>; 195 + regulator-always-on; 196 + regulator-boot-on; 197 + op_mode = <1>; 198 + }; 199 + 200 + ldo18_reg: LDO18 { 201 + regulator-name = "VDD_33ON_2.8V"; 202 + regulator-min-microvolt = <2800000>; 203 + regulator-max-microvolt = <2800000>; 204 + op_mode = <1>; 205 + }; 206 + 207 + ldo22_reg: LDO22 { 208 + regulator-name = "EXT_33_OFF"; 209 + regulator-min-microvolt = <3300000>; 210 + regulator-max-microvolt = <3300000>; 211 + op_mode = <1>; 212 + }; 213 + 214 + ldo23_reg: LDO23 { 215 + regulator-name = "EXT_28_OFF"; 216 + regulator-min-microvolt = <2800000>; 217 + regulator-max-microvolt = <2800000>; 218 + op_mode = <1>; 219 + }; 220 + 221 + ldo25_reg: LDO25 { 222 + regulator-name = "PVDD_LDO25"; 223 + regulator-min-microvolt = <1200000>; 224 + regulator-max-microvolt = <1200000>; 225 + op_mode = <1>; 226 + }; 227 + 228 + ldo26_reg: LDO26 { 229 + regulator-name = "EXT_18_OFF"; 230 + regulator-min-microvolt = <1800000>; 231 + regulator-max-microvolt = <1800000>; 232 + op_mode = <1>; 233 + }; 234 + 235 + buck1_reg: BUCK1 { 236 + regulator-name = "vdd_mif"; 237 + regulator-min-microvolt = <950000>; 238 + regulator-max-microvolt = <1200000>; 239 + regulator-always-on; 240 + regulator-boot-on; 241 + op_mode = <1>; 242 + }; 243 + 244 + buck2_reg: BUCK2 { 245 + regulator-name = "vdd_arm"; 246 + regulator-min-microvolt = <925000>; 247 + regulator-max-microvolt = <1300000>; 248 + regulator-always-on; 249 + regulator-boot-on; 250 + op_mode = <1>; 251 + }; 252 + 253 + buck3_reg: BUCK3 { 254 + regulator-name = "vdd_int"; 255 + regulator-min-microvolt = <900000>; 256 + regulator-max-microvolt = <1200000>; 257 + regulator-always-on; 258 + regulator-boot-on; 259 + op_mode = <1>; 260 + }; 261 + 262 + buck4_reg: BUCK4 { 263 + regulator-name = "vdd_g3d"; 264 + regulator-min-microvolt = <1000000>; 265 + regulator-max-microvolt = <1000000>; 266 + regulator-boot-on; 267 + op_mode = <1>; 268 + }; 269 + 270 + buck5_reg: BUCK5 { 271 + regulator-name = "VDD_MEM_1.35V"; 272 + regulator-min-microvolt = <750000>; 273 + regulator-max-microvolt = <1355000>; 274 + regulator-always-on; 275 + regulator-boot-on; 276 + op_mode = <1>; 277 + }; 278 + 279 + buck9_reg: BUCK9 { 280 + regulator-name = "VDD_33_OFF_EXT1"; 281 + regulator-min-microvolt = <750000>; 282 + regulator-max-microvolt = <3000000>; 283 + op_mode = <1>; 284 + }; 285 + }; 286 + }; 29 287 }; 30 288 31 289 i2c@12C70000 { ··· 327 69 samsung,dw-mshc-ciu-div = <3>; 328 70 samsung,dw-mshc-sdr-timing = <2 3>; 329 71 samsung,dw-mshc-ddr-timing = <1 2>; 72 + vmmc-supply = <&mmc_reg>; 73 + pinctrl-names = "default"; 74 + pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>; 330 75 331 76 slot@0 { 332 77 reg = <0>; 333 78 bus-width = <8>; 334 - gpios = <&gpc0 0 2 0 3>, <&gpc0 1 2 0 3>, 335 - <&gpc0 3 2 3 3>, <&gpc0 4 2 3 3>, 336 - <&gpc0 5 2 3 3>, <&gpc0 6 2 3 3>, 337 - <&gpc1 0 2 3 3>, <&gpc1 1 2 3 3>, 338 - <&gpc1 2 2 3 3>, <&gpc1 3 2 3 3>; 339 79 }; 340 80 }; 341 81 ··· 349 93 samsung,dw-mshc-ciu-div = <3>; 350 94 samsung,dw-mshc-sdr-timing = <2 3>; 351 95 samsung,dw-mshc-ddr-timing = <1 2>; 96 + vmmc-supply = <&mmc_reg>; 97 + pinctrl-names = "default"; 98 + pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>; 352 99 353 100 slot@0 { 354 101 reg = <0>; 355 102 bus-width = <4>; 356 - samsung,cd-pinmux-gpio = <&gpc3 2 2 3 3>; 357 - gpios = <&gpc3 0 2 0 3>, <&gpc3 1 2 0 3>, 358 - <&gpc3 3 2 3 3>, <&gpc3 4 2 3 3>, 359 - <&gpc3 5 2 3 3>, <&gpc3 6 2 3 3>; 103 + disable-wp; 360 104 }; 361 105 }; 362 106 ··· 374 118 375 119 spi_2: spi@12d40000 { 376 120 status = "disabled"; 121 + }; 122 + 123 + gpio_keys { 124 + compatible = "gpio-keys"; 125 + 126 + menu { 127 + label = "SW-TACT2"; 128 + gpios = <&gpx1 4 1>; 129 + linux,code = <139>; 130 + gpio-key,wakeup; 131 + }; 132 + 133 + home { 134 + label = "SW-TACT3"; 135 + gpios = <&gpx1 5 1>; 136 + linux,code = <102>; 137 + gpio-key,wakeup; 138 + }; 139 + 140 + up { 141 + label = "SW-TACT4"; 142 + gpios = <&gpx1 6 1>; 143 + linux,code = <103>; 144 + gpio-key,wakeup; 145 + }; 146 + 147 + down { 148 + label = "SW-TACT5"; 149 + gpios = <&gpx1 7 1>; 150 + linux,code = <108>; 151 + gpio-key,wakeup; 152 + }; 153 + 154 + back { 155 + label = "SW-TACT6"; 156 + gpios = <&gpx2 0 1>; 157 + linux,code = <158>; 158 + gpio-key,wakeup; 159 + }; 160 + 161 + wakeup { 162 + label = "SW-TACT7"; 163 + gpios = <&gpx2 1 1>; 164 + linux,code = <143>; 165 + gpio-key,wakeup; 166 + }; 167 + }; 168 + 169 + hdmi { 170 + hpd-gpio = <&gpx3 7 2>; 171 + vdd_osc-supply = <&ldo10_reg>; 172 + vdd_pll-supply = <&ldo8_reg>; 173 + vdd-supply = <&ldo8_reg>; 174 + }; 175 + 176 + mmc_reg: voltage-regulator { 177 + compatible = "regulator-fixed"; 178 + regulator-name = "VDD_33ON_2.8V"; 179 + regulator-min-microvolt = <2800000>; 180 + regulator-max-microvolt = <2800000>; 181 + gpio = <&gpx1 1 1>; 182 + enable-active-high; 183 + }; 184 + 185 + reg_hdmi_en: fixedregulator@0 { 186 + compatible = "regulator-fixed"; 187 + regulator-name = "hdmi-en"; 377 188 }; 378 189 379 190 fixed-rate-clocks {
+783
arch/arm/boot/dts/exynos5250-pinctrl.dtsi
··· 1 + /* 2 + * Samsung's Exynos5250 SoC pin-mux and pin-config device tree source 3 + * 4 + * Copyright (c) 2012 Samsung Electronics Co., Ltd. 5 + * http://www.samsung.com 6 + * 7 + * Samsung's Exynos5250 SoC pin-mux and pin-config optiosn are listed as device 8 + * tree nodes are listed in this file. 9 + * 10 + * This program is free software; you can redistribute it and/or modify 11 + * it under the terms of the GNU General Public License version 2 as 12 + * published by the Free Software Foundation. 13 + */ 14 + 15 + / { 16 + pinctrl@11400000 { 17 + gpa0: gpa0 { 18 + gpio-controller; 19 + #gpio-cells = <2>; 20 + 21 + interrupt-controller; 22 + #interrupt-cells = <2>; 23 + }; 24 + 25 + gpa1: gpa1 { 26 + gpio-controller; 27 + #gpio-cells = <2>; 28 + 29 + interrupt-controller; 30 + #interrupt-cells = <2>; 31 + }; 32 + 33 + gpa2: gpa2 { 34 + gpio-controller; 35 + #gpio-cells = <2>; 36 + 37 + interrupt-controller; 38 + #interrupt-cells = <2>; 39 + }; 40 + 41 + gpb0: gpb0 { 42 + gpio-controller; 43 + #gpio-cells = <2>; 44 + 45 + interrupt-controller; 46 + #interrupt-cells = <2>; 47 + }; 48 + 49 + gpb1: gpb1 { 50 + gpio-controller; 51 + #gpio-cells = <2>; 52 + 53 + interrupt-controller; 54 + #interrupt-cells = <2>; 55 + }; 56 + 57 + gpb2: gpb2 { 58 + gpio-controller; 59 + #gpio-cells = <2>; 60 + 61 + interrupt-controller; 62 + #interrupt-cells = <2>; 63 + }; 64 + 65 + gpb3: gpb3 { 66 + gpio-controller; 67 + #gpio-cells = <2>; 68 + 69 + interrupt-controller; 70 + #interrupt-cells = <2>; 71 + }; 72 + 73 + gpc0: gpc0 { 74 + gpio-controller; 75 + #gpio-cells = <2>; 76 + 77 + interrupt-controller; 78 + #interrupt-cells = <2>; 79 + }; 80 + 81 + gpc1: gpc1 { 82 + gpio-controller; 83 + #gpio-cells = <2>; 84 + 85 + interrupt-controller; 86 + #interrupt-cells = <2>; 87 + }; 88 + 89 + gpc2: gpc2 { 90 + gpio-controller; 91 + #gpio-cells = <2>; 92 + 93 + interrupt-controller; 94 + #interrupt-cells = <2>; 95 + }; 96 + 97 + gpc3: gpc3 { 98 + gpio-controller; 99 + #gpio-cells = <2>; 100 + 101 + interrupt-controller; 102 + #interrupt-cells = <2>; 103 + }; 104 + 105 + gpd0: gpd0 { 106 + gpio-controller; 107 + #gpio-cells = <2>; 108 + 109 + interrupt-controller; 110 + #interrupt-cells = <2>; 111 + }; 112 + 113 + gpd1: gpd1 { 114 + gpio-controller; 115 + #gpio-cells = <2>; 116 + 117 + interrupt-controller; 118 + #interrupt-cells = <2>; 119 + }; 120 + 121 + gpy0: gpy0 { 122 + gpio-controller; 123 + #gpio-cells = <2>; 124 + }; 125 + 126 + gpy1: gpy1 { 127 + gpio-controller; 128 + #gpio-cells = <2>; 129 + }; 130 + 131 + gpy2: gpy2 { 132 + gpio-controller; 133 + #gpio-cells = <2>; 134 + }; 135 + 136 + gpy3: gpy3 { 137 + gpio-controller; 138 + #gpio-cells = <2>; 139 + }; 140 + 141 + gpy4: gpy4 { 142 + gpio-controller; 143 + #gpio-cells = <2>; 144 + }; 145 + 146 + gpy5: gpy5 { 147 + gpio-controller; 148 + #gpio-cells = <2>; 149 + }; 150 + 151 + gpy6: gpy6 { 152 + gpio-controller; 153 + #gpio-cells = <2>; 154 + }; 155 + 156 + gpc4: gpc4 { 157 + gpio-controller; 158 + #gpio-cells = <2>; 159 + 160 + interrupt-controller; 161 + #interrupt-cells = <2>; 162 + }; 163 + 164 + gpx0: gpx0 { 165 + gpio-controller; 166 + #gpio-cells = <2>; 167 + 168 + interrupt-controller; 169 + interrupt-parent = <&combiner>; 170 + #interrupt-cells = <2>; 171 + interrupts = <23 0>, <24 0>, <25 0>, <25 1>, 172 + <26 0>, <26 1>, <27 0>, <27 1>; 173 + }; 174 + 175 + gpx1: gpx1 { 176 + gpio-controller; 177 + #gpio-cells = <2>; 178 + 179 + interrupt-controller; 180 + interrupt-parent = <&combiner>; 181 + #interrupt-cells = <2>; 182 + interrupts = <28 0>, <28 1>, <29 0>, <29 1>, 183 + <30 0>, <30 1>, <31 0>, <31 1>; 184 + }; 185 + 186 + gpx2: gpx2 { 187 + gpio-controller; 188 + #gpio-cells = <2>; 189 + 190 + interrupt-controller; 191 + #interrupt-cells = <2>; 192 + }; 193 + 194 + gpx3: gpx3 { 195 + gpio-controller; 196 + #gpio-cells = <2>; 197 + 198 + interrupt-controller; 199 + #interrupt-cells = <2>; 200 + }; 201 + 202 + uart0_data: uart0-data { 203 + samsung,pins = "gpa0-0", "gpa0-1"; 204 + samsung,pin-function = <2>; 205 + samsung,pin-pud = <0>; 206 + samsung,pin-drv = <0>; 207 + }; 208 + 209 + uart0_fctl: uart0-fctl { 210 + samsung,pins = "gpa0-2", "gpa0-3"; 211 + samsung,pin-function = <2>; 212 + samsung,pin-pud = <0>; 213 + samaung,pin-drv = <0>; 214 + }; 215 + 216 + i2c2_bus: i2c2-bus { 217 + samsung,pins = "gpa0-6", "gpa0-7"; 218 + samsung,pin-function = <3>; 219 + samsung,pin-pud = <3>; 220 + samaung,pin-drv = <0>; 221 + }; 222 + 223 + i2c2_hs_bus: i2c2-hs-bus { 224 + samsung,pins = "gpa0-6", "gpa0-7"; 225 + samsung,pin-function = <4>; 226 + samsung,pin-pud = <3>; 227 + samaung,pin-drv = <0>; 228 + }; 229 + 230 + uart2_data: uart2-data { 231 + samsung,pins = "gpa1-0", "gpa1-1"; 232 + samsung,pin-function = <2>; 233 + samsung,pin-pud = <0>; 234 + samsung,pin-drv = <0>; 235 + }; 236 + 237 + uart2_fctl: uart2-fctl { 238 + samsung,pins = "gpa1-2", "gpa1-3"; 239 + samsung,pin-function = <2>; 240 + samsung,pin-pud = <0>; 241 + samaung,pin-drv = <0>; 242 + }; 243 + 244 + i2c3_bus: i2c3-bus { 245 + samsung,pins = "gpa1-2", "gpa1-3"; 246 + samsung,pin-function = <3>; 247 + samsung,pin-pud = <3>; 248 + samaung,pin-drv = <0>; 249 + }; 250 + 251 + i2c3_hs_bus: i2c3-hs-bus { 252 + samsung,pins = "gpa1-2", "gpa1-3"; 253 + samsung,pin-function = <4>; 254 + samsung,pin-pud = <3>; 255 + samaung,pin-drv = <0>; 256 + }; 257 + 258 + uart3_data: uart3-data { 259 + samsung,pins = "gpa1-4", "gpa1-4"; 260 + samsung,pin-function = <2>; 261 + samsung,pin-pud = <0>; 262 + samsung,pin-drv = <0>; 263 + }; 264 + 265 + spi0_bus: spi0-bus { 266 + samsung,pins = "gpa2-0", "gpa2-2", "gpa2-3"; 267 + samsung,pin-function = <2>; 268 + samsung,pin-pud = <3>; 269 + samsung,pin-drv = <0>; 270 + }; 271 + 272 + i2c4_bus: i2c4-bus { 273 + samsung,pins = "gpa2-0", "gpa2-1"; 274 + samsung,pin-function = <3>; 275 + samsung,pin-pud = <3>; 276 + samaung,pin-drv = <0>; 277 + }; 278 + 279 + i2c5_bus: i2c5-bus { 280 + samsung,pins = "gpa2-2", "gpa2-3"; 281 + samsung,pin-function = <3>; 282 + samsung,pin-pud = <3>; 283 + samaung,pin-drv = <0>; 284 + }; 285 + 286 + spi1_bus: spi1-bus { 287 + samsung,pins = "gpa2-4", "gpa2-6", "gpa2-7"; 288 + samsung,pin-function = <2>; 289 + samsung,pin-pud = <3>; 290 + samsung,pin-drv = <0>; 291 + }; 292 + 293 + i2s1_bus: i2s1-bus { 294 + samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3", 295 + "gpb0-4"; 296 + samsung,pin-function = <2>; 297 + samsung,pin-pud = <0>; 298 + samsung,pin-drv = <0>; 299 + }; 300 + 301 + pcm1_bus: pcm1-bus { 302 + samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3", 303 + "gpb0-4"; 304 + samsung,pin-function = <3>; 305 + samsung,pin-pud = <0>; 306 + samsung,pin-drv = <0>; 307 + }; 308 + 309 + ac97_bus: ac97-bus { 310 + samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3", 311 + "gpb0-4"; 312 + samsung,pin-function = <4>; 313 + samsung,pin-pud = <0>; 314 + samsung,pin-drv = <0>; 315 + }; 316 + 317 + i2s2_bus: i2s2-bus { 318 + samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3", 319 + "gpb1-4"; 320 + samsung,pin-function = <2>; 321 + samsung,pin-pud = <0>; 322 + samsung,pin-drv = <0>; 323 + }; 324 + 325 + pcm2_bus: pcm2-bus { 326 + samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3", 327 + "gpb1-4"; 328 + samsung,pin-function = <3>; 329 + samsung,pin-pud = <0>; 330 + samsung,pin-drv = <0>; 331 + }; 332 + 333 + spdif_bus: spdif-bus { 334 + samsung,pins = "gpb1-0", "gpb1-1"; 335 + samsung,pin-function = <4>; 336 + samsung,pin-pud = <0>; 337 + samsung,pin-drv = <0>; 338 + }; 339 + 340 + spi2_bus: spi2-bus { 341 + samsung,pins = "gpb1-1", "gpb1-3", "gpb1-4"; 342 + samsung,pin-function = <5>; 343 + samsung,pin-pud = <3>; 344 + samsung,pin-drv = <0>; 345 + }; 346 + 347 + i2c6_bus: i2c6-bus { 348 + samsung,pins = "gpb1-3", "gpb1-4"; 349 + samsung,pin-function = <4>; 350 + samsung,pin-pud = <3>; 351 + samsung,pin-drv = <0>; 352 + }; 353 + 354 + i2c7_bus: i2c7-bus { 355 + samsung,pins = "gpb2-2", "gpb2-3"; 356 + samsung,pin-function = <3>; 357 + samsung,pin-pud = <3>; 358 + samsung,pin-drv = <0>; 359 + }; 360 + 361 + i2c0_bus: i2c0-bus { 362 + samsung,pins = "gpb3-0", "gpb3-1"; 363 + samsung,pin-function = <2>; 364 + samsung,pin-pud = <3>; 365 + samsung,pin-drv = <0>; 366 + }; 367 + 368 + i2c1_bus: i2c1-bus { 369 + samsung,pins = "gpb3-2", "gpb3-3"; 370 + samsung,pin-function = <2>; 371 + samsung,pin-pud = <3>; 372 + samsung,pin-drv = <0>; 373 + }; 374 + 375 + i2c0_hs_bus: i2c0-hs-bus { 376 + samsung,pins = "gpb3-0", "gpb3-1"; 377 + samsung,pin-function = <4>; 378 + samsung,pin-pud = <3>; 379 + samaung,pin-drv = <0>; 380 + }; 381 + 382 + i2c1_hs_bus: i2c1-hs-bus { 383 + samsung,pins = "gpb3-2", "gpb3-3"; 384 + samsung,pin-function = <4>; 385 + samsung,pin-pud = <3>; 386 + samaung,pin-drv = <0>; 387 + }; 388 + 389 + sd0_clk: sd0-clk { 390 + samsung,pins = "gpc0-0"; 391 + samsung,pin-function = <2>; 392 + samsung,pin-pud = <0>; 393 + samsung,pin-drv = <3>; 394 + }; 395 + 396 + sd0_cmd: sd0-cmd { 397 + samsung,pins = "gpc0-1"; 398 + samsung,pin-function = <2>; 399 + samsung,pin-pud = <0>; 400 + samsung,pin-drv = <3>; 401 + }; 402 + 403 + sd0_cd: sd0-cd { 404 + samsung,pins = "gpc0-2"; 405 + samsung,pin-function = <2>; 406 + samsung,pin-pud = <3>; 407 + samsung,pin-drv = <3>; 408 + }; 409 + 410 + sd0_bus1: sd0-bus-width1 { 411 + samsung,pins = "gpc0-3"; 412 + samsung,pin-function = <2>; 413 + samsung,pin-pud = <3>; 414 + samsung,pin-drv = <3>; 415 + }; 416 + 417 + sd0_bus4: sd0-bus-width4 { 418 + samsung,pins = "gpc0-3", "gpc0-4", "gpc0-5", "gpc0-6"; 419 + samsung,pin-function = <2>; 420 + samsung,pin-pud = <3>; 421 + samsung,pin-drv = <3>; 422 + }; 423 + 424 + sd0_bus8: sd0-bus-width8 { 425 + samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3"; 426 + samsung,pin-function = <2>; 427 + samsung,pin-pud = <3>; 428 + samsung,pin-drv = <3>; 429 + }; 430 + 431 + sd1_clk: sd1-clk { 432 + samsung,pins = "gpc2-0"; 433 + samsung,pin-function = <2>; 434 + samsung,pin-pud = <0>; 435 + samsung,pin-drv = <3>; 436 + }; 437 + 438 + sd1_cmd: sd1-cmd { 439 + samsung,pins = "gpc2-1"; 440 + samsung,pin-function = <2>; 441 + samsung,pin-pud = <0>; 442 + samsung,pin-drv = <3>; 443 + }; 444 + 445 + sd1_cd: sd1-cd { 446 + samsung,pins = "gpc2-2"; 447 + samsung,pin-function = <2>; 448 + samsung,pin-pud = <3>; 449 + samsung,pin-drv = <3>; 450 + }; 451 + 452 + sd1_bus1: sd1-bus-width1 { 453 + samsung,pins = "gpc2-3"; 454 + samsung,pin-function = <2>; 455 + samsung,pin-pud = <3>; 456 + samsung,pin-drv = <3>; 457 + }; 458 + 459 + sd1_bus4: sd1-bus-width4 { 460 + samsung,pins = "gpc2-3", "gpc2-4", "gpc2-5", "gpc2-6"; 461 + samsung,pin-function = <2>; 462 + samsung,pin-pud = <3>; 463 + samsung,pin-drv = <3>; 464 + }; 465 + 466 + sd2_clk: sd2-clk { 467 + samsung,pins = "gpc3-0"; 468 + samsung,pin-function = <2>; 469 + samsung,pin-pud = <0>; 470 + samsung,pin-drv = <3>; 471 + }; 472 + 473 + sd2_cmd: sd2-cmd { 474 + samsung,pins = "gpc3-1"; 475 + samsung,pin-function = <2>; 476 + samsung,pin-pud = <0>; 477 + samsung,pin-drv = <3>; 478 + }; 479 + 480 + sd2_cd: sd2-cd { 481 + samsung,pins = "gpc3-2"; 482 + samsung,pin-function = <2>; 483 + samsung,pin-pud = <3>; 484 + samsung,pin-drv = <3>; 485 + }; 486 + 487 + sd2_bus1: sd2-bus-width1 { 488 + samsung,pins = "gpc3-3"; 489 + samsung,pin-function = <2>; 490 + samsung,pin-pud = <3>; 491 + samsung,pin-drv = <3>; 492 + }; 493 + 494 + sd2_bus4: sd2-bus-width4 { 495 + samsung,pins = "gpc3-3", "gpc3-4", "gpc3-5", "gpc3-6"; 496 + samsung,pin-function = <2>; 497 + samsung,pin-pud = <3>; 498 + samsung,pin-drv = <3>; 499 + }; 500 + 501 + sd2_bus8: sd2-bus-width8 { 502 + samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6"; 503 + samsung,pin-function = <3>; 504 + samsung,pin-pud = <3>; 505 + samsung,pin-drv = <3>; 506 + }; 507 + 508 + sd3_clk: sd3-clk { 509 + samsung,pins = "gpc4-0"; 510 + samsung,pin-function = <2>; 511 + samsung,pin-pud = <0>; 512 + samsung,pin-drv = <3>; 513 + }; 514 + 515 + sd3_cmd: sd3-cmd { 516 + samsung,pins = "gpc4-1"; 517 + samsung,pin-function = <2>; 518 + samsung,pin-pud = <0>; 519 + samsung,pin-drv = <3>; 520 + }; 521 + 522 + sd3_cd: sd3-cd { 523 + samsung,pins = "gpc4-2"; 524 + samsung,pin-function = <2>; 525 + samsung,pin-pud = <3>; 526 + samsung,pin-drv = <3>; 527 + }; 528 + 529 + sd3_bus1: sd3-bus-width1 { 530 + samsung,pins = "gpc4-3"; 531 + samsung,pin-function = <2>; 532 + samsung,pin-pud = <3>; 533 + samsung,pin-drv = <3>; 534 + }; 535 + 536 + sd3_bus4: sd3-bus-width4 { 537 + samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6"; 538 + samsung,pin-function = <2>; 539 + samsung,pin-pud = <3>; 540 + samsung,pin-drv = <3>; 541 + }; 542 + 543 + uart1_data: uart1-data { 544 + samsung,pins = "gpd0-0", "gpd0-1"; 545 + samsung,pin-function = <2>; 546 + samsung,pin-pud = <0>; 547 + samsung,pin-drv = <0>; 548 + }; 549 + 550 + uart1_fctl: uart1-fctl { 551 + samsung,pins = "gpd0-2", "gpd0-3"; 552 + samsung,pin-function = <2>; 553 + samsung,pin-pud = <0>; 554 + samaung,pin-drv = <0>; 555 + }; 556 + }; 557 + 558 + pinctrl@13400000 { 559 + gpe0: gpe0 { 560 + gpio-controller; 561 + #gpio-cells = <2>; 562 + 563 + interrupt-controller; 564 + #interrupt-cells = <2>; 565 + }; 566 + 567 + gpe1: gpe1 { 568 + gpio-controller; 569 + #gpio-cells = <2>; 570 + 571 + interrupt-controller; 572 + #interrupt-cells = <2>; 573 + }; 574 + 575 + gpf0: gpf0 { 576 + gpio-controller; 577 + #gpio-cells = <2>; 578 + 579 + interrupt-controller; 580 + #interrupt-cells = <2>; 581 + }; 582 + 583 + gpf1: gpf1 { 584 + gpio-controller; 585 + #gpio-cells = <2>; 586 + 587 + interrupt-controller; 588 + #interrupt-cells = <2>; 589 + }; 590 + 591 + gpg0: gpg0 { 592 + gpio-controller; 593 + #gpio-cells = <2>; 594 + 595 + interrupt-controller; 596 + #interrupt-cells = <2>; 597 + }; 598 + 599 + gpg1: gpg1 { 600 + gpio-controller; 601 + #gpio-cells = <2>; 602 + 603 + interrupt-controller; 604 + #interrupt-cells = <2>; 605 + }; 606 + 607 + gpg2: gpg2 { 608 + gpio-controller; 609 + #gpio-cells = <2>; 610 + 611 + interrupt-controller; 612 + #interrupt-cells = <2>; 613 + }; 614 + 615 + gph0: gph0 { 616 + gpio-controller; 617 + #gpio-cells = <2>; 618 + 619 + interrupt-controller; 620 + #interrupt-cells = <2>; 621 + }; 622 + 623 + gph1: gph1 { 624 + gpio-controller; 625 + #gpio-cells = <2>; 626 + 627 + interrupt-controller; 628 + #interrupt-cells = <2>; 629 + }; 630 + 631 + cam_gpio_a: cam-gpio-a { 632 + samsung,pins = "gpe0-0", "gpe0-1", "gpe0-2", "gpe0-3", 633 + "gpe0-4", "gpe0-5", "gpe0-6", "gpe0-7", 634 + "gpe1-0", "gpe1-1"; 635 + samsung,pin-function = <2>; 636 + samsung,pin-pud = <0>; 637 + samsung,pin-drv = <0>; 638 + }; 639 + 640 + cam_gpio_b: cam-gpio-b { 641 + samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3", 642 + "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3"; 643 + samsung,pin-function = <3>; 644 + samsung,pin-pud = <0>; 645 + samaung,pin-drv = <0>; 646 + }; 647 + 648 + cam_i2c2_bus: cam-i2c2-bus { 649 + samsung,pins = "gpe0-6", "gpe1-0"; 650 + samsung,pin-function = <4>; 651 + samsung,pin-pud = <3>; 652 + samaung,pin-drv = <0>; 653 + }; 654 + 655 + cam_spi1_bus: cam-spi1-bus { 656 + samsung,pins = "gpe0-4", "gpe0-5", "gpf0-2", "gpf0-3"; 657 + samsung,pin-function = <4>; 658 + samsung,pin-pud = <0>; 659 + samaung,pin-drv = <0>; 660 + }; 661 + 662 + cam_i2c1_bus: cam-i2c1-bus { 663 + samsung,pins = "gpf0-2", "gpf0-3"; 664 + samsung,pin-function = <2>; 665 + samsung,pin-pud = <3>; 666 + samaung,pin-drv = <0>; 667 + }; 668 + 669 + cam_i2c0_bus: cam-i2c0-bus { 670 + samsung,pins = "gpf0-0", "gpf0-1"; 671 + samsung,pin-function = <2>; 672 + samsung,pin-pud = <3>; 673 + samaung,pin-drv = <0>; 674 + }; 675 + 676 + cam_spi0_bus: cam-spi0-bus { 677 + samsung,pins = "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3"; 678 + samsung,pin-function = <2>; 679 + samsung,pin-pud = <0>; 680 + samaung,pin-drv = <0>; 681 + }; 682 + 683 + cam_bayrgb_bus: cam-bayrgb-bus { 684 + samsung,pins = "gpg0-0", "gpg0-1", "gpg0-2", "gpg0-3", 685 + "gpg0-4", "gpg0-5", "gpg0-6", "gpg0-7", 686 + "gpg1-0", "gpg1-1", "gpg1-2", "gpg1-3", 687 + "gpg1-4", "gpg1-5", "gpg1-6", "gpg1-7", 688 + "gpg2-0", "gpg2-1"; 689 + samsung,pin-function = <2>; 690 + samsung,pin-pud = <0>; 691 + samaung,pin-drv = <0>; 692 + }; 693 + 694 + cam_port_a: cam-port-a { 695 + samsung,pins = "gph0-0", "gph0-1", "gph0-2", "gph0-3", 696 + "gph1-0", "gph1-1", "gph1-2", "gph1-3", 697 + "gph1-4", "gph1-5", "gph1-6", "gph1-7"; 698 + samsung,pin-function = <2>; 699 + samsung,pin-pud = <0>; 700 + samaung,pin-drv = <0>; 701 + }; 702 + }; 703 + 704 + pinctrl@10d10000 { 705 + gpv0: gpv0 { 706 + gpio-controller; 707 + #gpio-cells = <2>; 708 + 709 + interrupt-controller; 710 + #interrupt-cells = <2>; 711 + }; 712 + 713 + gpv1: gpv1 { 714 + gpio-controller; 715 + #gpio-cells = <2>; 716 + 717 + interrupt-controller; 718 + #interrupt-cells = <2>; 719 + }; 720 + 721 + gpv2: gpv2 { 722 + gpio-controller; 723 + #gpio-cells = <2>; 724 + 725 + interrupt-controller; 726 + #interrupt-cells = <2>; 727 + }; 728 + 729 + gpv3: gpv3 { 730 + gpio-controller; 731 + #gpio-cells = <2>; 732 + 733 + interrupt-controller; 734 + #interrupt-cells = <2>; 735 + }; 736 + 737 + gpv4: gpv4 { 738 + gpio-controller; 739 + #gpio-cells = <2>; 740 + 741 + interrupt-controller; 742 + #interrupt-cells = <2>; 743 + }; 744 + 745 + c2c_rxd: c2c-rxd { 746 + samsung,pins = "gpv0-0", "gpv0-1", "gpv0-2", "gpv0-3", 747 + "gpv0-4", "gpv0-5", "gpv0-6", "gpv0-7", 748 + "gpv1-0", "gpv1-1", "gpv1-2", "gpv1-3", 749 + "gpv1-4", "gpv1-5", "gpv1-6", "gpv1-7"; 750 + samsung,pin-function = <2>; 751 + samsung,pin-pud = <0>; 752 + samaung,pin-drv = <0>; 753 + }; 754 + 755 + c2c_txd: c2c-txd { 756 + samsung,pins = "gpv2-0", "gpv2-1", "gpv2-2", "gpv2-3", 757 + "gpv2-4", "gpv2-5", "gpv2-6", "gpv2-7", 758 + "gpv3-0", "gpv3-1", "gpv3-2", "gpv3-3", 759 + "gpv3-4", "gpv3-5", "gpv3-6", "gpv3-7"; 760 + samsung,pin-function = <2>; 761 + samsung,pin-pud = <0>; 762 + samaung,pin-drv = <0>; 763 + }; 764 + }; 765 + 766 + pinctrl@03680000 { 767 + gpz: gpz { 768 + gpio-controller; 769 + #gpio-cells = <2>; 770 + 771 + interrupt-controller; 772 + #interrupt-cells = <2>; 773 + }; 774 + 775 + i2s0_bus: i2s0-bus { 776 + samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3", 777 + "gpz-4", "gpz-5", "gpz-6"; 778 + samsung,pin-function = <2>; 779 + samsung,pin-pud = <0>; 780 + samsung,pin-drv = <0>; 781 + }; 782 + }; 783 + };
+23 -26
arch/arm/boot/dts/exynos5250-smdk5250.dts
··· 30 30 i2c@12C60000 { 31 31 samsung,i2c-sda-delay = <100>; 32 32 samsung,i2c-max-bus-freq = <20000>; 33 - gpios = <&gpb3 0 2 3 0>, 34 - <&gpb3 1 2 3 0>; 35 33 36 34 eeprom@50 { 37 35 compatible = "samsung,s524ad0xd1"; ··· 40 42 i2c@12C70000 { 41 43 samsung,i2c-sda-delay = <100>; 42 44 samsung,i2c-max-bus-freq = <20000>; 43 - gpios = <&gpb3 2 2 3 0>, 44 - <&gpb3 3 2 3 0>; 45 45 46 46 eeprom@51 { 47 47 compatible = "samsung,s524ad0xd1"; ··· 70 74 i2c@12C80000 { 71 75 samsung,i2c-sda-delay = <100>; 72 76 samsung,i2c-max-bus-freq = <66000>; 73 - gpios = <&gpa0 6 3 3 0>, 74 - <&gpa0 7 3 3 0>; 75 77 76 78 hdmiddc@50 { 77 79 compatible = "samsung,exynos5-hdmiddc"; ··· 116 122 samsung,dw-mshc-ciu-div = <3>; 117 123 samsung,dw-mshc-sdr-timing = <2 3>; 118 124 samsung,dw-mshc-ddr-timing = <1 2>; 125 + pinctrl-names = "default"; 126 + pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>; 119 127 120 128 slot@0 { 121 129 reg = <0>; 122 130 bus-width = <8>; 123 - gpios = <&gpc0 0 2 0 3>, <&gpc0 1 2 0 3>, 124 - <&gpc1 0 2 3 3>, <&gpc1 1 2 3 3>, 125 - <&gpc1 2 2 3 3>, <&gpc1 3 2 3 3>, 126 - <&gpc0 3 2 3 3>, <&gpc0 4 2 3 3>, 127 - <&gpc0 5 2 3 3>, <&gpc0 6 2 3 3>; 128 131 }; 129 132 }; 130 133 ··· 137 146 samsung,dw-mshc-ciu-div = <3>; 138 147 samsung,dw-mshc-sdr-timing = <2 3>; 139 148 samsung,dw-mshc-ddr-timing = <1 2>; 149 + pinctrl-names = "default"; 150 + pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>; 140 151 141 152 slot@0 { 142 153 reg = <0>; 143 154 bus-width = <4>; 144 - samsung,cd-pinmux-gpio = <&gpc3 2 2 3 3>; 145 155 disable-wp; 146 - gpios = <&gpc3 0 2 0 3>, <&gpc3 1 2 0 3>, 147 - <&gpc3 3 2 3 3>, <&gpc3 4 2 3 3>, 148 - <&gpc3 5 2 3 3>, <&gpc3 6 2 3 3>, 149 - <&gpc4 3 3 3 3>, <&gpc4 3 3 3 3>, 150 - <&gpc4 5 3 3 3>, <&gpc4 6 3 3 3>; 151 156 }; 152 157 }; 153 158 ··· 156 169 }; 157 170 158 171 spi_1: spi@12d30000 { 159 - gpios = <&gpa2 4 2 3 0>, 160 - <&gpa2 6 2 3 0>, 161 - <&gpa2 7 2 3 0>; 162 - 163 172 w25q80bw@0 { 164 173 #address-cells = <1>; 165 174 #size-cells = <1>; ··· 164 181 spi-max-frequency = <1000000>; 165 182 166 183 controller-data { 167 - cs-gpio = <&gpa2 5 1 0 3>; 184 + cs-gpio = <&gpa2 5 0>; 168 185 samsung,spi-feedback-delay = <0>; 169 186 }; 170 187 ··· 186 203 }; 187 204 188 205 hdmi { 189 - hpd-gpio = <&gpx3 7 0xf 1 3>; 206 + hpd-gpio = <&gpx3 7 0>; 190 207 }; 191 208 192 209 codec@11000000 { ··· 195 212 }; 196 213 197 214 i2s0: i2s@03830000 { 198 - gpios = <&gpz 0 2 0 0>, <&gpz 1 2 0 0>, <&gpz 2 2 0 0>, 199 - <&gpz 3 2 0 0>, <&gpz 4 2 0 0>, <&gpz 5 2 0 0>, 200 - <&gpz 6 2 0 0>; 215 + status = "okay"; 201 216 }; 202 217 203 218 i2s1: i2s@12D60000 { ··· 224 243 samsung,color-depth = <1>; 225 244 samsung,link-rate = <0x0a>; 226 245 samsung,lane-count = <4>; 246 + }; 247 + 248 + display-timings { 249 + native-mode = <&timing0>; 250 + timing0: timing@0 { 251 + /* 1280x800 */ 252 + clock-frequency = <50000>; 253 + hactive = <1280>; 254 + vactive = <800>; 255 + hfront-porch = <4>; 256 + hback-porch = <4>; 257 + hsync-len = <4>; 258 + vback-porch = <4>; 259 + vfront-porch = <4>; 260 + vsync-len = <4>; 261 + }; 227 262 }; 228 263 229 264 fixed-rate-clocks {
+145 -4
arch/arm/boot/dts/exynos5250-snow.dts
··· 16 16 model = "Google Snow"; 17 17 compatible = "google,snow", "samsung,exynos5250"; 18 18 19 + aliases { 20 + i2c104 = &i2c_104; 21 + }; 22 + 23 + pinctrl@11400000 { 24 + sd3_clk: sd3-clk { 25 + samsung,pin-drv = <0>; 26 + }; 27 + 28 + sd3_cmd: sd3-cmd { 29 + samsung,pin-pud = <3>; 30 + samsung,pin-drv = <0>; 31 + }; 32 + 33 + sd3_bus4: sd3-bus-width4 { 34 + samsung,pin-drv = <0>; 35 + }; 36 + }; 37 + 19 38 gpio-keys { 20 39 compatible = "gpio-keys"; 21 40 22 41 lid-switch { 23 42 label = "Lid"; 24 - gpios = <&gpx3 5 0 0x10000 0>; 43 + gpios = <&gpx3 5 1>; 25 44 linux,input-type = <5>; /* EV_SW */ 26 45 linux,code = <0>; /* SW_LID */ 27 46 debounce-interval = <1>; 28 47 gpio-key,wakeup; 48 + }; 49 + }; 50 + 51 + i2c-arbitrator { 52 + compatible = "i2c-arb-gpio-challenge"; 53 + #address-cells = <1>; 54 + #size-cells = <0>; 55 + 56 + i2c-parent = <&{/i2c@12CA0000}>; 57 + 58 + our-claim-gpio = <&gpf0 3 1>; 59 + their-claim-gpios = <&gpe0 4 1>; 60 + slew-delay-us = <10>; 61 + wait-retry-us = <3000>; 62 + wait-free-us = <50000>; 63 + 64 + /* Use ID 104 as a hint that we're on physical bus 4 */ 65 + i2c_104: i2c@0 { 66 + reg = <0>; 67 + #address-cells = <1>; 68 + #size-cells = <0>; 69 + 70 + battery: sbs-battery@b { 71 + compatible = "sbs,sbs-battery"; 72 + reg = <0xb>; 73 + sbs,poll-retry-count = <1>; 74 + }; 75 + 76 + ec: embedded-controller { 77 + compatible = "google,cros-ec-i2c"; 78 + reg = <0x1e>; 79 + interrupts = <6 0>; 80 + interrupt-parent = <&gpx1>; 81 + wakeup-source; 82 + 83 + keyboard-controller { 84 + compatible = "google,cros-ec-keyb"; 85 + keypad,num-rows = <8>; 86 + keypad,num-columns = <13>; 87 + google,needs-ghost-filter; 88 + linux,keymap = <0x0001003a /* CAPSLK */ 89 + 0x0002003b /* F1 */ 90 + 0x00030030 /* B */ 91 + 0x00040044 /* F10 */ 92 + 0x00060031 /* N */ 93 + 0x0008000d /* = */ 94 + 0x000a0064 /* R_ALT */ 95 + 96 + 0x01010001 /* ESC */ 97 + 0x0102003e /* F4 */ 98 + 0x01030022 /* G */ 99 + 0x01040041 /* F7 */ 100 + 0x01060023 /* H */ 101 + 0x01080028 /* ' */ 102 + 0x01090043 /* F9 */ 103 + 0x010b000e /* BKSPACE */ 104 + 105 + 0x0200001d /* L_CTRL */ 106 + 0x0201000f /* TAB */ 107 + 0x0202003d /* F3 */ 108 + 0x02030014 /* T */ 109 + 0x02040040 /* F6 */ 110 + 0x0205001b /* ] */ 111 + 0x02060015 /* Y */ 112 + 0x02070056 /* 102ND */ 113 + 0x0208001a /* [ */ 114 + 0x02090042 /* F8 */ 115 + 116 + 0x03010029 /* GRAVE */ 117 + 0x0302003c /* F2 */ 118 + 0x03030006 /* 5 */ 119 + 0x0304003f /* F5 */ 120 + 0x03060007 /* 6 */ 121 + 0x0308000c /* - */ 122 + 0x030b002b /* \ */ 123 + 124 + 0x04000061 /* R_CTRL */ 125 + 0x0401001e /* A */ 126 + 0x04020020 /* D */ 127 + 0x04030021 /* F */ 128 + 0x0404001f /* S */ 129 + 0x04050025 /* K */ 130 + 0x04060024 /* J */ 131 + 0x04080027 /* ; */ 132 + 0x04090026 /* L */ 133 + 0x040b001c /* ENTER */ 134 + 135 + 0x0501002c /* Z */ 136 + 0x0502002e /* C */ 137 + 0x0503002f /* V */ 138 + 0x0504002d /* X */ 139 + 0x05050033 /* , */ 140 + 0x05060032 /* M */ 141 + 0x0507002a /* L_SHIFT */ 142 + 0x05080035 /* / */ 143 + 0x05090034 /* . */ 144 + 0x050B0039 /* SPACE */ 145 + 146 + 0x06010002 /* 1 */ 147 + 0x06020004 /* 3 */ 148 + 0x06030005 /* 4 */ 149 + 0x06040003 /* 2 */ 150 + 0x06050009 /* 8 */ 151 + 0x06060008 /* 7 */ 152 + 0x0608000b /* 0 */ 153 + 0x0609000a /* 9 */ 154 + 0x060a0038 /* L_ALT */ 155 + 0x060b006c /* DOWN */ 156 + 0x060c006a /* RIGHT */ 157 + 158 + 0x07010010 /* Q */ 159 + 0x07020012 /* E */ 160 + 0x07030013 /* R */ 161 + 0x07040011 /* W */ 162 + 0x07050017 /* I */ 163 + 0x07060016 /* U */ 164 + 0x07070036 /* R_SHIFT */ 165 + 0x07080019 /* P */ 166 + 0x07090018 /* O */ 167 + 0x070b0067 /* UP */ 168 + 0x070c0069>; /* LEFT */ 169 + }; 170 + }; 29 171 }; 30 172 }; 31 173 ··· 177 35 */ 178 36 dwmmc3@12230000 { 179 37 slot@0 { 180 - gpios = <&gpc4 0 2 0 0>, <&gpc4 1 2 3 0>, 181 - <&gpc4 3 2 3 0>, <&gpc4 4 2 3 0>, 182 - <&gpc4 5 2 3 0>, <&gpc4 6 2 3 0>; 38 + pinctrl-names = "default"; 39 + pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4>; 183 40 }; 184 41 }; 185 42
+98 -250
arch/arm/boot/dts/exynos5250.dtsi
··· 18 18 */ 19 19 20 20 /include/ "skeleton.dtsi" 21 + /include/ "exynos5250-pinctrl.dtsi" 21 22 22 23 / { 23 24 compatible = "samsung,exynos5250"; ··· 45 44 i2c6 = &i2c_6; 46 45 i2c7 = &i2c_7; 47 46 i2c8 = &i2c_8; 47 + pinctrl0 = &pinctrl_0; 48 + pinctrl1 = &pinctrl_1; 49 + pinctrl2 = &pinctrl_2; 50 + pinctrl3 = &pinctrl_3; 51 + }; 52 + 53 + chipid@10000000 { 54 + compatible = "samsung,exynos4210-chipid"; 55 + reg = <0x10000000 0x100>; 48 56 }; 49 57 50 58 pd_gsc: gsc-power-domain@0x10044000 { ··· 73 63 }; 74 64 75 65 gic:interrupt-controller@10481000 { 76 - compatible = "arm,cortex-a9-gic"; 66 + compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic"; 77 67 #interrupt-cells = <3>; 78 68 interrupt-controller; 79 - reg = <0x10481000 0x1000>, <0x10482000 0x2000>; 69 + reg = <0x10481000 0x1000>, 70 + <0x10482000 0x1000>, 71 + <0x10484000 0x2000>, 72 + <0x10486000 0x2000>; 73 + interrupts = <1 9 0xf04>; 74 + }; 75 + 76 + timer { 77 + compatible = "arm,armv7-timer"; 78 + interrupts = <1 13 0xf08>, 79 + <1 14 0xf08>, 80 + <1 11 0xf08>, 81 + <1 10 0xf08>; 80 82 }; 81 83 82 84 combiner:interrupt-controller@10440000 { ··· 135 113 compatible = "arm,cortex-a15-pmu"; 136 114 interrupt-parent = <&combiner>; 137 115 interrupts = <1 2>, <22 4>; 116 + }; 117 + 118 + pinctrl_0: pinctrl@11400000 { 119 + compatible = "samsung,exynos5250-pinctrl"; 120 + reg = <0x11400000 0x1000>; 121 + interrupts = <0 46 0>; 122 + 123 + wakup_eint: wakeup-interrupt-controller { 124 + compatible = "samsung,exynos4210-wakeup-eint"; 125 + interrupt-parent = <&gic>; 126 + interrupts = <0 32 0>; 127 + }; 128 + }; 129 + 130 + pinctrl_1: pinctrl@13400000 { 131 + compatible = "samsung,exynos5250-pinctrl"; 132 + reg = <0x13400000 0x1000>; 133 + interrupts = <0 45 0>; 134 + }; 135 + 136 + pinctrl_2: pinctrl@10d10000 { 137 + compatible = "samsung,exynos5250-pinctrl"; 138 + reg = <0x10d10000 0x1000>; 139 + interrupts = <0 50 0>; 140 + }; 141 + 142 + pinctrl_3: pinctrl@03680000 { 143 + compatible = "samsung,exynos5250-pinctrl"; 144 + reg = <0x0368000 0x1000>; 145 + interrupts = <0 47 0>; 138 146 }; 139 147 140 148 watchdog { ··· 252 200 #size-cells = <0>; 253 201 clocks = <&clock 294>; 254 202 clock-names = "i2c"; 203 + pinctrl-names = "default"; 204 + pinctrl-0 = <&i2c0_bus>; 255 205 }; 256 206 257 207 i2c_1: i2c@12C70000 { ··· 264 210 #size-cells = <0>; 265 211 clocks = <&clock 295>; 266 212 clock-names = "i2c"; 213 + pinctrl-names = "default"; 214 + pinctrl-0 = <&i2c1_bus>; 267 215 }; 268 216 269 217 i2c_2: i2c@12C80000 { ··· 276 220 #size-cells = <0>; 277 221 clocks = <&clock 296>; 278 222 clock-names = "i2c"; 223 + pinctrl-names = "default"; 224 + pinctrl-0 = <&i2c2_bus>; 279 225 }; 280 226 281 227 i2c_3: i2c@12C90000 { ··· 288 230 #size-cells = <0>; 289 231 clocks = <&clock 297>; 290 232 clock-names = "i2c"; 233 + pinctrl-names = "default"; 234 + pinctrl-0 = <&i2c3_bus>; 291 235 }; 292 236 293 237 i2c_4: i2c@12CA0000 { ··· 300 240 #size-cells = <0>; 301 241 clocks = <&clock 298>; 302 242 clock-names = "i2c"; 243 + pinctrl-names = "default"; 244 + pinctrl-0 = <&i2c4_bus>; 303 245 }; 304 246 305 247 i2c_5: i2c@12CB0000 { ··· 312 250 #size-cells = <0>; 313 251 clocks = <&clock 299>; 314 252 clock-names = "i2c"; 253 + pinctrl-names = "default"; 254 + pinctrl-0 = <&i2c5_bus>; 315 255 }; 316 256 317 257 i2c_6: i2c@12CC0000 { ··· 324 260 #size-cells = <0>; 325 261 clocks = <&clock 300>; 326 262 clock-names = "i2c"; 263 + pinctrl-names = "default"; 264 + pinctrl-0 = <&i2c6_bus>; 327 265 }; 328 266 329 267 i2c_7: i2c@12CD0000 { ··· 336 270 #size-cells = <0>; 337 271 clocks = <&clock 301>; 338 272 clock-names = "i2c"; 273 + pinctrl-names = "default"; 274 + pinctrl-0 = <&i2c7_bus>; 339 275 }; 340 276 341 277 i2c_8: i2c@12CE0000 { ··· 370 302 #size-cells = <0>; 371 303 clocks = <&clock 304>, <&clock 154>; 372 304 clock-names = "spi", "spi_busclk0"; 305 + pinctrl-names = "default"; 306 + pinctrl-0 = <&spi0_bus>; 373 307 }; 374 308 375 309 spi_1: spi@12d30000 { ··· 385 315 #size-cells = <0>; 386 316 clocks = <&clock 305>, <&clock 155>; 387 317 clock-names = "spi", "spi_busclk0"; 318 + pinctrl-names = "default"; 319 + pinctrl-0 = <&spi1_bus>; 388 320 }; 389 321 390 322 spi_2: spi@12d40000 { ··· 400 328 #size-cells = <0>; 401 329 clocks = <&clock 306>, <&clock 156>; 402 330 clock-names = "spi", "spi_busclk0"; 331 + pinctrl-names = "default"; 332 + pinctrl-0 = <&spi2_bus>; 403 333 }; 404 334 405 335 dwmmc_0: dwmmc0@12200000 { ··· 455 381 samsung,supports-rstclr; 456 382 samsung,supports-secdai; 457 383 samsung,idma-addr = <0x03000000>; 384 + pinctrl-names = "default"; 385 + pinctrl-0 = <&i2s0_bus>; 458 386 }; 459 387 460 388 i2s1: i2s@12D60000 { ··· 465 389 dmas = <&pdma1 12 466 390 &pdma1 11>; 467 391 dma-names = "tx", "rx"; 392 + pinctrl-names = "default"; 393 + pinctrl-0 = <&i2s1_bus>; 468 394 }; 469 395 470 396 i2s2: i2s@12D70000 { ··· 475 397 dmas = <&pdma0 12 476 398 &pdma0 11>; 477 399 dma-names = "tx", "rx"; 400 + pinctrl-names = "default"; 401 + pinctrl-0 = <&i2s2_bus>; 478 402 }; 479 403 480 404 usb@12110000 { 481 405 compatible = "samsung,exynos4210-ehci"; 482 406 reg = <0x12110000 0x100>; 483 407 interrupts = <0 71 0>; 408 + 409 + clocks = <&clock 285>; 410 + clock-names = "usbhost"; 484 411 }; 485 412 486 413 usb@12120000 { 487 414 compatible = "samsung,exynos4210-ohci"; 488 415 reg = <0x12120000 0x100>; 489 416 interrupts = <0 71 0>; 417 + 418 + clocks = <&clock 285>; 419 + clock-names = "usbhost"; 490 420 }; 491 421 492 422 amba { ··· 548 462 #dma-requests = <1>; 549 463 }; 550 464 }; 551 - 552 - gpio-controllers { 553 - #address-cells = <1>; 554 - #size-cells = <1>; 555 - gpio-controller; 556 - ranges; 557 - 558 - gpa0: gpio-controller@11400000 { 559 - compatible = "samsung,exynos4-gpio"; 560 - reg = <0x11400000 0x20>; 561 - #gpio-cells = <4>; 562 - }; 563 - 564 - gpa1: gpio-controller@11400020 { 565 - compatible = "samsung,exynos4-gpio"; 566 - reg = <0x11400020 0x20>; 567 - #gpio-cells = <4>; 568 - }; 569 - 570 - gpa2: gpio-controller@11400040 { 571 - compatible = "samsung,exynos4-gpio"; 572 - reg = <0x11400040 0x20>; 573 - #gpio-cells = <4>; 574 - }; 575 - 576 - gpb0: gpio-controller@11400060 { 577 - compatible = "samsung,exynos4-gpio"; 578 - reg = <0x11400060 0x20>; 579 - #gpio-cells = <4>; 580 - }; 581 - 582 - gpb1: gpio-controller@11400080 { 583 - compatible = "samsung,exynos4-gpio"; 584 - reg = <0x11400080 0x20>; 585 - #gpio-cells = <4>; 586 - }; 587 - 588 - gpb2: gpio-controller@114000A0 { 589 - compatible = "samsung,exynos4-gpio"; 590 - reg = <0x114000A0 0x20>; 591 - #gpio-cells = <4>; 592 - }; 593 - 594 - gpb3: gpio-controller@114000C0 { 595 - compatible = "samsung,exynos4-gpio"; 596 - reg = <0x114000C0 0x20>; 597 - #gpio-cells = <4>; 598 - }; 599 - 600 - gpc0: gpio-controller@114000E0 { 601 - compatible = "samsung,exynos4-gpio"; 602 - reg = <0x114000E0 0x20>; 603 - #gpio-cells = <4>; 604 - }; 605 - 606 - gpc1: gpio-controller@11400100 { 607 - compatible = "samsung,exynos4-gpio"; 608 - reg = <0x11400100 0x20>; 609 - #gpio-cells = <4>; 610 - }; 611 - 612 - gpc2: gpio-controller@11400120 { 613 - compatible = "samsung,exynos4-gpio"; 614 - reg = <0x11400120 0x20>; 615 - #gpio-cells = <4>; 616 - }; 617 - 618 - gpc3: gpio-controller@11400140 { 619 - compatible = "samsung,exynos4-gpio"; 620 - reg = <0x11400140 0x20>; 621 - #gpio-cells = <4>; 622 - }; 623 - 624 - gpc4: gpio-controller@114002E0 { 625 - compatible = "samsung,exynos4-gpio"; 626 - reg = <0x114002E0 0x20>; 627 - #gpio-cells = <4>; 628 - }; 629 - 630 - gpd0: gpio-controller@11400160 { 631 - compatible = "samsung,exynos4-gpio"; 632 - reg = <0x11400160 0x20>; 633 - #gpio-cells = <4>; 634 - }; 635 - 636 - gpd1: gpio-controller@11400180 { 637 - compatible = "samsung,exynos4-gpio"; 638 - reg = <0x11400180 0x20>; 639 - #gpio-cells = <4>; 640 - }; 641 - 642 - gpy0: gpio-controller@114001A0 { 643 - compatible = "samsung,exynos4-gpio"; 644 - reg = <0x114001A0 0x20>; 645 - #gpio-cells = <4>; 646 - }; 647 - 648 - gpy1: gpio-controller@114001C0 { 649 - compatible = "samsung,exynos4-gpio"; 650 - reg = <0x114001C0 0x20>; 651 - #gpio-cells = <4>; 652 - }; 653 - 654 - gpy2: gpio-controller@114001E0 { 655 - compatible = "samsung,exynos4-gpio"; 656 - reg = <0x114001E0 0x20>; 657 - #gpio-cells = <4>; 658 - }; 659 - 660 - gpy3: gpio-controller@11400200 { 661 - compatible = "samsung,exynos4-gpio"; 662 - reg = <0x11400200 0x20>; 663 - #gpio-cells = <4>; 664 - }; 665 - 666 - gpy4: gpio-controller@11400220 { 667 - compatible = "samsung,exynos4-gpio"; 668 - reg = <0x11400220 0x20>; 669 - #gpio-cells = <4>; 670 - }; 671 - 672 - gpy5: gpio-controller@11400240 { 673 - compatible = "samsung,exynos4-gpio"; 674 - reg = <0x11400240 0x20>; 675 - #gpio-cells = <4>; 676 - }; 677 - 678 - gpy6: gpio-controller@11400260 { 679 - compatible = "samsung,exynos4-gpio"; 680 - reg = <0x11400260 0x20>; 681 - #gpio-cells = <4>; 682 - }; 683 - 684 - gpx0: gpio-controller@11400C00 { 685 - compatible = "samsung,exynos4-gpio"; 686 - reg = <0x11400C00 0x20>; 687 - #gpio-cells = <4>; 688 - }; 689 - 690 - gpx1: gpio-controller@11400C20 { 691 - compatible = "samsung,exynos4-gpio"; 692 - reg = <0x11400C20 0x20>; 693 - #gpio-cells = <4>; 694 - }; 695 - 696 - gpx2: gpio-controller@11400C40 { 697 - compatible = "samsung,exynos4-gpio"; 698 - reg = <0x11400C40 0x20>; 699 - #gpio-cells = <4>; 700 - }; 701 - 702 - gpx3: gpio-controller@11400C60 { 703 - compatible = "samsung,exynos4-gpio"; 704 - reg = <0x11400C60 0x20>; 705 - #gpio-cells = <4>; 706 - }; 707 - 708 - gpe0: gpio-controller@13400000 { 709 - compatible = "samsung,exynos4-gpio"; 710 - reg = <0x13400000 0x20>; 711 - #gpio-cells = <4>; 712 - }; 713 - 714 - gpe1: gpio-controller@13400020 { 715 - compatible = "samsung,exynos4-gpio"; 716 - reg = <0x13400020 0x20>; 717 - #gpio-cells = <4>; 718 - }; 719 - 720 - gpf0: gpio-controller@13400040 { 721 - compatible = "samsung,exynos4-gpio"; 722 - reg = <0x13400040 0x20>; 723 - #gpio-cells = <4>; 724 - }; 725 - 726 - gpf1: gpio-controller@13400060 { 727 - compatible = "samsung,exynos4-gpio"; 728 - reg = <0x13400060 0x20>; 729 - #gpio-cells = <4>; 730 - }; 731 - 732 - gpg0: gpio-controller@13400080 { 733 - compatible = "samsung,exynos4-gpio"; 734 - reg = <0x13400080 0x20>; 735 - #gpio-cells = <4>; 736 - }; 737 - 738 - gpg1: gpio-controller@134000A0 { 739 - compatible = "samsung,exynos4-gpio"; 740 - reg = <0x134000A0 0x20>; 741 - #gpio-cells = <4>; 742 - }; 743 - 744 - gpg2: gpio-controller@134000C0 { 745 - compatible = "samsung,exynos4-gpio"; 746 - reg = <0x134000C0 0x20>; 747 - #gpio-cells = <4>; 748 - }; 749 - 750 - gph0: gpio-controller@134000E0 { 751 - compatible = "samsung,exynos4-gpio"; 752 - reg = <0x134000E0 0x20>; 753 - #gpio-cells = <4>; 754 - }; 755 - 756 - gph1: gpio-controller@13400100 { 757 - compatible = "samsung,exynos4-gpio"; 758 - reg = <0x13400100 0x20>; 759 - #gpio-cells = <4>; 760 - }; 761 - 762 - gpv0: gpio-controller@10D10000 { 763 - compatible = "samsung,exynos4-gpio"; 764 - reg = <0x10D10000 0x20>; 765 - #gpio-cells = <4>; 766 - }; 767 - 768 - gpv1: gpio-controller@10D10020 { 769 - compatible = "samsung,exynos4-gpio"; 770 - reg = <0x10D10020 0x20>; 771 - #gpio-cells = <4>; 772 - }; 773 - 774 - gpv2: gpio-controller@10D10040 { 775 - compatible = "samsung,exynos4-gpio"; 776 - reg = <0x10D10060 0x20>; 777 - #gpio-cells = <4>; 778 - }; 779 - 780 - gpv3: gpio-controller@10D10060 { 781 - compatible = "samsung,exynos4-gpio"; 782 - reg = <0x10D10080 0x20>; 783 - #gpio-cells = <4>; 784 - }; 785 - 786 - gpv4: gpio-controller@10D10080 { 787 - compatible = "samsung,exynos4-gpio"; 788 - reg = <0x10D100C0 0x20>; 789 - #gpio-cells = <4>; 790 - }; 791 - 792 - gpz: gpio-controller@03860000 { 793 - compatible = "samsung,exynos4-gpio"; 794 - reg = <0x03860000 0x20>; 795 - #gpio-cells = <4>; 796 - }; 797 - }; 798 - 799 465 800 466 gsc_0: gsc@0x13e00000 { 801 467 compatible = "samsung,exynos5-gsc"; ··· 613 775 reg = <0x10040720>; 614 776 samsung,enable-mask = <1>; 615 777 }; 778 + }; 779 + 780 + fimd { 781 + compatible = "samsung,exynos5250-fimd"; 782 + interrupt-parent = <&combiner>; 783 + reg = <0x14400000 0x40000>; 784 + interrupt-names = "fifo", "vsync", "lcd_sys"; 785 + interrupts = <18 4>, <18 5>, <18 6>; 786 + clocks = <&clock 133>, <&clock 339>; 787 + clock-names = "sclk_fimd", "fimd"; 616 788 }; 617 789 };
+39
arch/arm/boot/dts/exynos5440-sd5v1.dts
··· 1 + /* 2 + * SAMSUNG SD5v1 board device tree source 3 + * 4 + * Copyright (c) 2013 Samsung Electronics Co., Ltd. 5 + * http://www.samsung.com 6 + * 7 + * This program is free software; you can redistribute it and/or modify 8 + * it under the terms of the GNU General Public License version 2 as 9 + * published by the Free Software Foundation. 10 + */ 11 + 12 + /dts-v1/; 13 + /include/ "exynos5440.dtsi" 14 + 15 + / { 16 + model = "SAMSUNG SD5v1 board based on EXYNOS5440"; 17 + compatible = "samsung,sd5v1", "samsung,exynos5440"; 18 + 19 + chosen { 20 + bootargs = "root=/dev/sda2 rw rootwait ignore_loglevel early_printk no_console_suspend mem=2048M@0x80000000 console=ttySAC0,115200"; 21 + }; 22 + 23 + fixed-rate-clocks { 24 + xtal { 25 + compatible = "samsung,clock-xtal"; 26 + clock-frequency = <50000000>; 27 + }; 28 + }; 29 + 30 + gmac: ethernet@00230000 { 31 + fixed_phy; 32 + phy_addr = <1>; 33 + }; 34 + 35 + spi { 36 + status = "disabled"; 37 + }; 38 + 39 + };
+1 -5
arch/arm/boot/dts/exynos5440-ssdk5440.dts
··· 16 16 model = "SAMSUNG SSDK5440 board based on EXYNOS5440"; 17 17 compatible = "samsung,ssdk5440", "samsung,exynos5440"; 18 18 19 - memory { 20 - reg = <0x80000000 0x80000000>; 21 - }; 22 - 23 19 chosen { 24 - bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x81000000,8M console=ttySAC0,115200 init=/linuxrc"; 20 + bootargs = "root=/dev/sda2 rw rootwait ignore_loglevel early_printk no_console_suspend mem=2048M@0x80000000 console=ttySAC0,115200"; 25 21 }; 26 22 27 23 spi {
+46 -9
arch/arm/boot/dts/exynos5440.dtsi
··· 26 26 compatible = "arm,cortex-a15-gic"; 27 27 #interrupt-cells = <3>; 28 28 interrupt-controller; 29 - reg = <0x2E1000 0x1000>, <0x2E2000 0x1000>; 29 + reg = <0x2E1000 0x1000>, 30 + <0x2E2000 0x1000>, 31 + <0x2E4000 0x2000>, 32 + <0x2E6000 0x2000>; 33 + interrupts = <1 9 0xf04>; 30 34 }; 31 35 32 36 cpus { ··· 55 51 }; 56 52 }; 57 53 54 + arm-pmu { 55 + compatible = "arm,cortex-a15-pmu", "arm,cortex-a9-pmu"; 56 + interrupts = <0 52 4>, 57 + <0 53 4>, 58 + <0 54 4>, 59 + <0 55 4>; 60 + }; 61 + 58 62 timer { 59 63 compatible = "arm,cortex-a15-timer", 60 64 "arm,armv7-timer"; ··· 71 59 <1 11 0xf08>, 72 60 <1 10 0xf08>; 73 61 clock-frequency = <50000000>; 62 + }; 63 + 64 + cpufreq@160000 { 65 + compatible = "samsung,exynos5440-cpufreq"; 66 + reg = <0x160000 0x1000>; 67 + interrupts = <0 57 0>; 68 + operating-points = < 69 + /* KHz uV */ 70 + 1200000 1025000 71 + 1000000 975000 72 + 800000 925000 73 + >; 74 74 }; 75 75 76 76 serial@B0000 { ··· 116 92 pinctrl { 117 93 compatible = "samsung,exynos5440-pinctrl"; 118 94 reg = <0xE0000 0x1000>; 95 + interrupts = <0 37 0>, <0 38 0>, <0 39 0>, <0 40 0>, 96 + <0 41 0>, <0 42 0>, <0 43 0>, <0 44 0>; 119 97 interrupt-controller; 120 98 #interrupt-cells = <2>; 121 99 #gpio-cells = <2>; ··· 167 141 clock-names = "watchdog"; 168 142 }; 169 143 144 + gmac: ethernet@00230000 { 145 + compatible = "snps,dwmac-3.70a"; 146 + reg = <0x00230000 0x8000>; 147 + interrupt-parent = <&gic>; 148 + interrupts = <0 31 4>; 149 + interrupt-names = "macirq"; 150 + phy-mode = "sgmii"; 151 + clocks = <&clock 25>; 152 + clock-names = "stmmaceth"; 153 + }; 154 + 170 155 amba { 171 156 #address-cells = <1>; 172 157 #size-cells = <1>; ··· 185 148 interrupt-parent = <&gic>; 186 149 ranges; 187 150 188 - pdma0: pdma@121A0000 { 151 + pdma0: pdma@00121000 { 189 152 compatible = "arm,pl330", "arm,primecell"; 190 - reg = <0x120000 0x1000>; 191 - interrupts = <0 34 0>; 192 - clocks = <&clock 21>; 153 + reg = <0x121000 0x1000>; 154 + interrupts = <0 46 0>; 155 + clocks = <&clock 8>; 193 156 clock-names = "apb_pclk"; 194 157 #dma-cells = <1>; 195 158 #dma-channels = <8>; 196 159 #dma-requests = <32>; 197 160 }; 198 161 199 - pdma1: pdma@121B0000 { 162 + pdma1: pdma@00120000 { 200 163 compatible = "arm,pl330", "arm,primecell"; 201 - reg = <0x121000 0x1000>; 202 - interrupts = <0 35 0>; 203 - clocks = <&clock 21>; 164 + reg = <0x120000 0x1000>; 165 + interrupts = <0 47 0>; 166 + clocks = <&clock 8>; 204 167 clock-names = "apb_pclk"; 205 168 #dma-cells = <1>; 206 169 #dma-channels = <8>;
+35 -1
arch/arm/boot/dts/imx23-evk.dts
··· 59 59 lcdif@80030000 { 60 60 pinctrl-names = "default"; 61 61 pinctrl-0 = <&lcdif_24bit_pins_a>; 62 - panel-enable-gpios = <&gpio1 18 0>; 62 + lcd-supply = <&reg_lcd_3v3>; 63 + display = <&display>; 63 64 status = "okay"; 65 + 66 + display: display { 67 + bits-per-pixel = <32>; 68 + bus-width = <24>; 69 + 70 + display-timings { 71 + native-mode = <&timing0>; 72 + timing0: timing0 { 73 + clock-frequency = <9200000>; 74 + hactive = <480>; 75 + vactive = <272>; 76 + hback-porch = <15>; 77 + hfront-porch = <8>; 78 + vback-porch = <12>; 79 + vfront-porch = <4>; 80 + hsync-len = <1>; 81 + vsync-len = <1>; 82 + hsync-active = <0>; 83 + vsync-active = <0>; 84 + de-active = <1>; 85 + pixelclk-active = <0>; 86 + }; 87 + }; 88 + }; 64 89 }; 65 90 }; 66 91 ··· 119 94 regulator-min-microvolt = <3300000>; 120 95 regulator-max-microvolt = <3300000>; 121 96 gpio = <&gpio1 29 0>; 97 + }; 98 + 99 + reg_lcd_3v3: lcd-3v3 { 100 + compatible = "regulator-fixed"; 101 + regulator-name = "lcd-3v3"; 102 + regulator-min-microvolt = <3300000>; 103 + regulator-max-microvolt = <3300000>; 104 + gpio = <&gpio1 18 0>; 105 + enable-active-high; 122 106 }; 123 107 }; 124 108
+1
arch/arm/boot/dts/imx23-olinuxino.dts
··· 29 29 pinctrl-names = "default"; 30 30 pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_pins_fixup>; 31 31 bus-width = <4>; 32 + broken-cd; 32 33 status = "okay"; 33 34 }; 34 35
+40 -2
arch/arm/boot/dts/imx23.dtsi
··· 49 49 reg = <0x80000000 0x2000>; 50 50 }; 51 51 52 - dma-apbh@80004000 { 52 + dma_apbh: dma-apbh@80004000 { 53 53 compatible = "fsl,imx23-dma-apbh"; 54 54 reg = <0x80004000 0x2000>; 55 + interrupts = <0 14 20 0 56 + 13 13 13 13>; 57 + interrupt-names = "empty", "ssp0", "ssp1", "empty", 58 + "gpmi0", "gpmi1", "gpmi2", "gpmi3"; 59 + #dma-cells = <1>; 60 + dma-channels = <8>; 55 61 clocks = <&clks 15>; 56 62 }; 57 63 ··· 76 70 interrupt-names = "gpmi-dma", "bch"; 77 71 clocks = <&clks 34>; 78 72 clock-names = "gpmi_io"; 73 + dmas = <&dma_apbh 4>; 74 + dma-names = "rx-tx"; 79 75 fsl,gpmi-dma-channel = <4>; 80 76 status = "disabled"; 81 77 }; ··· 86 78 reg = <0x80010000 0x2000>; 87 79 interrupts = <15 14>; 88 80 clocks = <&clks 33>; 81 + dmas = <&dma_apbh 1>; 82 + dma-names = "rx-tx"; 89 83 fsl,ssp-dma-channel = <1>; 90 84 status = "disabled"; 91 85 }; ··· 315 305 status = "disabled"; 316 306 }; 317 307 318 - dma-apbx@80024000 { 308 + dma_apbx: dma-apbx@80024000 { 319 309 compatible = "fsl,imx23-dma-apbx"; 320 310 reg = <0x80024000 0x2000>; 311 + interrupts = <7 5 9 26 312 + 19 0 25 23 313 + 60 58 9 0 314 + 0 0 0 0>; 315 + interrupt-names = "audio-adc", "audio-dac", "spdif-tx", "i2c", 316 + "saif0", "empty", "auart0-rx", "auart0-tx", 317 + "auart1-rx", "auart1-tx", "saif1", "empty", 318 + "empty", "empty", "empty", "empty"; 319 + #dma-cells = <1>; 320 + dma-channels = <16>; 321 321 clocks = <&clks 16>; 322 322 }; 323 323 ··· 364 344 reg = <0x80034000 0x2000>; 365 345 interrupts = <2 20>; 366 346 clocks = <&clks 33>; 347 + dmas = <&dma_apbh 2>; 348 + dma-names = "rx-tx"; 367 349 fsl,ssp-dma-channel = <2>; 368 350 status = "disabled"; 369 351 }; ··· 391 369 392 370 saif0: saif@80042000 { 393 371 reg = <0x80042000 0x2000>; 372 + dmas = <&dma_apbx 4>; 373 + dma-names = "rx-tx"; 394 374 status = "disabled"; 395 375 }; 396 376 ··· 403 379 404 380 saif1: saif@80046000 { 405 381 reg = <0x80046000 0x2000>; 382 + dmas = <&dma_apbx 10>; 383 + dma-names = "rx-tx"; 406 384 status = "disabled"; 407 385 }; 408 386 409 387 audio-out@80048000 { 410 388 reg = <0x80048000 0x2000>; 389 + dmas = <&dma_apbx 1>; 390 + dma-names = "tx"; 411 391 status = "disabled"; 412 392 }; 413 393 414 394 audio-in@8004c000 { 415 395 reg = <0x8004c000 0x2000>; 396 + dmas = <&dma_apbx 0>; 397 + dma-names = "rx"; 416 398 status = "disabled"; 417 399 }; 418 400 ··· 431 401 432 402 spdif@80054000 { 433 403 reg = <0x80054000 2000>; 404 + dmas = <&dma_apbx 2>; 405 + dma-names = "tx"; 434 406 status = "disabled"; 435 407 }; 436 408 437 409 i2c@80058000 { 438 410 reg = <0x80058000 0x2000>; 411 + dmas = <&dma_apbx 3>; 412 + dma-names = "rx-tx"; 439 413 status = "disabled"; 440 414 }; 441 415 ··· 470 436 reg = <0x8006c000 0x2000>; 471 437 interrupts = <24 25 23>; 472 438 clocks = <&clks 32>; 439 + dmas = <&dma_apbx 6>, <&dma_apbx 7>; 440 + dma-names = "rx", "tx"; 473 441 status = "disabled"; 474 442 }; 475 443 ··· 480 444 reg = <0x8006e000 0x2000>; 481 445 interrupts = <59 60 58>; 482 446 clocks = <&clks 32>; 447 + dmas = <&dma_apbx 8>, <&dma_apbx 9>; 448 + dma-names = "rx", "tx"; 483 449 status = "disabled"; 484 450 }; 485 451
+25
arch/arm/boot/dts/imx28-apf28dev.dts
··· 72 72 pinctrl-names = "default"; 73 73 pinctrl-0 = <&lcdif_16bit_pins_a 74 74 &lcdif_pins_apf28dev>; 75 + display = <&display>; 75 76 status = "okay"; 77 + 78 + display: display { 79 + bits-per-pixel = <16>; 80 + bus-width = <16>; 81 + 82 + display-timings { 83 + native-mode = <&timing0>; 84 + timing0: timing0 { 85 + clock-frequency = <33000033>; 86 + hactive = <800>; 87 + vactive = <480>; 88 + hback-porch = <96>; 89 + hfront-porch = <96>; 90 + vback-porch = <20>; 91 + vfront-porch = <21>; 92 + hsync-len = <64>; 93 + vsync-len = <4>; 94 + hsync-active = <1>; 95 + vsync-active = <1>; 96 + de-active = <1>; 97 + pixelclk-active = <0>; 98 + }; 99 + }; 100 + }; 76 101 }; 77 102 }; 78 103
+25
arch/arm/boot/dts/imx28-apx4devkit.dts
··· 94 94 pinctrl-names = "default"; 95 95 pinctrl-0 = <&lcdif_24bit_pins_a 96 96 &lcdif_pins_apx4>; 97 + display = <&display>; 97 98 status = "okay"; 99 + 100 + display: display { 101 + bits-per-pixel = <32>; 102 + bus-width = <24>; 103 + 104 + display-timings { 105 + native-mode = <&timing0>; 106 + timing0: timing0 { 107 + clock-frequency = <30000000>; 108 + hactive = <800>; 109 + vactive = <480>; 110 + hback-porch = <88>; 111 + hfront-porch = <40>; 112 + vback-porch = <32>; 113 + vfront-porch = <13>; 114 + hsync-len = <48>; 115 + vsync-len = <3>; 116 + hsync-active = <1>; 117 + vsync-active = <1>; 118 + de-active = <1>; 119 + pixelclk-active = <0>; 120 + }; 121 + }; 122 + }; 98 123 }; 99 124 }; 100 125
+49 -1
arch/arm/boot/dts/imx28-cfa10049.dts
··· 30 30 reg = <0>; 31 31 fsl,pinmux-ids = < 32 32 0x0073 /* MX28_PAD_GPMI_D7__GPIO_0_7 */ 33 - 0x1153 /* MX28_PAD_LCD_D22__GPIO_1_21 */ 34 33 0x1163 /* MX28_PAD_LCD_D22__GPIO_1_22 */ 35 34 0x1173 /* MX28_PAD_LCD_D22__GPIO_1_23 */ 36 35 0x2153 /* MX28_PAD_SSP2_D5__GPIO_2_21 */ ··· 119 120 fsl,voltage = <1>; 120 121 fsl,pull-up = <0>; 121 122 }; 123 + 124 + w1_gpio_pins: w1-gpio@0 { 125 + reg = <0>; 126 + fsl,pinmux-ids = < 127 + 0x1153 /* MX28_PAD_LCD_D21__GPIO_1_21 */ 128 + >; 129 + fsl,drive-strength = <1>; 130 + fsl,voltage = <1>; 131 + fsl,pull-up = <0>; /* 0 will enable the keeper */ 132 + }; 122 133 }; 123 134 124 135 lcdif@80030000 { 125 136 pinctrl-names = "default"; 126 137 pinctrl-0 = <&lcdif_18bit_pins_cfa10049 127 138 &lcdif_pins_cfa10049>; 139 + display = <&display>; 128 140 status = "okay"; 141 + 142 + display: display { 143 + bits-per-pixel = <32>; 144 + bus-width = <18>; 145 + 146 + display-timings { 147 + native-mode = <&timing0>; 148 + timing0: timing0 { 149 + clock-frequency = <9216000>; 150 + hactive = <320>; 151 + vactive = <480>; 152 + hback-porch = <2>; 153 + hfront-porch = <2>; 154 + vback-porch = <2>; 155 + vfront-porch = <2>; 156 + hsync-len = <15>; 157 + vsync-len = <15>; 158 + hsync-active = <0>; 159 + vsync-active = <0>; 160 + de-active = <1>; 161 + pixelclk-active = <1>; 162 + }; 163 + }; 164 + }; 129 165 }; 130 166 }; 131 167 ··· 216 182 217 183 usbphy1: usbphy@8007e000 { 218 184 status = "okay"; 185 + }; 186 + 187 + lradc@80050000 { 188 + status = "okay"; 189 + fsl,lradc-touchscreen-wires = <4>; 219 190 }; 220 191 }; 221 192 }; ··· 343 304 pwms = <&pwm 3 5000000>; 344 305 brightness-levels = <0 4 8 16 32 64 128 255>; 345 306 default-brightness-level = <6>; 307 + 308 + }; 309 + 310 + onewire@0 { 311 + compatible = "w1-gpio"; 312 + pinctrl-names = "default"; 313 + pinctrl-0 = <&w1_gpio_pins>; 314 + status = "okay"; 315 + gpios = <&gpio1 21 0>; 346 316 }; 347 317 };
+35 -1
arch/arm/boot/dts/imx28-evk.dts
··· 123 123 pinctrl-names = "default"; 124 124 pinctrl-0 = <&lcdif_24bit_pins_a 125 125 &lcdif_pins_evk>; 126 - panel-enable-gpios = <&gpio3 30 0>; 126 + lcd-supply = <&reg_lcd_3v3>; 127 + display = <&display>; 127 128 status = "okay"; 129 + 130 + display: display { 131 + bits-per-pixel = <32>; 132 + bus-width = <24>; 133 + 134 + display-timings { 135 + native-mode = <&timing0>; 136 + timing0: timing0 { 137 + clock-frequency = <33500000>; 138 + hactive = <800>; 139 + vactive = <480>; 140 + hback-porch = <89>; 141 + hfront-porch = <164>; 142 + vback-porch = <23>; 143 + vfront-porch = <10>; 144 + hsync-len = <10>; 145 + vsync-len = <10>; 146 + hsync-active = <0>; 147 + vsync-active = <0>; 148 + de-active = <1>; 149 + pixelclk-active = <0>; 150 + }; 151 + }; 152 + }; 128 153 }; 129 154 130 155 can0: can@80032000 { ··· 308 283 regulator-min-microvolt = <5000000>; 309 284 regulator-max-microvolt = <5000000>; 310 285 gpio = <&gpio3 8 0>; 286 + enable-active-high; 287 + }; 288 + 289 + reg_lcd_3v3: lcd-3v3 { 290 + compatible = "regulator-fixed"; 291 + regulator-name = "lcd-3v3"; 292 + regulator-min-microvolt = <3300000>; 293 + regulator-max-microvolt = <3300000>; 294 + gpio = <&gpio3 30 0>; 311 295 enable-active-high; 312 296 }; 313 297 };
+27
arch/arm/boot/dts/imx28-m28evk.dts
··· 119 119 pinctrl-names = "default"; 120 120 pinctrl-0 = <&lcdif_24bit_pins_a 121 121 &lcdif_pins_m28>; 122 + display = <&display>; 122 123 status = "okay"; 124 + 125 + display: display { 126 + bits-per-pixel = <16>; 127 + bus-width = <18>; 128 + 129 + display-timings { 130 + native-mode = <&timing0>; 131 + timing0: timing0 { 132 + clock-frequency = <33260000>; 133 + hactive = <800>; 134 + vactive = <480>; 135 + hback-porch = <0>; 136 + hfront-porch = <256>; 137 + vback-porch = <0>; 138 + vfront-porch = <45>; 139 + hsync-len = <1>; 140 + vsync-len = <1>; 141 + hsync-active = <0>; 142 + vsync-active = <0>; 143 + de-active = <1>; 144 + pixelclk-active = <1>; 145 + }; 146 + }; 147 + }; 123 148 }; 124 149 125 150 can0: can@80032000 { ··· 245 220 phy-mode = "rmii"; 246 221 pinctrl-names = "default"; 247 222 pinctrl-0 = <&mac0_pins_a>; 223 + clocks = <&clks 57>, <&clks 57>; 224 + clock-names = "ipg", "ahb"; 248 225 status = "okay"; 249 226 }; 250 227
+58 -4
arch/arm/boot/dts/imx28.dtsi
··· 61 61 hsadc@80002000 { 62 62 reg = <0x80002000 0x2000>; 63 63 interrupts = <13 87>; 64 + dmas = <&dma_apbh 12>; 65 + dma-names = "rx"; 64 66 status = "disabled"; 65 67 }; 66 68 67 - dma-apbh@80004000 { 69 + dma_apbh: dma-apbh@80004000 { 68 70 compatible = "fsl,imx28-dma-apbh"; 69 71 reg = <0x80004000 0x2000>; 72 + interrupts = <82 83 84 85 73 + 88 88 88 88 74 + 88 88 88 88 75 + 87 86 0 0>; 76 + interrupt-names = "ssp0", "ssp1", "ssp2", "ssp3", 77 + "gpmi0", "gmpi1", "gpmi2", "gmpi3", 78 + "gpmi4", "gmpi5", "gpmi6", "gmpi7", 79 + "hsadc", "lcdif", "empty", "empty"; 80 + #dma-cells = <1>; 81 + dma-channels = <16>; 70 82 clocks = <&clks 25>; 71 83 }; 72 84 ··· 98 86 interrupt-names = "gpmi-dma", "bch"; 99 87 clocks = <&clks 50>; 100 88 clock-names = "gpmi_io"; 89 + dmas = <&dma_apbh 4>; 90 + dma-names = "rx-tx"; 101 91 fsl,gpmi-dma-channel = <4>; 102 92 status = "disabled"; 103 93 }; ··· 110 96 reg = <0x80010000 0x2000>; 111 97 interrupts = <96 82>; 112 98 clocks = <&clks 46>; 99 + dmas = <&dma_apbh 0>; 100 + dma-names = "rx-tx"; 113 101 fsl,ssp-dma-channel = <0>; 114 102 status = "disabled"; 115 103 }; ··· 122 106 reg = <0x80012000 0x2000>; 123 107 interrupts = <97 83>; 124 108 clocks = <&clks 47>; 109 + dmas = <&dma_apbh 1>; 110 + dma-names = "rx-tx"; 125 111 fsl,ssp-dma-channel = <1>; 126 112 status = "disabled"; 127 113 }; ··· 134 116 reg = <0x80014000 0x2000>; 135 117 interrupts = <98 84>; 136 118 clocks = <&clks 48>; 119 + dmas = <&dma_apbh 2>; 120 + dma-names = "rx-tx"; 137 121 fsl,ssp-dma-channel = <2>; 138 122 status = "disabled"; 139 123 }; ··· 146 126 reg = <0x80016000 0x2000>; 147 127 interrupts = <99 85>; 148 128 clocks = <&clks 49>; 129 + dmas = <&dma_apbh 3>; 130 + dma-names = "rx-tx"; 149 131 fsl,ssp-dma-channel = <3>; 150 132 status = "disabled"; 151 133 }; ··· 680 658 status = "disabled"; 681 659 }; 682 660 683 - dma-apbx@80024000 { 661 + dma_apbx: dma-apbx@80024000 { 684 662 compatible = "fsl,imx28-dma-apbx"; 685 663 reg = <0x80024000 0x2000>; 664 + interrupts = <78 79 66 0 665 + 80 81 68 69 666 + 70 71 72 73 667 + 74 75 76 77>; 668 + interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty", 669 + "saif0", "saif1", "i2c0", "i2c1", 670 + "auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx", 671 + "auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx"; 672 + #dma-cells = <1>; 673 + dma-channels = <16>; 686 674 clocks = <&clks 26>; 687 675 }; 688 676 ··· 724 692 reg = <0x80030000 0x2000>; 725 693 interrupts = <38 86>; 726 694 clocks = <&clks 55>; 695 + dmas = <&dma_apbh 13>; 696 + dma-names = "rx"; 727 697 status = "disabled"; 728 698 }; 729 699 ··· 801 767 reg = <0x80042000 0x2000>; 802 768 interrupts = <59 80>; 803 769 clocks = <&clks 53>; 770 + dmas = <&dma_apbx 4>; 771 + dma-names = "rx-tx"; 804 772 fsl,saif-dma-channel = <4>; 805 773 status = "disabled"; 806 774 }; ··· 817 781 reg = <0x80046000 0x2000>; 818 782 interrupts = <58 81>; 819 783 clocks = <&clks 54>; 784 + dmas = <&dma_apbx 5>; 785 + dma-names = "rx-tx"; 820 786 fsl,saif-dma-channel = <5>; 821 787 status = "disabled"; 822 788 }; ··· 834 796 spdif@80054000 { 835 797 reg = <0x80054000 0x2000>; 836 798 interrupts = <45 66>; 799 + dmas = <&dma_apbx 2>; 800 + dma-names = "tx"; 837 801 status = "disabled"; 838 802 }; 839 803 ··· 852 812 reg = <0x80058000 0x2000>; 853 813 interrupts = <111 68>; 854 814 clock-frequency = <100000>; 815 + dmas = <&dma_apbx 6>; 816 + dma-names = "rx-tx"; 855 817 fsl,i2c-dma-channel = <6>; 856 818 status = "disabled"; 857 819 }; ··· 865 823 reg = <0x8005a000 0x2000>; 866 824 interrupts = <110 69>; 867 825 clock-frequency = <100000>; 826 + dmas = <&dma_apbx 7>; 827 + dma-names = "rx-tx"; 868 828 fsl,i2c-dma-channel = <7>; 869 829 status = "disabled"; 870 830 }; ··· 891 847 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 892 848 reg = <0x8006a000 0x2000>; 893 849 interrupts = <112 70 71>; 850 + dmas = <&dma_apbx 8>, <&dma_apbx 9>; 851 + dma-names = "rx", "tx"; 894 852 fsl,auart-dma-channel = <8 9>; 895 853 clocks = <&clks 45>; 896 854 status = "disabled"; ··· 902 856 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 903 857 reg = <0x8006c000 0x2000>; 904 858 interrupts = <113 72 73>; 859 + dmas = <&dma_apbx 10>, <&dma_apbx 11>; 860 + dma-names = "rx", "tx"; 905 861 clocks = <&clks 45>; 906 862 status = "disabled"; 907 863 }; ··· 912 864 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 913 865 reg = <0x8006e000 0x2000>; 914 866 interrupts = <114 74 75>; 867 + dmas = <&dma_apbx 12>, <&dma_apbx 13>; 868 + dma-names = "rx", "tx"; 915 869 clocks = <&clks 45>; 916 870 status = "disabled"; 917 871 }; ··· 922 872 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 923 873 reg = <0x80070000 0x2000>; 924 874 interrupts = <115 76 77>; 875 + dmas = <&dma_apbx 14>, <&dma_apbx 15>; 876 + dma-names = "rx", "tx"; 925 877 clocks = <&clks 45>; 926 878 status = "disabled"; 927 879 }; ··· 932 880 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 933 881 reg = <0x80072000 0x2000>; 934 882 interrupts = <116 78 79>; 883 + dmas = <&dma_apbx 0>, <&dma_apbx 1>; 884 + dma-names = "rx", "tx"; 935 885 clocks = <&clks 45>; 936 886 status = "disabled"; 937 887 }; ··· 997 943 compatible = "fsl,imx28-fec"; 998 944 reg = <0x800f0000 0x4000>; 999 945 interrupts = <101>; 1000 - clocks = <&clks 57>, <&clks 57>; 1001 - clock-names = "ipg", "ahb"; 946 + clocks = <&clks 57>, <&clks 57>, <&clks 64>; 947 + clock-names = "ipg", "ahb", "enet_out"; 1002 948 status = "disabled"; 1003 949 }; 1004 950
+7 -1
arch/arm/boot/dts/imx6qdl.dtsi
··· 65 65 interrupt-parent = <&intc>; 66 66 ranges; 67 67 68 - dma-apbh@00110000 { 68 + dma_apbh: dma-apbh@00110000 { 69 69 compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh"; 70 70 reg = <0x00110000 0x2000>; 71 + interrupts = <0 13 0x04>, <0 13 0x04>, <0 13 0x04>, <0 13 0x04>; 72 + interrupt-names = "gpmi0", "gpmi1", "gpmi2", "gpmi3"; 73 + #dma-cells = <1>; 74 + dma-channels = <4>; 71 75 clocks = <&clks 106>; 72 76 }; 73 77 ··· 87 83 <&clks 150>, <&clks 149>; 88 84 clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch", 89 85 "gpmi_bch_apb", "per1_bch"; 86 + dmas = <&dma_apbh 0>; 87 + dma-names = "rx-tx"; 90 88 fsl,gpmi-dma-channel = <0>; 91 89 status = "disabled"; 92 90 };
+28 -11
arch/arm/boot/dts/omap2.dtsi
··· 26 26 }; 27 27 }; 28 28 29 + pmu { 30 + compatible = "arm,arm1136-pmu"; 31 + interrupts = <3>; 32 + }; 33 + 29 34 soc { 30 35 compatible = "ti,omap-infra"; 31 36 mpu { ··· 54 49 reg = <0x480FE000 0x1000>; 55 50 }; 56 51 52 + sdma: dma-controller@48056000 { 53 + compatible = "ti,omap2430-sdma", "ti,omap2420-sdma"; 54 + reg = <0x48056000 0x1000>; 55 + interrupts = <12>, 56 + <13>, 57 + <14>, 58 + <15>; 59 + #dma-cells = <1>; 60 + #dma-channels = <32>; 61 + #dma-requests = <64>; 62 + }; 63 + 57 64 uart1: serial@4806a000 { 58 65 compatible = "ti,omap2-uart"; 59 66 ti,hwmods = "uart1"; ··· 85 68 }; 86 69 87 70 timer2: timer@4802a000 { 88 - compatible = "ti,omap2-timer"; 71 + compatible = "ti,omap2420-timer"; 89 72 reg = <0x4802a000 0x400>; 90 73 interrupts = <38>; 91 74 ti,hwmods = "timer2"; 92 75 }; 93 76 94 77 timer3: timer@48078000 { 95 - compatible = "ti,omap2-timer"; 78 + compatible = "ti,omap2420-timer"; 96 79 reg = <0x48078000 0x400>; 97 80 interrupts = <39>; 98 81 ti,hwmods = "timer3"; 99 82 }; 100 83 101 84 timer4: timer@4807a000 { 102 - compatible = "ti,omap2-timer"; 85 + compatible = "ti,omap2420-timer"; 103 86 reg = <0x4807a000 0x400>; 104 87 interrupts = <40>; 105 88 ti,hwmods = "timer4"; 106 89 }; 107 90 108 91 timer5: timer@4807c000 { 109 - compatible = "ti,omap2-timer"; 92 + compatible = "ti,omap2420-timer"; 110 93 reg = <0x4807c000 0x400>; 111 94 interrupts = <41>; 112 95 ti,hwmods = "timer5"; ··· 114 97 }; 115 98 116 99 timer6: timer@4807e000 { 117 - compatible = "ti,omap2-timer"; 100 + compatible = "ti,omap2420-timer"; 118 101 reg = <0x4807e000 0x400>; 119 102 interrupts = <42>; 120 103 ti,hwmods = "timer6"; ··· 122 105 }; 123 106 124 107 timer7: timer@48080000 { 125 - compatible = "ti,omap2-timer"; 108 + compatible = "ti,omap2420-timer"; 126 109 reg = <0x48080000 0x400>; 127 110 interrupts = <43>; 128 111 ti,hwmods = "timer7"; ··· 130 113 }; 131 114 132 115 timer8: timer@48082000 { 133 - compatible = "ti,omap2-timer"; 116 + compatible = "ti,omap2420-timer"; 134 117 reg = <0x48082000 0x400>; 135 118 interrupts = <44>; 136 119 ti,hwmods = "timer8"; ··· 138 121 }; 139 122 140 123 timer9: timer@48084000 { 141 - compatible = "ti,omap2-timer"; 124 + compatible = "ti,omap2420-timer"; 142 125 reg = <0x48084000 0x400>; 143 126 interrupts = <45>; 144 127 ti,hwmods = "timer9"; ··· 146 129 }; 147 130 148 131 timer10: timer@48086000 { 149 - compatible = "ti,omap2-timer"; 132 + compatible = "ti,omap2420-timer"; 150 133 reg = <0x48086000 0x400>; 151 134 interrupts = <46>; 152 135 ti,hwmods = "timer10"; ··· 154 137 }; 155 138 156 139 timer11: timer@48088000 { 157 - compatible = "ti,omap2-timer"; 140 + compatible = "ti,omap2420-timer"; 158 141 reg = <0x48088000 0x400>; 159 142 interrupts = <47>; 160 143 ti,hwmods = "timer11"; ··· 162 145 }; 163 146 164 147 timer12: timer@4808a000 { 165 - compatible = "ti,omap2-timer"; 148 + compatible = "ti,omap2420-timer"; 166 149 reg = <0x4808a000 0x400>; 167 150 interrupts = <48>; 168 151 ti,hwmods = "timer12";
+46
arch/arm/boot/dts/omap2420-h4.dts
··· 18 18 reg = <0x80000000 0x4000000>; /* 64 MB */ 19 19 }; 20 20 }; 21 + 22 + &gpmc { 23 + ranges = <0 0 0x08000000 0x04000000>; 24 + 25 + nor@0,0 { 26 + compatible = "cfi-flash"; 27 + linux,mtd-name= "intel,ge28f256l18b85"; 28 + #address-cells = <1>; 29 + #size-cells = <1>; 30 + reg = <0 0 0x04000000>; 31 + bank-width = <2>; 32 + 33 + gpmc,mux-add-data = <2>; 34 + gpmc,cs-on-ns = <10>; 35 + gpmc,cs-rd-off-ns = <160>; 36 + gpmc,cs-wr-off-ns = <160>; 37 + gpmc,adv-on-ns = <20>; 38 + gpmc,adv-rd-off-ns = <50>; 39 + gpmc,adv-wr-off-ns = <50>; 40 + gpmc,oe-on-ns = <60>; 41 + gpmc,oe-off-ns = <120>; 42 + gpmc,we-on-ns = <60>; 43 + gpmc,we-off-ns = <120>; 44 + gpmc,rd-cycle-ns = <170>; 45 + gpmc,wr-cycle-ns = <170>; 46 + gpmc,access-ns = <150>; 47 + gpmc,page-burst-access-ns = <10>; 48 + 49 + partition@0 { 50 + label = "bootloader"; 51 + reg = <0 0x20000>; 52 + }; 53 + partition@0x20000 { 54 + label = "params"; 55 + reg = <0x20000 0x20000>; 56 + }; 57 + partition@0x40000 { 58 + label = "kernel"; 59 + reg = <0x40000 0x200000>; 60 + }; 61 + partition@0x240000 { 62 + label = "file-system"; 63 + reg = <0x240000 0x3dc0000>; 64 + }; 65 + }; 66 + };
+66 -1
arch/arm/boot/dts/omap2420.dtsi
··· 29 29 pinctrl-single,function-mask = <0x3f>; 30 30 }; 31 31 32 + gpio1: gpio@48018000 { 33 + compatible = "ti,omap2-gpio"; 34 + reg = <0x48018000 0x200>; 35 + interrupts = <29>; 36 + ti,hwmods = "gpio1"; 37 + ti,gpio-always-on; 38 + #gpio-cells = <2>; 39 + gpio-controller; 40 + #interrupt-cells = <2>; 41 + interrupt-controller; 42 + }; 43 + 44 + gpio2: gpio@4801a000 { 45 + compatible = "ti,omap2-gpio"; 46 + reg = <0x4801a000 0x200>; 47 + interrupts = <30>; 48 + ti,hwmods = "gpio2"; 49 + ti,gpio-always-on; 50 + #gpio-cells = <2>; 51 + gpio-controller; 52 + #interrupt-cells = <2>; 53 + interrupt-controller; 54 + }; 55 + 56 + gpio3: gpio@4801c000 { 57 + compatible = "ti,omap2-gpio"; 58 + reg = <0x4801c000 0x200>; 59 + interrupts = <31>; 60 + ti,hwmods = "gpio3"; 61 + ti,gpio-always-on; 62 + #gpio-cells = <2>; 63 + gpio-controller; 64 + #interrupt-cells = <2>; 65 + interrupt-controller; 66 + }; 67 + 68 + gpio4: gpio@4801e000 { 69 + compatible = "ti,omap2-gpio"; 70 + reg = <0x4801e000 0x200>; 71 + interrupts = <32>; 72 + ti,hwmods = "gpio4"; 73 + ti,gpio-always-on; 74 + #gpio-cells = <2>; 75 + gpio-controller; 76 + #interrupt-cells = <2>; 77 + interrupt-controller; 78 + }; 79 + 80 + gpmc: gpmc@6800a000 { 81 + compatible = "ti,omap2420-gpmc"; 82 + reg = <0x6800a000 0x1000>; 83 + #address-cells = <2>; 84 + #size-cells = <1>; 85 + interrupts = <20>; 86 + gpmc,num-cs = <8>; 87 + gpmc,num-waitpins = <4>; 88 + ti,hwmods = "gpmc"; 89 + }; 90 + 32 91 mcbsp1: mcbsp@48074000 { 33 92 compatible = "ti,omap2420-mcbsp"; 34 93 reg = <0x48074000 0xff>; ··· 96 37 <60>; /* RX interrupt */ 97 38 interrupt-names = "tx", "rx"; 98 39 ti,hwmods = "mcbsp1"; 40 + dmas = <&sdma 31>, 41 + <&sdma 32>; 42 + dma-names = "tx", "rx"; 99 43 }; 100 44 101 45 mcbsp2: mcbsp@48076000 { ··· 109 47 <63>; /* RX interrupt */ 110 48 interrupt-names = "tx", "rx"; 111 49 ti,hwmods = "mcbsp2"; 50 + dmas = <&sdma 33>, 51 + <&sdma 34>; 52 + dma-names = "tx", "rx"; 112 53 }; 113 54 114 55 timer1: timer@48028000 { 115 - compatible = "ti,omap2-timer"; 56 + compatible = "ti,omap2420-timer"; 116 57 reg = <0x48028000 0x400>; 117 58 interrupts = <37>; 118 59 ti,hwmods = "timer1";
+86 -1
arch/arm/boot/dts/omap2430.dtsi
··· 29 29 pinctrl-single,function-mask = <0x3f>; 30 30 }; 31 31 32 + gpio1: gpio@4900c000 { 33 + compatible = "ti,omap2-gpio"; 34 + reg = <0x4900c000 0x200>; 35 + interrupts = <29>; 36 + ti,hwmods = "gpio1"; 37 + ti,gpio-always-on; 38 + #gpio-cells = <2>; 39 + gpio-controller; 40 + #interrupt-cells = <2>; 41 + interrupt-controller; 42 + }; 43 + 44 + gpio2: gpio@4900e000 { 45 + compatible = "ti,omap2-gpio"; 46 + reg = <0x4900e000 0x200>; 47 + interrupts = <30>; 48 + ti,hwmods = "gpio2"; 49 + ti,gpio-always-on; 50 + #gpio-cells = <2>; 51 + gpio-controller; 52 + #interrupt-cells = <2>; 53 + interrupt-controller; 54 + }; 55 + 56 + gpio3: gpio@49010000 { 57 + compatible = "ti,omap2-gpio"; 58 + reg = <0x49010000 0x200>; 59 + interrupts = <31>; 60 + ti,hwmods = "gpio3"; 61 + ti,gpio-always-on; 62 + #gpio-cells = <2>; 63 + gpio-controller; 64 + #interrupt-cells = <2>; 65 + interrupt-controller; 66 + }; 67 + 68 + gpio4: gpio@49012000 { 69 + compatible = "ti,omap2-gpio"; 70 + reg = <0x49012000 0x200>; 71 + interrupts = <32>; 72 + ti,hwmods = "gpio4"; 73 + ti,gpio-always-on; 74 + #gpio-cells = <2>; 75 + gpio-controller; 76 + #interrupt-cells = <2>; 77 + interrupt-controller; 78 + }; 79 + 80 + gpio5: gpio@480b6000 { 81 + compatible = "ti,omap2-gpio"; 82 + reg = <0x480b6000 0x200>; 83 + interrupts = <33>; 84 + ti,hwmods = "gpio5"; 85 + #gpio-cells = <2>; 86 + gpio-controller; 87 + #interrupt-cells = <2>; 88 + interrupt-controller; 89 + }; 90 + 91 + gpmc: gpmc@6e000000 { 92 + compatible = "ti,omap2430-gpmc"; 93 + reg = <0x6e000000 0x1000>; 94 + #address-cells = <2>; 95 + #size-cells = <1>; 96 + interrupts = <20>; 97 + gpmc,num-cs = <8>; 98 + gpmc,num-waitpins = <4>; 99 + ti,hwmods = "gpmc"; 100 + }; 101 + 32 102 mcbsp1: mcbsp@48074000 { 33 103 compatible = "ti,omap2430-mcbsp"; 34 104 reg = <0x48074000 0xff>; ··· 110 40 interrupt-names = "common", "tx", "rx", "rx_overflow"; 111 41 ti,buffer-size = <128>; 112 42 ti,hwmods = "mcbsp1"; 43 + dmas = <&sdma 31>, 44 + <&sdma 32>; 45 + dma-names = "tx", "rx"; 113 46 }; 114 47 115 48 mcbsp2: mcbsp@48076000 { ··· 125 52 interrupt-names = "common", "tx", "rx"; 126 53 ti,buffer-size = <128>; 127 54 ti,hwmods = "mcbsp2"; 55 + dmas = <&sdma 33>, 56 + <&sdma 34>; 57 + dma-names = "tx", "rx"; 128 58 }; 129 59 130 60 mcbsp3: mcbsp@4808c000 { ··· 140 64 interrupt-names = "common", "tx", "rx"; 141 65 ti,buffer-size = <128>; 142 66 ti,hwmods = "mcbsp3"; 67 + dmas = <&sdma 17>, 68 + <&sdma 18>; 69 + dma-names = "tx", "rx"; 143 70 }; 144 71 145 72 mcbsp4: mcbsp@4808e000 { ··· 155 76 interrupt-names = "common", "tx", "rx"; 156 77 ti,buffer-size = <128>; 157 78 ti,hwmods = "mcbsp4"; 79 + dmas = <&sdma 19>, 80 + <&sdma 20>; 81 + dma-names = "tx", "rx"; 158 82 }; 159 83 160 84 mcbsp5: mcbsp@48096000 { ··· 170 88 interrupt-names = "common", "tx", "rx"; 171 89 ti,buffer-size = <128>; 172 90 ti,hwmods = "mcbsp5"; 91 + dmas = <&sdma 21>, 92 + <&sdma 22>; 93 + dma-names = "tx", "rx"; 173 94 }; 174 95 175 96 timer1: timer@49018000 { 176 - compatible = "ti,omap2-timer"; 97 + compatible = "ti,omap2420-timer"; 177 98 reg = <0x49018000 0x400>; 178 99 interrupts = <37>; 179 100 ti,hwmods = "timer1";
+22 -4
arch/arm/boot/dts/omap3-beagle-xm.dts
··· 13 13 model = "TI OMAP3 BeagleBoard xM"; 14 14 compatible = "ti,omap3-beagle-xm, ti,omap3-beagle", "ti,omap3"; 15 15 16 + cpus { 17 + cpu@0 { 18 + cpu0-supply = <&vcc>; 19 + }; 20 + }; 21 + 16 22 memory { 17 23 device_type = "memory"; 18 24 reg = <0x80000000 0x20000000>; /* 512 MB */ ··· 26 20 27 21 leds { 28 22 compatible = "gpio-leds"; 29 - pmu_stat { 30 - label = "beagleboard::pmu_stat"; 31 - gpios = <&twl_gpio 19 0>; /* LEDB */ 32 - }; 33 23 34 24 heartbeat { 35 25 label = "beagleboard::usr0"; ··· 37 35 label = "beagleboard::usr1"; 38 36 gpios = <&gpio5 21 0>; /* 149 -> D7 LED */ 39 37 linux,default-trigger = "mmc0"; 38 + }; 39 + }; 40 + 41 + pwmleds { 42 + compatible = "pwm-leds"; 43 + 44 + pmu_stat { 45 + label = "beagleboard::pmu_stat"; 46 + pwms = <&twl_pwmled 1 7812500>; 47 + max-brightness = <127>; 40 48 }; 41 49 }; 42 50 ··· 118 106 * BIT(15), BIT(16), BIT(17) 119 107 */ 120 108 ti,pulldowns = <0x03a1c4>; 109 + }; 110 + 111 + &usb_otg_hs { 112 + interface-type = <0>; 113 + mode = <3>; 114 + power = <50>; 121 115 };
+7 -1
arch/arm/boot/dts/omap3-beagle.dts
··· 7 7 */ 8 8 /dts-v1/; 9 9 10 - /include/ "omap3.dtsi" 10 + /include/ "omap34xx.dtsi" 11 11 12 12 / { 13 13 model = "TI OMAP3 BeagleBoard"; 14 14 compatible = "ti,omap3-beagle", "ti,omap3"; 15 + 16 + cpus { 17 + cpu@0 { 18 + cpu0-supply = <&vcc>; 19 + }; 20 + }; 15 21 16 22 memory { 17 23 device_type = "memory";
+169
arch/arm/boot/dts/omap3-devkit8000.dts
··· 1 + /* 2 + * Author: Anil Kumar <anilk4.v@gmail.com> 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 version 2 as 6 + * published by the Free Software Foundation. 7 + */ 8 + /dts-v1/; 9 + 10 + /include/ "omap34xx.dtsi" 11 + / { 12 + model = "TimLL OMAP3 Devkit8000"; 13 + compatible = "timll,omap3-devkit8000", "ti,omap3"; 14 + 15 + memory { 16 + device_type = "memory"; 17 + reg = <0x80000000 0x10000000>; /* 256 MB */ 18 + }; 19 + 20 + leds { 21 + compatible = "gpio-leds"; 22 + 23 + heartbeat { 24 + label = "devkit8000::led1"; 25 + gpios = <&gpio6 26 0>; /* 186 -> LED1 */ 26 + default-state = "on"; 27 + linux,default-trigger = "heartbeat"; 28 + }; 29 + 30 + mmc { 31 + label = "devkit8000::led2"; 32 + gpios = <&gpio6 3 0>; /* 163 -> LED2 */ 33 + default-state = "on"; 34 + linux,default-trigger = "none"; 35 + }; 36 + 37 + usr { 38 + label = "devkit8000::led3"; 39 + gpios = <&gpio6 4 0>; /* 164 -> LED3 */ 40 + default-state = "on"; 41 + linux,default-trigger = "usr"; 42 + }; 43 + 44 + }; 45 + 46 + sound { 47 + compatible = "ti,omap-twl4030"; 48 + ti,model = "devkit8000"; 49 + 50 + ti,mcbsp = <&mcbsp2>; 51 + ti,codec = <&twl_audio>; 52 + ti,audio-routing = 53 + "Ext Spk", "PREDRIVEL", 54 + "Ext Spk", "PREDRIVER", 55 + "MAINMIC", "Main Mic", 56 + "Main Mic", "Mic Bias 1"; 57 + }; 58 + }; 59 + 60 + &i2c1 { 61 + clock-frequency = <2600000>; 62 + 63 + twl: twl@48 { 64 + reg = <0x48>; 65 + interrupts = <7>; /* SYS_NIRQ cascaded to intc */ 66 + 67 + twl_audio: audio { 68 + compatible = "ti,twl4030-audio"; 69 + codec { 70 + }; 71 + }; 72 + }; 73 + }; 74 + 75 + &i2c2 { 76 + status = "disabled"; 77 + }; 78 + 79 + &i2c3 { 80 + status = "disabled"; 81 + }; 82 + 83 + /include/ "twl4030.dtsi" 84 + 85 + &mmc1 { 86 + vmmc-supply = <&vmmc1>; 87 + vmmc_aux-supply = <&vsim>; 88 + bus-width = <8>; 89 + }; 90 + 91 + &mmc2 { 92 + status = "disabled"; 93 + }; 94 + 95 + &mmc3 { 96 + status = "disabled"; 97 + }; 98 + 99 + &wdt2 { 100 + status = "disabled"; 101 + }; 102 + 103 + &mcbsp1 { 104 + status = "disabled"; 105 + }; 106 + 107 + &mcbsp3 { 108 + status = "disabled"; 109 + }; 110 + 111 + &mcbsp4 { 112 + status = "disabled"; 113 + }; 114 + 115 + &mcbsp5 { 116 + status = "disabled"; 117 + }; 118 + 119 + &gpmc { 120 + ranges = <0 0 0x30000000 0x04>; /* CS0: NAND */ 121 + 122 + nand@0,0 { 123 + reg = <0 0 0>; /* CS0, offset 0 */ 124 + nand-bus-width = <16>; 125 + 126 + gpmc,sync-clk = <0>; 127 + gpmc,cs-on = <0>; 128 + gpmc,cs-rd-off = <44>; 129 + gpmc,cs-wr-off = <44>; 130 + gpmc,adv-on = <6>; 131 + gpmc,adv-rd-off = <34>; 132 + gpmc,adv-wr-off = <44>; 133 + gpmc,we-off = <40>; 134 + gpmc,oe-off = <54>; 135 + gpmc,access = <64>; 136 + gpmc,rd-cycle = <82>; 137 + gpmc,wr-cycle = <82>; 138 + gpmc,wr-access = <40>; 139 + gpmc,wr-data-mux-bus = <0>; 140 + 141 + #address-cells = <1>; 142 + #size-cells = <1>; 143 + 144 + x-loader@0 { 145 + label = "X-Loader"; 146 + reg = <0 0x80000>; 147 + }; 148 + 149 + bootloaders@80000 { 150 + label = "U-Boot"; 151 + reg = <0x80000 0x1e0000>; 152 + }; 153 + 154 + bootloaders_env@260000 { 155 + label = "U-Boot Env"; 156 + reg = <0x260000 0x20000>; 157 + }; 158 + 159 + kernel@280000 { 160 + label = "Kernel"; 161 + reg = <0x280000 0x400000>; 162 + }; 163 + 164 + filesystem@680000 { 165 + label = "File System"; 166 + reg = <0x680000 0xf980000>; 167 + }; 168 + }; 169 + };
+13 -1
arch/arm/boot/dts/omap3-evm.dts
··· 7 7 */ 8 8 /dts-v1/; 9 9 10 - /include/ "omap3.dtsi" 10 + /include/ "omap34xx.dtsi" 11 11 12 12 / { 13 13 model = "TI OMAP3 EVM (OMAP3530, AM/DM37x)"; 14 14 compatible = "ti,omap3-evm", "ti,omap3"; 15 + 16 + cpus { 17 + cpu@0 { 18 + cpu0-supply = <&vcc>; 19 + }; 20 + }; 15 21 16 22 memory { 17 23 device_type = "memory"; ··· 64 58 65 59 &twl_gpio { 66 60 ti,use-leds; 61 + }; 62 + 63 + &usb_otg_hs { 64 + interface-type = <0>; 65 + mode = <3>; 66 + power = <50>; 67 67 };
+122
arch/arm/boot/dts/omap3-igep.dtsi
··· 1 + /* 2 + * Device Tree Source for IGEP Technology devices 3 + * 4 + * Copyright (C) 2012 Javier Martinez Canillas <javier@collabora.co.uk> 5 + * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com> 6 + * 7 + * This program is free software; you can redistribute it and/or modify 8 + * it under the terms of the GNU General Public License version 2 as 9 + * published by the Free Software Foundation. 10 + */ 11 + /dts-v1/; 12 + 13 + /include/ "omap34xx.dtsi" 14 + 15 + / { 16 + memory { 17 + device_type = "memory"; 18 + reg = <0x80000000 0x20000000>; /* 512 MB */ 19 + }; 20 + 21 + sound { 22 + compatible = "ti,omap-twl4030"; 23 + ti,model = "igep2"; 24 + ti,mcbsp = <&mcbsp2>; 25 + ti,codec = <&twl_audio>; 26 + }; 27 + }; 28 + 29 + &omap3_pmx_core { 30 + uart1_pins: pinmux_uart1_pins { 31 + pinctrl-single,pins = < 32 + 0x152 0x100 /* uart1_rx.uart1_rx INPUT | MODE0 */ 33 + 0x14c 0 /* uart1_tx.uart1_tx OUTPUT | MODE0 */ 34 + >; 35 + }; 36 + 37 + uart2_pins: pinmux_uart2_pins { 38 + pinctrl-single,pins = < 39 + 0x14a 0x100 /* uart2_rx.uart2_rx INPUT | MODE0 */ 40 + 0x148 0 /* uart2_tx.uart2_tx OUTPUT | MODE0 */ 41 + >; 42 + }; 43 + 44 + uart3_pins: pinmux_uart3_pins { 45 + pinctrl-single,pins = < 46 + 0x16e 0x100 /* uart3_rx.uart3_rx INPUT | MODE0 */ 47 + 0x170 0 /* uart3_tx.uart3_tx OUTPUT | MODE0 */ 48 + >; 49 + }; 50 + 51 + mmc1_pins: pinmux_mmc1_pins { 52 + pinctrl-single,pins = < 53 + 0x114 0x0118 /* sdmmc1_clk.sdmmc1_clk INPUT PULLUP | MODE 0 */ 54 + 0x116 0x0118 /* sdmmc1_cmd.sdmmc1_cmd INPUT PULLUP | MODE 0 */ 55 + 0x118 0x0118 /* sdmmc1_dat0.sdmmc1_dat0 INPUT PULLUP | MODE 0 */ 56 + 0x11a 0x0118 /* sdmmc1_dat1.sdmmc1_dat1 INPUT PULLUP | MODE 0 */ 57 + 0x11c 0x0118 /* sdmmc1_dat2.sdmmc1_dat2 INPUT PULLUP | MODE 0 */ 58 + 0x11e 0x0118 /* sdmmc1_dat3.sdmmc1_dat3 INPUT PULLUP | MODE 0 */ 59 + 0x120 0x0100 /* sdmmc1_dat4.sdmmc1_dat4 INPUT | MODE 0 */ 60 + 0x122 0x0100 /* sdmmc1_dat5.sdmmc1_dat5 INPUT | MODE 0 */ 61 + 0x124 0x0100 /* sdmmc1_dat6.sdmmc1_dat6 INPUT | MODE 0 */ 62 + 0x126 0x0100 /* sdmmc1_dat7.sdmmc1_dat7 INPUT | MODE 0 */ 63 + >; 64 + }; 65 + }; 66 + 67 + &i2c1 { 68 + clock-frequency = <2600000>; 69 + 70 + twl: twl@48 { 71 + reg = <0x48>; 72 + interrupts = <7>; /* SYS_NIRQ cascaded to intc */ 73 + interrupt-parent = <&intc>; 74 + 75 + twl_audio: audio { 76 + compatible = "ti,twl4030-audio"; 77 + codec { 78 + }; 79 + }; 80 + }; 81 + }; 82 + 83 + /include/ "twl4030.dtsi" 84 + 85 + &i2c2 { 86 + clock-frequency = <400000>; 87 + }; 88 + 89 + &mmc1 { 90 + pinctrl-names = "default"; 91 + pinctrl-0 = <&mmc1_pins>; 92 + vmmc-supply = <&vmmc1>; 93 + vmmc_aux-supply = <&vsim>; 94 + bus-width = <8>; 95 + }; 96 + 97 + &mmc2 { 98 + status = "disabled"; 99 + }; 100 + 101 + &mmc3 { 102 + status = "disabled"; 103 + }; 104 + 105 + &uart1 { 106 + pinctrl-names = "default"; 107 + pinctrl-0 = <&uart1_pins>; 108 + }; 109 + 110 + &uart2 { 111 + pinctrl-names = "default"; 112 + pinctrl-0 = <&uart2_pins>; 113 + }; 114 + 115 + &uart3 { 116 + pinctrl-names = "default"; 117 + pinctrl-0 = <&uart3_pins>; 118 + }; 119 + 120 + &twl_gpio { 121 + ti,use-leds; 122 + };
+56
arch/arm/boot/dts/omap3-igep0020.dts
··· 1 + /* 2 + * Device Tree Source for IGEPv2 board 3 + * 4 + * Copyright (C) 2012 Javier Martinez Canillas <javier@collabora.co.uk> 5 + * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com> 6 + * 7 + * This program is free software; you can redistribute it and/or modify 8 + * it under the terms of the GNU General Public License version 2 as 9 + * published by the Free Software Foundation. 10 + */ 11 + 12 + /include/ "omap3-igep.dtsi" 13 + 14 + / { 15 + model = "IGEPv2"; 16 + compatible = "isee,omap3-igep0020", "ti,omap3"; 17 + 18 + leds { 19 + compatible = "gpio-leds"; 20 + boot { 21 + label = "omap3:green:boot"; 22 + gpios = <&gpio1 26 0>; 23 + default-state = "on"; 24 + }; 25 + 26 + user0 { 27 + label = "omap3:red:user0"; 28 + gpios = <&gpio1 27 0>; 29 + default-state = "off"; 30 + }; 31 + 32 + user1 { 33 + label = "omap3:red:user1"; 34 + gpios = <&gpio1 28 0>; 35 + default-state = "off"; 36 + }; 37 + 38 + user2 { 39 + label = "omap3:green:user1"; 40 + gpios = <&twl_gpio 19 1>; 41 + }; 42 + }; 43 + }; 44 + 45 + &i2c3 { 46 + clock-frequency = <100000>; 47 + 48 + /* 49 + * Display monitor features are burnt in the EEPROM 50 + * as EDID data. 51 + */ 52 + eeprom@50 { 53 + compatible = "ti,eeprom"; 54 + reg = <0x50>; 55 + }; 56 + };
+44
arch/arm/boot/dts/omap3-igep0030.dts
··· 1 + /* 2 + * Device Tree Source for IGEP COM Module 3 + * 4 + * Copyright (C) 2012 Javier Martinez Canillas <javier@collabora.co.uk> 5 + * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com> 6 + * 7 + * This program is free software; you can redistribute it and/or modify 8 + * it under the terms of the GNU General Public License version 2 as 9 + * published by the Free Software Foundation. 10 + */ 11 + 12 + /include/ "omap3-igep.dtsi" 13 + 14 + / { 15 + model = "IGEP COM Module"; 16 + compatible = "isee,omap3-igep0030", "ti,omap3"; 17 + 18 + leds { 19 + compatible = "gpio-leds"; 20 + boot { 21 + label = "omap3:green:boot"; 22 + gpios = <&twl_gpio 13 1>; 23 + default-state = "on"; 24 + }; 25 + 26 + user0 { 27 + label = "omap3:red:user0"; 28 + gpios = <&twl_gpio 18 1>; /* LEDA */ 29 + default-state = "off"; 30 + }; 31 + 32 + user1 { 33 + label = "omap3:green:user1"; 34 + gpios = <&twl_gpio 19 1>; /* LEDB */ 35 + default-state = "off"; 36 + }; 37 + 38 + user2 { 39 + label = "omap3:red:user1"; 40 + gpios = <&gpio1 16 1>; 41 + default-state = "off"; 42 + }; 43 + }; 44 + };
+26 -5
arch/arm/boot/dts/omap3-overo.dtsi
··· 11 11 */ 12 12 /dts-v1/; 13 13 14 - /include/ "omap3.dtsi" 14 + /include/ "omap34xx.dtsi" 15 15 16 16 / { 17 - leds { 18 - compatible = "gpio-leds"; 17 + pwmleds { 18 + compatible = "pwm-leds"; 19 + 19 20 overo { 20 21 label = "overo:blue:COM"; 21 - gpios = <&twl_gpio 19 0>; 22 - linux,default-trigger = "mmc0"; 22 + pwms = <&twl_pwmled 1 7812500>; 23 + max-brightness = <127>; 23 24 }; 25 + }; 26 + 27 + sound { 28 + compatible = "ti,omap-twl4030"; 29 + ti,model = "overo"; 30 + 31 + ti,mcbsp = <&mcbsp2>; 32 + ti,codec = <&twl_audio>; 24 33 }; 25 34 }; 26 35 ··· 40 31 reg = <0x48>; 41 32 interrupts = <7>; /* SYS_NIRQ cascaded to intc */ 42 33 interrupt-parent = <&intc>; 34 + 35 + twl_audio: audio { 36 + compatible = "ti,twl4030-audio"; 37 + codec { 38 + }; 39 + }; 43 40 }; 44 41 }; 45 42 ··· 69 54 70 55 &twl_gpio { 71 56 ti,use-leds; 57 + }; 58 + 59 + &usb_otg_hs { 60 + interface-type = <0>; 61 + mode = <3>; 62 + power = <50>; 72 63 };
+119 -23
arch/arm/boot/dts/omap3.dtsi
··· 26 26 }; 27 27 }; 28 28 29 + pmu { 30 + compatible = "arm,cortex-a8-pmu"; 31 + interrupts = <3>; 32 + ti,hwmods = "debugss"; 33 + }; 34 + 29 35 /* 30 - * The soc node represents the soc top level view. It is uses for IPs 36 + * The soc node represents the soc top level view. It is used for IPs 31 37 * that are not memory mapped in the MPU view or for the MPU itself. 32 38 */ 33 39 soc { ··· 81 75 reg = <0x48200000 0x1000>; 82 76 }; 83 77 78 + sdma: dma-controller@48056000 { 79 + compatible = "ti,omap3630-sdma", "ti,omap3430-sdma"; 80 + reg = <0x48056000 0x1000>; 81 + interrupts = <12>, 82 + <13>, 83 + <14>, 84 + <15>; 85 + #dma-cells = <1>; 86 + #dma-channels = <32>; 87 + #dma-requests = <96>; 88 + }; 89 + 84 90 omap3_pmx_core: pinmux@48002030 { 85 91 compatible = "ti,omap3-padconf", "pinctrl-single"; 86 92 reg = <0x48002030 0x05cc>; 87 93 #address-cells = <1>; 88 94 #size-cells = <0>; 89 95 pinctrl-single,register-width = <16>; 90 - pinctrl-single,function-mask = <0x7fff>; 96 + pinctrl-single,function-mask = <0x7f1f>; 91 97 }; 92 98 93 - omap3_pmx_wkup: pinmux@0x48002a58 { 99 + omap3_pmx_wkup: pinmux@0x48002a00 { 94 100 compatible = "ti,omap3-padconf", "pinctrl-single"; 95 - reg = <0x48002a58 0x5c>; 101 + reg = <0x48002a00 0x5c>; 96 102 #address-cells = <1>; 97 103 #size-cells = <0>; 98 104 pinctrl-single,register-width = <16>; 99 - pinctrl-single,function-mask = <0x7fff>; 105 + pinctrl-single,function-mask = <0x7f1f>; 100 106 }; 101 107 102 108 gpio1: gpio@48310000 { 103 109 compatible = "ti,omap3-gpio"; 110 + reg = <0x48310000 0x200>; 111 + interrupts = <29>; 104 112 ti,hwmods = "gpio1"; 113 + ti,gpio-always-on; 105 114 gpio-controller; 106 115 #gpio-cells = <2>; 107 116 interrupt-controller; 108 - #interrupt-cells = <1>; 117 + #interrupt-cells = <2>; 109 118 }; 110 119 111 120 gpio2: gpio@49050000 { 112 121 compatible = "ti,omap3-gpio"; 122 + reg = <0x49050000 0x200>; 123 + interrupts = <30>; 113 124 ti,hwmods = "gpio2"; 114 125 gpio-controller; 115 126 #gpio-cells = <2>; 116 127 interrupt-controller; 117 - #interrupt-cells = <1>; 128 + #interrupt-cells = <2>; 118 129 }; 119 130 120 131 gpio3: gpio@49052000 { 121 132 compatible = "ti,omap3-gpio"; 133 + reg = <0x49052000 0x200>; 134 + interrupts = <31>; 122 135 ti,hwmods = "gpio3"; 123 136 gpio-controller; 124 137 #gpio-cells = <2>; 125 138 interrupt-controller; 126 - #interrupt-cells = <1>; 139 + #interrupt-cells = <2>; 127 140 }; 128 141 129 142 gpio4: gpio@49054000 { 130 143 compatible = "ti,omap3-gpio"; 144 + reg = <0x49054000 0x200>; 145 + interrupts = <32>; 131 146 ti,hwmods = "gpio4"; 132 147 gpio-controller; 133 148 #gpio-cells = <2>; 134 149 interrupt-controller; 135 - #interrupt-cells = <1>; 150 + #interrupt-cells = <2>; 136 151 }; 137 152 138 153 gpio5: gpio@49056000 { 139 154 compatible = "ti,omap3-gpio"; 155 + reg = <0x49056000 0x200>; 156 + interrupts = <33>; 140 157 ti,hwmods = "gpio5"; 141 158 gpio-controller; 142 159 #gpio-cells = <2>; 143 160 interrupt-controller; 144 - #interrupt-cells = <1>; 161 + #interrupt-cells = <2>; 145 162 }; 146 163 147 164 gpio6: gpio@49058000 { 148 165 compatible = "ti,omap3-gpio"; 166 + reg = <0x49058000 0x200>; 167 + interrupts = <34>; 149 168 ti,hwmods = "gpio6"; 150 169 gpio-controller; 151 170 #gpio-cells = <2>; 152 171 interrupt-controller; 153 - #interrupt-cells = <1>; 172 + #interrupt-cells = <2>; 154 173 }; 155 174 156 175 uart1: serial@4806a000 { ··· 223 192 #size-cells = <0>; 224 193 ti,hwmods = "mcspi1"; 225 194 ti,spi-num-cs = <4>; 195 + dmas = <&sdma 35>, 196 + <&sdma 36>, 197 + <&sdma 37>, 198 + <&sdma 38>, 199 + <&sdma 39>, 200 + <&sdma 40>, 201 + <&sdma 41>, 202 + <&sdma 42>; 203 + dma-names = "tx0", "rx0", "tx1", "rx1", 204 + "tx2", "rx2", "tx3", "rx3"; 226 205 }; 227 206 228 207 mcspi2: spi@4809a000 { ··· 241 200 #size-cells = <0>; 242 201 ti,hwmods = "mcspi2"; 243 202 ti,spi-num-cs = <2>; 203 + dmas = <&sdma 43>, 204 + <&sdma 44>, 205 + <&sdma 45>, 206 + <&sdma 46>; 207 + dma-names = "tx0", "rx0", "tx1", "rx1"; 244 208 }; 245 209 246 210 mcspi3: spi@480b8000 { ··· 254 208 #size-cells = <0>; 255 209 ti,hwmods = "mcspi3"; 256 210 ti,spi-num-cs = <2>; 211 + dmas = <&sdma 15>, 212 + <&sdma 16>, 213 + <&sdma 23>, 214 + <&sdma 24>; 215 + dma-names = "tx0", "rx0", "tx1", "rx1"; 257 216 }; 258 217 259 218 mcspi4: spi@480ba000 { ··· 267 216 #size-cells = <0>; 268 217 ti,hwmods = "mcspi4"; 269 218 ti,spi-num-cs = <1>; 219 + dmas = <&sdma 70>, <&sdma 71>; 220 + dma-names = "tx0", "rx0"; 270 221 }; 271 222 272 223 mmc1: mmc@4809c000 { 273 224 compatible = "ti,omap3-hsmmc"; 274 225 ti,hwmods = "mmc1"; 275 226 ti,dual-volt; 227 + dmas = <&sdma 61>, <&sdma 62>; 228 + dma-names = "tx", "rx"; 276 229 }; 277 230 278 231 mmc2: mmc@480b4000 { 279 232 compatible = "ti,omap3-hsmmc"; 280 233 ti,hwmods = "mmc2"; 234 + dmas = <&sdma 47>, <&sdma 48>; 235 + dma-names = "tx", "rx"; 281 236 }; 282 237 283 238 mmc3: mmc@480ad000 { 284 239 compatible = "ti,omap3-hsmmc"; 285 240 ti,hwmods = "mmc3"; 241 + dmas = <&sdma 77>, <&sdma 78>; 242 + dma-names = "tx", "rx"; 286 243 }; 287 244 288 245 wdt2: wdt@48314000 { ··· 308 249 interrupt-names = "common", "tx", "rx"; 309 250 ti,buffer-size = <128>; 310 251 ti,hwmods = "mcbsp1"; 252 + dmas = <&sdma 31>, 253 + <&sdma 32>; 254 + dma-names = "tx", "rx"; 311 255 }; 312 256 313 257 mcbsp2: mcbsp@49022000 { ··· 325 263 interrupt-names = "common", "tx", "rx", "sidetone"; 326 264 ti,buffer-size = <1280>; 327 265 ti,hwmods = "mcbsp2", "mcbsp2_sidetone"; 266 + dmas = <&sdma 33>, 267 + <&sdma 34>; 268 + dma-names = "tx", "rx"; 328 269 }; 329 270 330 271 mcbsp3: mcbsp@49024000 { ··· 342 277 interrupt-names = "common", "tx", "rx", "sidetone"; 343 278 ti,buffer-size = <128>; 344 279 ti,hwmods = "mcbsp3", "mcbsp3_sidetone"; 280 + dmas = <&sdma 17>, 281 + <&sdma 18>; 282 + dma-names = "tx", "rx"; 345 283 }; 346 284 347 285 mcbsp4: mcbsp@49026000 { ··· 357 289 interrupt-names = "common", "tx", "rx"; 358 290 ti,buffer-size = <128>; 359 291 ti,hwmods = "mcbsp4"; 292 + dmas = <&sdma 19>, 293 + <&sdma 20>; 294 + dma-names = "tx", "rx"; 360 295 }; 361 296 362 297 mcbsp5: mcbsp@48096000 { ··· 372 301 interrupt-names = "common", "tx", "rx"; 373 302 ti,buffer-size = <128>; 374 303 ti,hwmods = "mcbsp5"; 304 + dmas = <&sdma 21>, 305 + <&sdma 22>; 306 + dma-names = "tx", "rx"; 375 307 }; 376 308 377 309 timer1: timer@48318000 { 378 - compatible = "ti,omap2-timer"; 310 + compatible = "ti,omap3430-timer"; 379 311 reg = <0x48318000 0x400>; 380 312 interrupts = <37>; 381 313 ti,hwmods = "timer1"; ··· 386 312 }; 387 313 388 314 timer2: timer@49032000 { 389 - compatible = "ti,omap2-timer"; 315 + compatible = "ti,omap3430-timer"; 390 316 reg = <0x49032000 0x400>; 391 317 interrupts = <38>; 392 318 ti,hwmods = "timer2"; 393 319 }; 394 320 395 321 timer3: timer@49034000 { 396 - compatible = "ti,omap2-timer"; 322 + compatible = "ti,omap3430-timer"; 397 323 reg = <0x49034000 0x400>; 398 324 interrupts = <39>; 399 325 ti,hwmods = "timer3"; 400 326 }; 401 327 402 328 timer4: timer@49036000 { 403 - compatible = "ti,omap2-timer"; 329 + compatible = "ti,omap3430-timer"; 404 330 reg = <0x49036000 0x400>; 405 331 interrupts = <40>; 406 332 ti,hwmods = "timer4"; 407 333 }; 408 334 409 335 timer5: timer@49038000 { 410 - compatible = "ti,omap2-timer"; 336 + compatible = "ti,omap3430-timer"; 411 337 reg = <0x49038000 0x400>; 412 338 interrupts = <41>; 413 339 ti,hwmods = "timer5"; ··· 415 341 }; 416 342 417 343 timer6: timer@4903a000 { 418 - compatible = "ti,omap2-timer"; 344 + compatible = "ti,omap3430-timer"; 419 345 reg = <0x4903a000 0x400>; 420 346 interrupts = <42>; 421 347 ti,hwmods = "timer6"; ··· 423 349 }; 424 350 425 351 timer7: timer@4903c000 { 426 - compatible = "ti,omap2-timer"; 352 + compatible = "ti,omap3430-timer"; 427 353 reg = <0x4903c000 0x400>; 428 354 interrupts = <43>; 429 355 ti,hwmods = "timer7"; ··· 431 357 }; 432 358 433 359 timer8: timer@4903e000 { 434 - compatible = "ti,omap2-timer"; 360 + compatible = "ti,omap3430-timer"; 435 361 reg = <0x4903e000 0x400>; 436 362 interrupts = <44>; 437 363 ti,hwmods = "timer8"; ··· 440 366 }; 441 367 442 368 timer9: timer@49040000 { 443 - compatible = "ti,omap2-timer"; 369 + compatible = "ti,omap3430-timer"; 444 370 reg = <0x49040000 0x400>; 445 371 interrupts = <45>; 446 372 ti,hwmods = "timer9"; ··· 448 374 }; 449 375 450 376 timer10: timer@48086000 { 451 - compatible = "ti,omap2-timer"; 377 + compatible = "ti,omap3430-timer"; 452 378 reg = <0x48086000 0x400>; 453 379 interrupts = <46>; 454 380 ti,hwmods = "timer10"; ··· 456 382 }; 457 383 458 384 timer11: timer@48088000 { 459 - compatible = "ti,omap2-timer"; 385 + compatible = "ti,omap3430-timer"; 460 386 reg = <0x48088000 0x400>; 461 387 interrupts = <47>; 462 388 ti,hwmods = "timer11"; ··· 464 390 }; 465 391 466 392 timer12: timer@48304000 { 467 - compatible = "ti,omap2-timer"; 393 + compatible = "ti,omap3430-timer"; 468 394 reg = <0x48304000 0x400>; 469 395 interrupts = <95>; 470 396 ti,hwmods = "timer12"; ··· 502 428 }; 503 429 }; 504 430 431 + gpmc: gpmc@6e000000 { 432 + compatible = "ti,omap3430-gpmc"; 433 + ti,hwmods = "gpmc"; 434 + reg = <0x6e000000 0x02d0>; 435 + interrupts = <20>; 436 + gpmc,num-cs = <8>; 437 + gpmc,num-waitpins = <4>; 438 + #address-cells = <2>; 439 + #size-cells = <1>; 440 + }; 441 + 442 + usb_otg_hs: usb_otg_hs@480ab000 { 443 + compatible = "ti,omap3-musb"; 444 + reg = <0x480ab000 0x1000>; 445 + interrupts = <0 92 0x4>, <0 93 0x4>; 446 + interrupt-names = "mc", "dma"; 447 + ti,hwmods = "usb_otg_hs"; 448 + usb-phy = <&usb2_phy>; 449 + multipoint = <1>; 450 + num-eps = <16>; 451 + ram-bits = <12>; 452 + }; 505 453 }; 506 454 };
+190
arch/arm/boot/dts/omap3430-sdp.dts
··· 1 + /* 2 + * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ 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 version 2 as 6 + * published by the Free Software Foundation. 7 + */ 8 + /dts-v1/; 9 + 10 + /include/ "omap34xx.dtsi" 11 + 12 + / { 13 + model = "TI OMAP3430 SDP"; 14 + compatible = "ti,omap3430-sdp", "ti,omap3"; 15 + 16 + memory { 17 + device_type = "memory"; 18 + reg = <0x80000000 0x10000000>; /* 256 MB */ 19 + }; 20 + }; 21 + 22 + &i2c1 { 23 + clock-frequency = <2600000>; 24 + 25 + twl: twl@48 { 26 + reg = <0x48>; 27 + interrupts = <7>; /* SYS_NIRQ cascaded to intc */ 28 + }; 29 + }; 30 + 31 + /include/ "twl4030.dtsi" 32 + 33 + &mmc1 { 34 + vmmc-supply = <&vmmc1>; 35 + vmmc_aux-supply = <&vsim>; 36 + bus-width = <8>; 37 + }; 38 + 39 + &mmc2 { 40 + status = "disabled"; 41 + }; 42 + 43 + &mmc3 { 44 + status = "disabled"; 45 + }; 46 + 47 + &gpmc { 48 + ranges = <0 0 0x10000000 0x08000000>, 49 + <1 0 0x28000000 0x08000000>, 50 + <2 0 0x20000000 0x10000000>; 51 + 52 + nor@0,0 { 53 + compatible = "cfi-flash"; 54 + linux,mtd-name= "intel,pf48f6000m0y1be"; 55 + #address-cells = <1>; 56 + #size-cells = <1>; 57 + reg = <0 0 0x08000000>; 58 + bank-width = <2>; 59 + 60 + gpmc,mux-add-data = <2>; 61 + gpmc,cs-on-ns = <0>; 62 + gpmc,cs-rd-off-ns = <186>; 63 + gpmc,cs-wr-off-ns = <186>; 64 + gpmc,adv-on-ns = <12>; 65 + gpmc,adv-rd-off-ns = <48>; 66 + gpmc,adv-wr-off-ns = <48>; 67 + gpmc,oe-on-ns = <54>; 68 + gpmc,oe-off-ns = <168>; 69 + gpmc,we-on-ns = <54>; 70 + gpmc,we-off-ns = <168>; 71 + gpmc,rd-cycle-ns = <186>; 72 + gpmc,wr-cycle-ns = <186>; 73 + gpmc,access-ns = <114>; 74 + gpmc,page-burst-access-ns = <6>; 75 + gpmc,bus-turnaround-ns = <12>; 76 + gpmc,cycle2cycle-delay-ns = <18>; 77 + gpmc,wr-data-mux-bus-ns = <90>; 78 + gpmc,wr-access-ns = <186>; 79 + gpmc,cycle2cycle-samecsen; 80 + gpmc,cycle2cycle-diffcsen; 81 + 82 + partition@0 { 83 + label = "bootloader-nor"; 84 + reg = <0 0x40000>; 85 + }; 86 + partition@0x40000 { 87 + label = "params-nor"; 88 + reg = <0x40000 0x40000>; 89 + }; 90 + partition@0x80000 { 91 + label = "kernel-nor"; 92 + reg = <0x80000 0x200000>; 93 + }; 94 + partition@0x280000 { 95 + label = "filesystem-nor"; 96 + reg = <0x240000 0x7d80000>; 97 + }; 98 + }; 99 + 100 + nand@1,0 { 101 + linux,mtd-name= "micron,mt29f1g08abb"; 102 + #address-cells = <1>; 103 + #size-cells = <1>; 104 + reg = <1 0 0x08000000>; 105 + nand-bus-width = <8>; 106 + 107 + ti,nand-ecc-opt = "sw"; 108 + gpmc,device-nand; 109 + gpmc,cs-on-ns = <0>; 110 + gpmc,cs-rd-off-ns = <36>; 111 + gpmc,cs-wr-off-ns = <36>; 112 + gpmc,adv-on-ns = <6>; 113 + gpmc,adv-rd-off-ns = <24>; 114 + gpmc,adv-wr-off-ns = <36>; 115 + gpmc,oe-on-ns = <6>; 116 + gpmc,oe-off-ns = <48>; 117 + gpmc,we-on-ns = <6>; 118 + gpmc,we-off-ns = <30>; 119 + gpmc,rd-cycle-ns = <72>; 120 + gpmc,wr-cycle-ns = <72>; 121 + gpmc,access-ns = <54>; 122 + gpmc,wr-access-ns = <30>; 123 + 124 + partition@0 { 125 + label = "xloader-nand"; 126 + reg = <0 0x80000>; 127 + }; 128 + partition@0x80000 { 129 + label = "bootloader-nand"; 130 + reg = <0x80000 0x140000>; 131 + }; 132 + partition@0x1c0000 { 133 + label = "params-nand"; 134 + reg = <0x1c0000 0xc0000>; 135 + }; 136 + partition@0x280000 { 137 + label = "kernel-nand"; 138 + reg = <0x280000 0x500000>; 139 + }; 140 + partition@0x780000 { 141 + label = "filesystem-nand"; 142 + reg = <0x780000 0x7880000>; 143 + }; 144 + }; 145 + 146 + onenand@2,0 { 147 + linux,mtd-name= "samsung,kfm2g16q2m-deb8"; 148 + #address-cells = <1>; 149 + #size-cells = <1>; 150 + reg = <2 0 0x10000000>; 151 + 152 + gpmc,device-width = <2>; 153 + gpmc,mux-add-data = <2>; 154 + gpmc,cs-on-ns = <0>; 155 + gpmc,cs-rd-off-ns = <84>; 156 + gpmc,cs-wr-off-ns = <72>; 157 + gpmc,adv-on-ns = <0>; 158 + gpmc,adv-rd-off-ns = <18>; 159 + gpmc,adv-wr-off-ns = <18>; 160 + gpmc,oe-on-ns = <30>; 161 + gpmc,oe-off-ns = <84>; 162 + gpmc,we-on-ns = <0>; 163 + gpmc,we-off-ns = <42>; 164 + gpmc,rd-cycle-ns = <108>; 165 + gpmc,wr-cycle-ns = <96>; 166 + gpmc,access-ns = <78>; 167 + gpmc,wr-data-mux-bus-ns = <30>; 168 + 169 + partition@0 { 170 + label = "xloader-onenand"; 171 + reg = <0 0x80000>; 172 + }; 173 + partition@0x80000 { 174 + label = "bootloader-onenand"; 175 + reg = <0x80000 0x40000>; 176 + }; 177 + partition@0xc0000 { 178 + label = "params-onenand"; 179 + reg = <0xc0000 0x20000>; 180 + }; 181 + partition@0xe0000 { 182 + label = "kernel-onenand"; 183 + reg = <0xe0000 0x200000>; 184 + }; 185 + partition@0x2e0000 { 186 + label = "filesystem-onenand"; 187 + reg = <0x2e0000 0xfd20000>; 188 + }; 189 + }; 190 + };
+28
arch/arm/boot/dts/omap34xx.dtsi
··· 1 + /* 2 + * Device Tree Source for OMAP34xx/OMAP35xx SoC 3 + * 4 + * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ 5 + * 6 + * This file is licensed under the terms of the GNU General Public License 7 + * version 2. This program is licensed "as is" without any warranty of any 8 + * kind, whether express or implied. 9 + */ 10 + 11 + /include/ "omap3.dtsi" 12 + 13 + / { 14 + cpus { 15 + cpu@0 { 16 + /* OMAP343x/OMAP35xx variants OPP1-5 */ 17 + operating-points = < 18 + /* kHz uV */ 19 + 125000 975000 20 + 250000 1075000 21 + 500000 1200000 22 + 550000 1270000 23 + 600000 1350000 24 + >; 25 + clock-latency = <300000>; /* From legacy driver */ 26 + }; 27 + }; 28 + };
+13
arch/arm/boot/dts/omap36xx.dtsi
··· 15 15 serial3 = &uart4; 16 16 }; 17 17 18 + cpus { 19 + /* OMAP3630/OMAP37xx 'standard device' variants OPP50 to OPP130 */ 20 + cpu@0 { 21 + operating-points = < 22 + /* kHz uV */ 23 + 300000 975000 24 + 600000 1075000 25 + 800000 1200000 26 + >; 27 + clock-latency = <300000>; /* From legacy driver */ 28 + }; 29 + }; 30 + 18 31 ocp { 19 32 uart4: serial@49042000 { 20 33 compatible = "ti,omap3-uart";
+4 -1
arch/arm/boot/dts/omap4-panda-a4.dts
··· 5 5 * it under the terms of the GNU General Public License version 2 as 6 6 * published by the Free Software Foundation. 7 7 */ 8 - /include/ "omap4-panda.dts" 8 + /dts-v1/; 9 + 10 + /include/ "omap443x.dtsi" 11 + /include/ "omap4-panda-common.dtsi" 9 12 10 13 /* Pandaboard Rev A4+ have external pullups on SCL & SDA */ 11 14 &dss_hdmi_pins {
+251
arch/arm/boot/dts/omap4-panda-common.dtsi
··· 1 + /* 2 + * Copyright (C) 2011-2013 Texas Instruments Incorporated - http://www.ti.com/ 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 version 2 as 6 + * published by the Free Software Foundation. 7 + */ 8 + /include/ "elpida_ecb240abacn.dtsi" 9 + 10 + / { 11 + model = "TI OMAP4 PandaBoard"; 12 + compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4"; 13 + 14 + memory { 15 + device_type = "memory"; 16 + reg = <0x80000000 0x40000000>; /* 1 GB */ 17 + }; 18 + 19 + leds { 20 + compatible = "gpio-leds"; 21 + heartbeat { 22 + label = "pandaboard::status1"; 23 + gpios = <&gpio1 7 0>; 24 + linux,default-trigger = "heartbeat"; 25 + }; 26 + 27 + mmc { 28 + label = "pandaboard::status2"; 29 + gpios = <&gpio1 8 0>; 30 + linux,default-trigger = "mmc0"; 31 + }; 32 + }; 33 + 34 + sound: sound { 35 + compatible = "ti,abe-twl6040"; 36 + ti,model = "PandaBoard"; 37 + 38 + ti,mclk-freq = <38400000>; 39 + 40 + ti,mcpdm = <&mcpdm>; 41 + 42 + ti,twl6040 = <&twl6040>; 43 + 44 + /* Audio routing */ 45 + ti,audio-routing = 46 + "Headset Stereophone", "HSOL", 47 + "Headset Stereophone", "HSOR", 48 + "Ext Spk", "HFL", 49 + "Ext Spk", "HFR", 50 + "Line Out", "AUXL", 51 + "Line Out", "AUXR", 52 + "HSMIC", "Headset Mic", 53 + "Headset Mic", "Headset Mic Bias", 54 + "AFML", "Line In", 55 + "AFMR", "Line In"; 56 + }; 57 + }; 58 + 59 + &omap4_pmx_core { 60 + pinctrl-names = "default"; 61 + pinctrl-0 = < 62 + &twl6040_pins 63 + &mcpdm_pins 64 + &mcbsp1_pins 65 + &dss_hdmi_pins 66 + &tpd12s015_pins 67 + >; 68 + 69 + twl6040_pins: pinmux_twl6040_pins { 70 + pinctrl-single,pins = < 71 + 0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */ 72 + 0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */ 73 + >; 74 + }; 75 + 76 + mcpdm_pins: pinmux_mcpdm_pins { 77 + pinctrl-single,pins = < 78 + 0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */ 79 + 0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */ 80 + 0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */ 81 + 0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */ 82 + 0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */ 83 + >; 84 + }; 85 + 86 + mcbsp1_pins: pinmux_mcbsp1_pins { 87 + pinctrl-single,pins = < 88 + 0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */ 89 + 0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */ 90 + 0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */ 91 + 0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */ 92 + >; 93 + }; 94 + 95 + dss_hdmi_pins: pinmux_dss_hdmi_pins { 96 + pinctrl-single,pins = < 97 + 0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */ 98 + 0x5c 0x118 /* hdmi_scl.hdmi_scl INPUT PULLUP | MODE 0 */ 99 + 0x5e 0x118 /* hdmi_sda.hdmi_sda INPUT PULLUP | MODE 0 */ 100 + >; 101 + }; 102 + 103 + tpd12s015_pins: pinmux_tpd12s015_pins { 104 + pinctrl-single,pins = < 105 + 0x22 0x3 /* gpmc_a17.gpio_41 OUTPUT | MODE3 */ 106 + 0x48 0x3 /* gpmc_nbe1.gpio_60 OUTPUT | MODE3 */ 107 + 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */ 108 + >; 109 + }; 110 + 111 + i2c1_pins: pinmux_i2c1_pins { 112 + pinctrl-single,pins = < 113 + 0xe2 0x118 /* i2c1_scl PULLUP | INPUTENABLE | MODE0 */ 114 + 0xe4 0x118 /* i2c1_sda PULLUP | INPUTENABLE | MODE0 */ 115 + >; 116 + }; 117 + 118 + i2c2_pins: pinmux_i2c2_pins { 119 + pinctrl-single,pins = < 120 + 0xe6 0x118 /* i2c2_scl PULLUP | INPUTENABLE | MODE0 */ 121 + 0xe8 0x118 /* i2c2_sda PULLUP | INPUTENABLE | MODE0 */ 122 + >; 123 + }; 124 + 125 + i2c3_pins: pinmux_i2c3_pins { 126 + pinctrl-single,pins = < 127 + 0xea 0x118 /* i2c3_scl PULLUP | INPUTENABLE | MODE0 */ 128 + 0xec 0x118 /* i2c3_sda PULLUP | INPUTENABLE | MODE0 */ 129 + >; 130 + }; 131 + 132 + i2c4_pins: pinmux_i2c4_pins { 133 + pinctrl-single,pins = < 134 + 0xee 0x118 /* i2c4_scl PULLUP | INPUTENABLE | MODE0 */ 135 + 0xf0 0x118 /* i2c4_sda PULLUP | INPUTENABLE | MODE0 */ 136 + >; 137 + }; 138 + }; 139 + 140 + &i2c1 { 141 + pinctrl-names = "default"; 142 + pinctrl-0 = <&i2c1_pins>; 143 + 144 + clock-frequency = <400000>; 145 + 146 + twl: twl@48 { 147 + reg = <0x48>; 148 + /* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */ 149 + interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */ 150 + interrupt-parent = <&gic>; 151 + }; 152 + 153 + twl6040: twl@4b { 154 + compatible = "ti,twl6040"; 155 + reg = <0x4b>; 156 + /* SPI = 0, IRQ# = 119, 4 = active high level-sensitive */ 157 + interrupts = <0 119 4>; /* IRQ_SYS_2N cascaded to gic */ 158 + interrupt-parent = <&gic>; 159 + ti,audpwron-gpio = <&gpio4 31 0>; /* gpio line 127 */ 160 + 161 + vio-supply = <&v1v8>; 162 + v2v1-supply = <&v2v1>; 163 + enable-active-high; 164 + }; 165 + }; 166 + 167 + /include/ "twl6030.dtsi" 168 + 169 + &i2c2 { 170 + pinctrl-names = "default"; 171 + pinctrl-0 = <&i2c2_pins>; 172 + 173 + clock-frequency = <400000>; 174 + }; 175 + 176 + &i2c3 { 177 + pinctrl-names = "default"; 178 + pinctrl-0 = <&i2c3_pins>; 179 + 180 + clock-frequency = <100000>; 181 + 182 + /* 183 + * Display monitor features are burnt in their EEPROM as EDID data. 184 + * The EEPROM is connected as I2C slave device. 185 + */ 186 + eeprom@50 { 187 + compatible = "ti,eeprom"; 188 + reg = <0x50>; 189 + }; 190 + }; 191 + 192 + &i2c4 { 193 + pinctrl-names = "default"; 194 + pinctrl-0 = <&i2c4_pins>; 195 + 196 + clock-frequency = <400000>; 197 + }; 198 + 199 + &mmc1 { 200 + vmmc-supply = <&vmmc>; 201 + bus-width = <8>; 202 + }; 203 + 204 + &mmc2 { 205 + status = "disabled"; 206 + }; 207 + 208 + &mmc3 { 209 + status = "disabled"; 210 + }; 211 + 212 + &mmc4 { 213 + status = "disabled"; 214 + }; 215 + 216 + &mmc5 { 217 + ti,non-removable; 218 + bus-width = <4>; 219 + }; 220 + 221 + &emif1 { 222 + cs1-used; 223 + device-handle = <&elpida_ECB240ABACN>; 224 + }; 225 + 226 + &emif2 { 227 + cs1-used; 228 + device-handle = <&elpida_ECB240ABACN>; 229 + }; 230 + 231 + &mcbsp2 { 232 + status = "disabled"; 233 + }; 234 + 235 + &mcbsp3 { 236 + status = "disabled"; 237 + }; 238 + 239 + &dmic { 240 + status = "disabled"; 241 + }; 242 + 243 + &twl_usb_comparator { 244 + usb-supply = <&vusb>; 245 + }; 246 + 247 + &usb_otg_hs { 248 + interface-type = <1>; 249 + mode = <3>; 250 + power = <50>; 251 + };
+4 -1
arch/arm/boot/dts/omap4-panda-es.dts
··· 5 5 * it under the terms of the GNU General Public License version 2 as 6 6 * published by the Free Software Foundation. 7 7 */ 8 - /include/ "omap4-panda.dts" 8 + /dts-v1/; 9 + 10 + /include/ "omap4460.dtsi" 11 + /include/ "omap4-panda-common.dtsi" 9 12 10 13 /* Audio routing is differnet between PandaBoard4430 and PandaBoardES */ 11 14 &sound {
+2 -199
arch/arm/boot/dts/omap4-panda.dts
··· 7 7 */ 8 8 /dts-v1/; 9 9 10 - /include/ "omap4.dtsi" 11 - /include/ "elpida_ecb240abacn.dtsi" 12 - 13 - / { 14 - model = "TI OMAP4 PandaBoard"; 15 - compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4"; 16 - 17 - memory { 18 - device_type = "memory"; 19 - reg = <0x80000000 0x40000000>; /* 1 GB */ 20 - }; 21 - 22 - leds { 23 - compatible = "gpio-leds"; 24 - heartbeat { 25 - label = "pandaboard::status1"; 26 - gpios = <&gpio1 7 0>; 27 - linux,default-trigger = "heartbeat"; 28 - }; 29 - 30 - mmc { 31 - label = "pandaboard::status2"; 32 - gpios = <&gpio1 8 0>; 33 - linux,default-trigger = "mmc0"; 34 - }; 35 - }; 36 - 37 - sound: sound { 38 - compatible = "ti,abe-twl6040"; 39 - ti,model = "PandaBoard"; 40 - 41 - ti,mclk-freq = <38400000>; 42 - 43 - ti,mcpdm = <&mcpdm>; 44 - 45 - ti,twl6040 = <&twl6040>; 46 - 47 - /* Audio routing */ 48 - ti,audio-routing = 49 - "Headset Stereophone", "HSOL", 50 - "Headset Stereophone", "HSOR", 51 - "Ext Spk", "HFL", 52 - "Ext Spk", "HFR", 53 - "Line Out", "AUXL", 54 - "Line Out", "AUXR", 55 - "HSMIC", "Headset Mic", 56 - "Headset Mic", "Headset Mic Bias", 57 - "AFML", "Line In", 58 - "AFMR", "Line In"; 59 - }; 60 - }; 61 - 62 - &omap4_pmx_core { 63 - pinctrl-names = "default"; 64 - pinctrl-0 = < 65 - &twl6040_pins 66 - &mcpdm_pins 67 - &mcbsp1_pins 68 - &dss_hdmi_pins 69 - &tpd12s015_pins 70 - >; 71 - 72 - twl6040_pins: pinmux_twl6040_pins { 73 - pinctrl-single,pins = < 74 - 0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */ 75 - 0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */ 76 - >; 77 - }; 78 - 79 - mcpdm_pins: pinmux_mcpdm_pins { 80 - pinctrl-single,pins = < 81 - 0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */ 82 - 0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */ 83 - 0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */ 84 - 0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */ 85 - 0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */ 86 - >; 87 - }; 88 - 89 - mcbsp1_pins: pinmux_mcbsp1_pins { 90 - pinctrl-single,pins = < 91 - 0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */ 92 - 0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */ 93 - 0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */ 94 - 0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */ 95 - >; 96 - }; 97 - 98 - dss_hdmi_pins: pinmux_dss_hdmi_pins { 99 - pinctrl-single,pins = < 100 - 0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */ 101 - 0x5c 0x118 /* hdmi_scl.hdmi_scl INPUT PULLUP | MODE 0 */ 102 - 0x5e 0x118 /* hdmi_sda.hdmi_sda INPUT PULLUP | MODE 0 */ 103 - >; 104 - }; 105 - 106 - tpd12s015_pins: pinmux_tpd12s015_pins { 107 - pinctrl-single,pins = < 108 - 0x22 0x3 /* gpmc_a17.gpio_41 OUTPUT | MODE3 */ 109 - 0x48 0x3 /* gpmc_nbe1.gpio_60 OUTPUT | MODE3 */ 110 - 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */ 111 - >; 112 - }; 113 - }; 114 - 115 - &i2c1 { 116 - clock-frequency = <400000>; 117 - 118 - twl: twl@48 { 119 - reg = <0x48>; 120 - /* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */ 121 - interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */ 122 - interrupt-parent = <&gic>; 123 - }; 124 - 125 - twl6040: twl@4b { 126 - compatible = "ti,twl6040"; 127 - reg = <0x4b>; 128 - /* SPI = 0, IRQ# = 119, 4 = active high level-sensitive */ 129 - interrupts = <0 119 4>; /* IRQ_SYS_2N cascaded to gic */ 130 - interrupt-parent = <&gic>; 131 - ti,audpwron-gpio = <&gpio4 31 0>; /* gpio line 127 */ 132 - 133 - vio-supply = <&v1v8>; 134 - v2v1-supply = <&v2v1>; 135 - enable-active-high; 136 - }; 137 - }; 138 - 139 - /include/ "twl6030.dtsi" 140 - 141 - &i2c2 { 142 - clock-frequency = <400000>; 143 - }; 144 - 145 - &i2c3 { 146 - clock-frequency = <100000>; 147 - 148 - /* 149 - * Display monitor features are burnt in their EEPROM as EDID data. 150 - * The EEPROM is connected as I2C slave device. 151 - */ 152 - eeprom@50 { 153 - compatible = "ti,eeprom"; 154 - reg = <0x50>; 155 - }; 156 - }; 157 - 158 - &i2c4 { 159 - clock-frequency = <400000>; 160 - }; 161 - 162 - &mmc1 { 163 - vmmc-supply = <&vmmc>; 164 - bus-width = <8>; 165 - }; 166 - 167 - &mmc2 { 168 - status = "disabled"; 169 - }; 170 - 171 - &mmc3 { 172 - status = "disabled"; 173 - }; 174 - 175 - &mmc4 { 176 - status = "disabled"; 177 - }; 178 - 179 - &mmc5 { 180 - ti,non-removable; 181 - bus-width = <4>; 182 - }; 183 - 184 - &emif1 { 185 - cs1-used; 186 - device-handle = <&elpida_ECB240ABACN>; 187 - }; 188 - 189 - &emif2 { 190 - cs1-used; 191 - device-handle = <&elpida_ECB240ABACN>; 192 - }; 193 - 194 - &mcbsp2 { 195 - status = "disabled"; 196 - }; 197 - 198 - &mcbsp3 { 199 - status = "disabled"; 200 - }; 201 - 202 - &dmic { 203 - status = "disabled"; 204 - }; 205 - 206 - &twl_usb_comparator { 207 - usb-supply = <&vusb>; 208 - }; 10 + /include/ "omap443x.dtsi" 11 + /include/ "omap4-panda-common.dtsi"
+73 -1
arch/arm/boot/dts/omap4-sdp.dts
··· 7 7 */ 8 8 /dts-v1/; 9 9 10 - /include/ "omap4.dtsi" 10 + /include/ "omap443x.dtsi" 11 11 /include/ "elpida_ecb240abacn.dtsi" 12 12 13 13 / { ··· 78 78 label = "omap4:green:user"; 79 79 gpios = <&gpio5 11 0>; /* 139 */ 80 80 }; 81 + }; 82 + 83 + pwmleds { 84 + compatible = "pwm-leds"; 85 + kpad { 86 + label = "omap4::keypad"; 87 + pwms = <&twl_pwm 0 7812500>; 88 + max-brightness = <127>; 89 + }; 90 + 91 + charging { 92 + label = "omap4:green:chrg"; 93 + pwms = <&twl_pwmled 0 7812500>; 94 + max-brightness = <255>; 95 + }; 96 + }; 97 + 98 + backlight { 99 + compatible = "pwm-backlight"; 100 + pwms = <&twl_pwm 1 7812500>; 101 + brightness-levels = < 102 + 0 10 20 30 40 103 + 50 60 70 80 90 104 + 100 110 120 127 105 + >; 106 + default-brightness-level = <13>; 81 107 }; 82 108 83 109 sound { ··· 238 212 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */ 239 213 >; 240 214 }; 215 + 216 + i2c1_pins: pinmux_i2c1_pins { 217 + pinctrl-single,pins = < 218 + 0xe2 0x118 /* i2c1_scl PULLUP | INPUTENABLE | MODE0 */ 219 + 0xe4 0x118 /* i2c1_sda PULLUP | INPUTENABLE | MODE0 */ 220 + >; 221 + }; 222 + 223 + i2c2_pins: pinmux_i2c2_pins { 224 + pinctrl-single,pins = < 225 + 0xe6 0x118 /* i2c2_scl PULLUP | INPUTENABLE | MODE0 */ 226 + 0xe8 0x118 /* i2c2_sda PULLUP | INPUTENABLE | MODE0 */ 227 + >; 228 + }; 229 + 230 + i2c3_pins: pinmux_i2c3_pins { 231 + pinctrl-single,pins = < 232 + 0xea 0x118 /* i2c3_scl PULLUP | INPUTENABLE | MODE0 */ 233 + 0xec 0x118 /* i2c3_sda PULLUP | INPUTENABLE | MODE0 */ 234 + >; 235 + }; 236 + 237 + i2c4_pins: pinmux_i2c4_pins { 238 + pinctrl-single,pins = < 239 + 0xee 0x118 /* i2c4_scl PULLUP | INPUTENABLE | MODE0 */ 240 + 0xf0 0x118 /* i2c4_sda PULLUP | INPUTENABLE | MODE0 */ 241 + >; 242 + }; 241 243 }; 242 244 243 245 &i2c1 { 246 + pinctrl-names = "default"; 247 + pinctrl-0 = <&i2c1_pins>; 248 + 244 249 clock-frequency = <400000>; 245 250 246 251 twl: twl@48 { ··· 310 253 /include/ "twl6030.dtsi" 311 254 312 255 &i2c2 { 256 + pinctrl-names = "default"; 257 + pinctrl-0 = <&i2c2_pins>; 258 + 313 259 clock-frequency = <400000>; 314 260 }; 315 261 316 262 &i2c3 { 263 + pinctrl-names = "default"; 264 + pinctrl-0 = <&i2c3_pins>; 265 + 317 266 clock-frequency = <400000>; 318 267 319 268 /* ··· 342 279 }; 343 280 344 281 &i2c4 { 282 + pinctrl-names = "default"; 283 + pinctrl-0 = <&i2c4_pins>; 284 + 345 285 clock-frequency = <400000>; 346 286 347 287 /* ··· 493 427 494 428 &twl_usb_comparator { 495 429 usb-supply = <&vusb>; 430 + }; 431 + 432 + &usb_otg_hs { 433 + interface-type = <1>; 434 + mode = <3>; 435 + power = <50>; 496 436 };
+1 -1
arch/arm/boot/dts/omap4-var-som.dts
··· 7 7 */ 8 8 /dts-v1/; 9 9 10 - /include/ "omap4.dtsi" 10 + /include/ "omap443x.dtsi" 11 11 12 12 / { 13 13 model = "Variscite OMAP4 SOM";
+118 -17
arch/arm/boot/dts/omap4.dtsi
··· 94 94 #size-cells = <1>; 95 95 ranges; 96 96 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; 97 + reg = <0x44000000 0x1000>, 98 + <0x44800000 0x2000>, 99 + <0x45000000 0x1000>; 100 + interrupts = <0 9 0x4>, 101 + <0 10 0x4>; 97 102 98 103 counter32k: counter@4a304000 { 99 104 compatible = "ti,omap-counter32k"; ··· 123 118 pinctrl-single,function-mask = <0x7fff>; 124 119 }; 125 120 121 + sdma: dma-controller@4a056000 { 122 + compatible = "ti,omap4430-sdma"; 123 + reg = <0x4a056000 0x1000>; 124 + interrupts = <0 12 0x4>, 125 + <0 13 0x4>, 126 + <0 14 0x4>, 127 + <0 15 0x4>; 128 + #dma-cells = <1>; 129 + #dma-channels = <32>; 130 + #dma-requests = <127>; 131 + }; 132 + 126 133 gpio1: gpio@4a310000 { 127 134 compatible = "ti,omap4-gpio"; 128 135 reg = <0x4a310000 0x200>; 129 136 interrupts = <0 29 0x4>; 130 137 ti,hwmods = "gpio1"; 138 + ti,gpio-always-on; 131 139 gpio-controller; 132 140 #gpio-cells = <2>; 133 141 interrupt-controller; 134 - #interrupt-cells = <1>; 142 + #interrupt-cells = <2>; 135 143 }; 136 144 137 145 gpio2: gpio@48055000 { ··· 155 137 gpio-controller; 156 138 #gpio-cells = <2>; 157 139 interrupt-controller; 158 - #interrupt-cells = <1>; 140 + #interrupt-cells = <2>; 159 141 }; 160 142 161 143 gpio3: gpio@48057000 { ··· 166 148 gpio-controller; 167 149 #gpio-cells = <2>; 168 150 interrupt-controller; 169 - #interrupt-cells = <1>; 151 + #interrupt-cells = <2>; 170 152 }; 171 153 172 154 gpio4: gpio@48059000 { ··· 177 159 gpio-controller; 178 160 #gpio-cells = <2>; 179 161 interrupt-controller; 180 - #interrupt-cells = <1>; 162 + #interrupt-cells = <2>; 181 163 }; 182 164 183 165 gpio5: gpio@4805b000 { ··· 188 170 gpio-controller; 189 171 #gpio-cells = <2>; 190 172 interrupt-controller; 191 - #interrupt-cells = <1>; 173 + #interrupt-cells = <2>; 192 174 }; 193 175 194 176 gpio6: gpio@4805d000 { ··· 199 181 gpio-controller; 200 182 #gpio-cells = <2>; 201 183 interrupt-controller; 202 - #interrupt-cells = <1>; 184 + #interrupt-cells = <2>; 185 + }; 186 + 187 + gpmc: gpmc@50000000 { 188 + compatible = "ti,omap4430-gpmc"; 189 + reg = <0x50000000 0x1000>; 190 + #address-cells = <2>; 191 + #size-cells = <1>; 192 + interrupts = <0 20 0x4>; 193 + gpmc,num-cs = <8>; 194 + gpmc,num-waitpins = <4>; 195 + ti,hwmods = "gpmc"; 203 196 }; 204 197 205 198 uart1: serial@4806a000 { ··· 289 260 #size-cells = <0>; 290 261 ti,hwmods = "mcspi1"; 291 262 ti,spi-num-cs = <4>; 263 + dmas = <&sdma 35>, 264 + <&sdma 36>, 265 + <&sdma 37>, 266 + <&sdma 38>, 267 + <&sdma 39>, 268 + <&sdma 40>, 269 + <&sdma 41>, 270 + <&sdma 42>; 271 + dma-names = "tx0", "rx0", "tx1", "rx1", 272 + "tx2", "rx2", "tx3", "rx3"; 292 273 }; 293 274 294 275 mcspi2: spi@4809a000 { ··· 309 270 #size-cells = <0>; 310 271 ti,hwmods = "mcspi2"; 311 272 ti,spi-num-cs = <2>; 273 + dmas = <&sdma 43>, 274 + <&sdma 44>, 275 + <&sdma 45>, 276 + <&sdma 46>; 277 + dma-names = "tx0", "rx0", "tx1", "rx1"; 312 278 }; 313 279 314 280 mcspi3: spi@480b8000 { ··· 324 280 #size-cells = <0>; 325 281 ti,hwmods = "mcspi3"; 326 282 ti,spi-num-cs = <2>; 283 + dmas = <&sdma 15>, <&sdma 16>; 284 + dma-names = "tx0", "rx0"; 327 285 }; 328 286 329 287 mcspi4: spi@480ba000 { ··· 336 290 #size-cells = <0>; 337 291 ti,hwmods = "mcspi4"; 338 292 ti,spi-num-cs = <1>; 293 + dmas = <&sdma 70>, <&sdma 71>; 294 + dma-names = "tx0", "rx0"; 339 295 }; 340 296 341 297 mmc1: mmc@4809c000 { ··· 347 299 ti,hwmods = "mmc1"; 348 300 ti,dual-volt; 349 301 ti,needs-special-reset; 302 + dmas = <&sdma 61>, <&sdma 62>; 303 + dma-names = "tx", "rx"; 350 304 }; 351 305 352 306 mmc2: mmc@480b4000 { ··· 357 307 interrupts = <0 86 0x4>; 358 308 ti,hwmods = "mmc2"; 359 309 ti,needs-special-reset; 310 + dmas = <&sdma 47>, <&sdma 48>; 311 + dma-names = "tx", "rx"; 360 312 }; 361 313 362 314 mmc3: mmc@480ad000 { ··· 367 315 interrupts = <0 94 0x4>; 368 316 ti,hwmods = "mmc3"; 369 317 ti,needs-special-reset; 318 + dmas = <&sdma 77>, <&sdma 78>; 319 + dma-names = "tx", "rx"; 370 320 }; 371 321 372 322 mmc4: mmc@480d1000 { ··· 377 323 interrupts = <0 96 0x4>; 378 324 ti,hwmods = "mmc4"; 379 325 ti,needs-special-reset; 326 + dmas = <&sdma 57>, <&sdma 58>; 327 + dma-names = "tx", "rx"; 380 328 }; 381 329 382 330 mmc5: mmc@480d5000 { ··· 387 331 interrupts = <0 59 0x4>; 388 332 ti,hwmods = "mmc5"; 389 333 ti,needs-special-reset; 334 + dmas = <&sdma 59>, <&sdma 60>; 335 + dma-names = "tx", "rx"; 390 336 }; 391 337 392 338 wdt2: wdt@4a314000 { ··· 405 347 reg-names = "mpu", "dma"; 406 348 interrupts = <0 112 0x4>; 407 349 ti,hwmods = "mcpdm"; 350 + dmas = <&sdma 65>, 351 + <&sdma 66>; 352 + dma-names = "up_link", "dn_link"; 408 353 }; 409 354 410 355 dmic: dmic@4012e000 { ··· 417 356 reg-names = "mpu", "dma"; 418 357 interrupts = <0 114 0x4>; 419 358 ti,hwmods = "dmic"; 359 + dmas = <&sdma 67>; 360 + dma-names = "up_link"; 420 361 }; 421 362 422 363 mcbsp1: mcbsp@40122000 { ··· 430 367 interrupt-names = "common"; 431 368 ti,buffer-size = <128>; 432 369 ti,hwmods = "mcbsp1"; 370 + dmas = <&sdma 33>, 371 + <&sdma 34>; 372 + dma-names = "tx", "rx"; 433 373 }; 434 374 435 375 mcbsp2: mcbsp@40124000 { ··· 444 378 interrupt-names = "common"; 445 379 ti,buffer-size = <128>; 446 380 ti,hwmods = "mcbsp2"; 381 + dmas = <&sdma 17>, 382 + <&sdma 18>; 383 + dma-names = "tx", "rx"; 447 384 }; 448 385 449 386 mcbsp3: mcbsp@40126000 { ··· 458 389 interrupt-names = "common"; 459 390 ti,buffer-size = <128>; 460 391 ti,hwmods = "mcbsp3"; 392 + dmas = <&sdma 19>, 393 + <&sdma 20>; 394 + dma-names = "tx", "rx"; 461 395 }; 462 396 463 397 mcbsp4: mcbsp@48096000 { ··· 471 399 interrupt-names = "common"; 472 400 ti,buffer-size = <128>; 473 401 ti,hwmods = "mcbsp4"; 402 + dmas = <&sdma 31>, 403 + <&sdma 32>; 404 + dma-names = "tx", "rx"; 474 405 }; 475 406 476 407 keypad: keypad@4a31c000 { ··· 513 438 #size-cells = <1>; 514 439 ranges; 515 440 ti,hwmods = "ocp2scp_usb_phy"; 441 + usb2_phy: usb2phy@4a0ad080 { 442 + compatible = "ti,omap-usb2"; 443 + reg = <0x4a0ad080 0x58>; 444 + ctrl-module = <&omap_control_usb>; 445 + }; 516 446 }; 517 447 518 448 timer1: timer@4a318000 { 519 - compatible = "ti,omap2-timer"; 449 + compatible = "ti,omap3430-timer"; 520 450 reg = <0x4a318000 0x80>; 521 451 interrupts = <0 37 0x4>; 522 452 ti,hwmods = "timer1"; ··· 529 449 }; 530 450 531 451 timer2: timer@48032000 { 532 - compatible = "ti,omap2-timer"; 452 + compatible = "ti,omap3430-timer"; 533 453 reg = <0x48032000 0x80>; 534 454 interrupts = <0 38 0x4>; 535 455 ti,hwmods = "timer2"; 536 456 }; 537 457 538 458 timer3: timer@48034000 { 539 - compatible = "ti,omap2-timer"; 459 + compatible = "ti,omap4430-timer"; 540 460 reg = <0x48034000 0x80>; 541 461 interrupts = <0 39 0x4>; 542 462 ti,hwmods = "timer3"; 543 463 }; 544 464 545 465 timer4: timer@48036000 { 546 - compatible = "ti,omap2-timer"; 466 + compatible = "ti,omap4430-timer"; 547 467 reg = <0x48036000 0x80>; 548 468 interrupts = <0 40 0x4>; 549 469 ti,hwmods = "timer4"; 550 470 }; 551 471 552 472 timer5: timer@40138000 { 553 - compatible = "ti,omap2-timer"; 473 + compatible = "ti,omap4430-timer"; 554 474 reg = <0x40138000 0x80>, 555 475 <0x49038000 0x80>; 556 476 interrupts = <0 41 0x4>; ··· 559 479 }; 560 480 561 481 timer6: timer@4013a000 { 562 - compatible = "ti,omap2-timer"; 482 + compatible = "ti,omap4430-timer"; 563 483 reg = <0x4013a000 0x80>, 564 484 <0x4903a000 0x80>; 565 485 interrupts = <0 42 0x4>; ··· 568 488 }; 569 489 570 490 timer7: timer@4013c000 { 571 - compatible = "ti,omap2-timer"; 491 + compatible = "ti,omap4430-timer"; 572 492 reg = <0x4013c000 0x80>, 573 493 <0x4903c000 0x80>; 574 494 interrupts = <0 43 0x4>; ··· 577 497 }; 578 498 579 499 timer8: timer@4013e000 { 580 - compatible = "ti,omap2-timer"; 500 + compatible = "ti,omap4430-timer"; 581 501 reg = <0x4013e000 0x80>, 582 502 <0x4903e000 0x80>; 583 503 interrupts = <0 44 0x4>; ··· 587 507 }; 588 508 589 509 timer9: timer@4803e000 { 590 - compatible = "ti,omap2-timer"; 510 + compatible = "ti,omap4430-timer"; 591 511 reg = <0x4803e000 0x80>; 592 512 interrupts = <0 45 0x4>; 593 513 ti,hwmods = "timer9"; ··· 595 515 }; 596 516 597 517 timer10: timer@48086000 { 598 - compatible = "ti,omap2-timer"; 518 + compatible = "ti,omap3430-timer"; 599 519 reg = <0x48086000 0x80>; 600 520 interrupts = <0 46 0x4>; 601 521 ti,hwmods = "timer10"; ··· 603 523 }; 604 524 605 525 timer11: timer@48088000 { 606 - compatible = "ti,omap2-timer"; 526 + compatible = "ti,omap4430-timer"; 607 527 reg = <0x48088000 0x80>; 608 528 interrupts = <0 47 0x4>; 609 529 ti,hwmods = "timer11"; ··· 638 558 interrupt-parent = <&gic>; 639 559 interrupts = <0 77 0x4>; 640 560 }; 561 + }; 562 + 563 + omap_control_usb: omap-control-usb@4a002300 { 564 + compatible = "ti,omap-control-usb"; 565 + reg = <0x4a002300 0x4>, 566 + <0x4a00233c 0x4>; 567 + reg-names = "control_dev_conf", "otghs_control"; 568 + ti,type = <1>; 569 + }; 570 + 571 + usb_otg_hs: usb_otg_hs@4a0ab000 { 572 + compatible = "ti,omap4-musb"; 573 + reg = <0x4a0ab000 0x7ff>; 574 + interrupts = <0 92 0x4>, <0 93 0x4>; 575 + interrupt-names = "mc", "dma"; 576 + ti,hwmods = "usb_otg_hs"; 577 + usb-phy = <&usb2_phy>; 578 + multipoint = <1>; 579 + num-eps = <16>; 580 + ram-bits = <12>; 581 + ti,has-mailbox; 641 582 }; 642 583 }; 643 584 };
+27
arch/arm/boot/dts/omap443x.dtsi
··· 1 + /* 2 + * Device Tree Source for OMAP443x SoC 3 + * 4 + * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ 5 + * 6 + * This file is licensed under the terms of the GNU General Public License 7 + * version 2. This program is licensed "as is" without any warranty of any 8 + * kind, whether express or implied. 9 + */ 10 + 11 + /include/ "omap4.dtsi" 12 + 13 + / { 14 + cpus { 15 + cpu@0 { 16 + /* OMAP443x variants OPP50-OPPNT */ 17 + operating-points = < 18 + /* kHz uV */ 19 + 300000 1025000 20 + 600000 1200000 21 + 800000 1313000 22 + 1008000 1375000 23 + >; 24 + clock-latency = <300000>; /* From legacy driver */ 25 + }; 26 + }; 27 + };
+32
arch/arm/boot/dts/omap4460.dtsi
··· 1 + /* 2 + * Device Tree Source for OMAP4460 SoC 3 + * 4 + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ 5 + * 6 + * This file is licensed under the terms of the GNU General Public License 7 + * version 2. This program is licensed "as is" without any warranty of any 8 + * kind, whether express or implied. 9 + */ 10 + /include/ "omap4.dtsi" 11 + 12 + / { 13 + cpus { 14 + /* OMAP446x 'standard device' variants OPP50 to OPPTurbo */ 15 + cpu@0 { 16 + operating-points = < 17 + /* kHz uV */ 18 + 350000 975000 19 + 700000 1075000 20 + 920000 1200000 21 + >; 22 + clock-latency = <300000>; /* From legacy driver */ 23 + }; 24 + }; 25 + 26 + pmu { 27 + compatible = "arm,cortex-a9-pmu"; 28 + interrupts = <0 54 0x4>, 29 + <0 55 0x4>; 30 + ti,hwmods = "debugss"; 31 + }; 32 + };
+109 -1
arch/arm/boot/dts/omap5-evm.dts
··· 16 16 17 17 memory { 18 18 device_type = "memory"; 19 - reg = <0x80000000 0x80000000>; /* 2 GB */ 19 + reg = <0x80000000 0x7F000000>; /* 2032 MB */ 20 20 }; 21 21 22 22 vmmcsd_fixed: fixedregulator-mmcsd { ··· 80 80 0x15a 0x100 /* abemcbsp2_clkx.abemcbsp2_clkx INPUT | MODE0 */ 81 81 >; 82 82 }; 83 + 84 + i2c1_pins: pinmux_i2c1_pins { 85 + pinctrl-single,pins = < 86 + 0x1b2 0x118 /* i2c1_scl PULLUP | INPUTENABLE | MODE0 */ 87 + 0x1b4 0x118 /* i2c1_sda PULLUP | INPUTENABLE | MODE0 */ 88 + >; 89 + }; 90 + 91 + i2c2_pins: pinmux_i2c2_pins { 92 + pinctrl-single,pins = < 93 + 0x178 0x100 /* i2c2_scl INPUTENABLE | MODE0 */ 94 + 0x17a 0x100 /* i2c2_sda INPUTENABLE | MODE0 */ 95 + >; 96 + }; 97 + 98 + i2c3_pins: pinmux_i2c3_pins { 99 + pinctrl-single,pins = < 100 + 0x13a 0x100 /* i2c3_scl INPUTENABLE | MODE0 */ 101 + 0x13c 0x100 /* i2c3_sda INPUTENABLE | MODE0 */ 102 + >; 103 + }; 104 + 105 + i2c4_pins: pinmux_i2c4_pins { 106 + pinctrl-single,pins = < 107 + 0xb8 0x100 /* i2c4_scl INPUTENABLE | MODE0 */ 108 + 0xba 0x100 /* i2c4_sda INPUTENABLE | MODE0 */ 109 + >; 110 + }; 111 + 112 + i2c5_pins: pinmux_i2c5_pins { 113 + pinctrl-single,pins = < 114 + 0x184 0x100 /* i2c5_scl INPUTENABLE | MODE0 */ 115 + 0x186 0x100 /* i2c5_sda INPUTENABLE | MODE0 */ 116 + >; 117 + }; 118 + 119 + mcspi2_pins: pinmux_mcspi2_pins { 120 + pinctrl-single,pins = < 121 + 0xbc 0x100 /* MCSPI2_CLK INPUTENABLE | MODE0 */ 122 + 0xbe 0x100 /* MCSPI2_SIMO INPUTENABLE | MODE0 */ 123 + 0xc0 0x118 /* MCSPI2_SOMI PULLUP | INPUTENABLE | MODE0*/ 124 + 0xc2 0x0 /* MCSPI2_CS MODE0*/ 125 + >; 126 + }; 127 + 128 + mcspi3_pins: pinmux_mcspi3_pins { 129 + pinctrl-single,pins = < 130 + 0x78 0x101 /* MCSPI2_SOMI INPUTENABLE | MODE1 */ 131 + 0x7a 0x101 /* MCSPI2_CS INPUTENABLE | MODE1 */ 132 + 0x7c 0x101 /* MCSPI2_SIMO INPUTENABLE | MODE1 */ 133 + 0x7e 0x101 /* MCSPI2_CLK INPUTENABLE | MODE1 */ 134 + >; 135 + }; 136 + 137 + mcspi4_pins: pinmux_mcspi4_pins { 138 + pinctrl-single,pins = < 139 + 0x164 0x101 /* MCSPI2_CLK INPUTENABLE | MODE1 */ 140 + 0x168 0x101 /* MCSPI2_SIMO INPUTENABLE | MODE1 */ 141 + 0x16a 0x101 /* MCSPI2_SOMI INPUTENABLE | MODE1 */ 142 + 0x16c 0x101 /* MCSPI2_CS INPUTENABLE | MODE1 */ 143 + >; 144 + }; 83 145 }; 84 146 85 147 &mmc1 { ··· 168 106 status = "disabled"; 169 107 }; 170 108 109 + &i2c1 { 110 + pinctrl-names = "default"; 111 + pinctrl-0 = <&i2c1_pins>; 112 + 113 + clock-frequency = <400000>; 114 + }; 115 + 171 116 &i2c2 { 117 + pinctrl-names = "default"; 118 + pinctrl-0 = <&i2c2_pins>; 119 + 172 120 clock-frequency = <400000>; 173 121 174 122 /* Pressure Sensor */ ··· 188 116 }; 189 117 }; 190 118 119 + &i2c3 { 120 + pinctrl-names = "default"; 121 + pinctrl-0 = <&i2c3_pins>; 122 + 123 + clock-frequency = <400000>; 124 + }; 125 + 191 126 &i2c4 { 127 + pinctrl-names = "default"; 128 + pinctrl-0 = <&i2c4_pins>; 129 + 192 130 clock-frequency = <400000>; 193 131 194 132 /* Temperature Sensor */ ··· 206 124 compatible = "ti,tmp102"; 207 125 reg = <0x48>; 208 126 }; 127 + }; 128 + 129 + &i2c5 { 130 + pinctrl-names = "default"; 131 + pinctrl-0 = <&i2c5_pins>; 132 + 133 + clock-frequency = <400000>; 209 134 }; 210 135 211 136 &keypad { ··· 239 150 &emif2 { 240 151 cs1-used; 241 152 device-handle = <&samsung_K3PE0E000B>; 153 + }; 154 + 155 + &mcspi1 { 156 + 157 + }; 158 + 159 + &mcspi2 { 160 + pinctrl-names = "default"; 161 + pinctrl-0 = <&mcspi2_pins>; 162 + }; 163 + 164 + &mcspi3 { 165 + pinctrl-names = "default"; 166 + pinctrl-0 = <&mcspi3_pins>; 167 + }; 168 + 169 + &mcspi4 { 170 + pinctrl-names = "default"; 171 + pinctrl-0 = <&mcspi4_pins>; 242 172 };
+208 -37
arch/arm/boot/dts/omap5.dtsi
··· 18 18 /include/ "skeleton.dtsi" 19 19 20 20 / { 21 + #address-cells = <1>; 22 + #size-cells = <1>; 23 + 21 24 compatible = "ti,omap5"; 22 25 interrupt-parent = <&gic>; 23 26 ··· 36 33 cpus { 37 34 cpu@0 { 38 35 compatible = "arm,cortex-a15"; 39 - timer { 40 - compatible = "arm,armv7-timer"; 41 - /* 14th PPI IRQ, active low level-sensitive */ 42 - interrupts = <1 14 0x308>; 43 - clock-frequency = <6144000>; 44 - }; 45 36 }; 46 37 cpu@1 { 47 38 compatible = "arm,cortex-a15"; 48 - timer { 49 - compatible = "arm,armv7-timer"; 50 - /* 14th PPI IRQ, active low level-sensitive */ 51 - interrupts = <1 14 0x308>; 52 - clock-frequency = <6144000>; 53 - }; 54 39 }; 40 + }; 41 + 42 + timer { 43 + compatible = "arm,armv7-timer"; 44 + /* PPI secure/nonsecure IRQ, active low level-sensitive */ 45 + interrupts = <1 13 0x308>, 46 + <1 14 0x308>, 47 + <1 11 0x308>, 48 + <1 10 0x308>; 49 + clock-frequency = <6144000>; 50 + }; 51 + 52 + gic: interrupt-controller@48211000 { 53 + compatible = "arm,cortex-a15-gic"; 54 + interrupt-controller; 55 + #interrupt-cells = <3>; 56 + reg = <0x48211000 0x1000>, 57 + <0x48212000 0x1000>, 58 + <0x48214000 0x2000>, 59 + <0x48216000 0x2000>; 55 60 }; 56 61 57 62 /* ··· 87 76 #size-cells = <1>; 88 77 ranges; 89 78 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; 79 + reg = <0x44000000 0x2000>, 80 + <0x44800000 0x3000>, 81 + <0x45000000 0x4000>; 82 + interrupts = <0 9 0x4>, 83 + <0 10 0x4>; 90 84 91 85 counter32k: counter@4ae04000 { 92 86 compatible = "ti,omap-counter32k"; ··· 116 100 pinctrl-single,function-mask = <0x7fff>; 117 101 }; 118 102 119 - gic: interrupt-controller@48211000 { 120 - compatible = "arm,cortex-a15-gic"; 121 - interrupt-controller; 122 - #interrupt-cells = <3>; 123 - reg = <0x48211000 0x1000>, 124 - <0x48212000 0x1000>; 103 + sdma: dma-controller@4a056000 { 104 + compatible = "ti,omap4430-sdma"; 105 + reg = <0x4a056000 0x1000>; 106 + interrupts = <0 12 0x4>, 107 + <0 13 0x4>, 108 + <0 14 0x4>, 109 + <0 15 0x4>; 110 + #dma-cells = <1>; 111 + #dma-channels = <32>; 112 + #dma-requests = <127>; 125 113 }; 126 114 127 115 gpio1: gpio@4ae10000 { ··· 133 113 reg = <0x4ae10000 0x200>; 134 114 interrupts = <0 29 0x4>; 135 115 ti,hwmods = "gpio1"; 116 + ti,gpio-always-on; 136 117 gpio-controller; 137 118 #gpio-cells = <2>; 138 119 interrupt-controller; 139 - #interrupt-cells = <1>; 120 + #interrupt-cells = <2>; 140 121 }; 141 122 142 123 gpio2: gpio@48055000 { ··· 148 127 gpio-controller; 149 128 #gpio-cells = <2>; 150 129 interrupt-controller; 151 - #interrupt-cells = <1>; 130 + #interrupt-cells = <2>; 152 131 }; 153 132 154 133 gpio3: gpio@48057000 { ··· 159 138 gpio-controller; 160 139 #gpio-cells = <2>; 161 140 interrupt-controller; 162 - #interrupt-cells = <1>; 141 + #interrupt-cells = <2>; 163 142 }; 164 143 165 144 gpio4: gpio@48059000 { ··· 170 149 gpio-controller; 171 150 #gpio-cells = <2>; 172 151 interrupt-controller; 173 - #interrupt-cells = <1>; 152 + #interrupt-cells = <2>; 174 153 }; 175 154 176 155 gpio5: gpio@4805b000 { ··· 181 160 gpio-controller; 182 161 #gpio-cells = <2>; 183 162 interrupt-controller; 184 - #interrupt-cells = <1>; 163 + #interrupt-cells = <2>; 185 164 }; 186 165 187 166 gpio6: gpio@4805d000 { ··· 192 171 gpio-controller; 193 172 #gpio-cells = <2>; 194 173 interrupt-controller; 195 - #interrupt-cells = <1>; 174 + #interrupt-cells = <2>; 196 175 }; 197 176 198 177 gpio7: gpio@48051000 { ··· 203 182 gpio-controller; 204 183 #gpio-cells = <2>; 205 184 interrupt-controller; 206 - #interrupt-cells = <1>; 185 + #interrupt-cells = <2>; 207 186 }; 208 187 209 188 gpio8: gpio@48053000 { ··· 214 193 gpio-controller; 215 194 #gpio-cells = <2>; 216 195 interrupt-controller; 217 - #interrupt-cells = <1>; 196 + #interrupt-cells = <2>; 197 + }; 198 + 199 + gpmc: gpmc@50000000 { 200 + compatible = "ti,omap4430-gpmc"; 201 + reg = <0x50000000 0x1000>; 202 + #address-cells = <2>; 203 + #size-cells = <1>; 204 + interrupts = <0 20 0x4>; 205 + gpmc,num-cs = <8>; 206 + gpmc,num-waitpins = <4>; 207 + ti,hwmods = "gpmc"; 218 208 }; 219 209 220 210 i2c1: i2c@48070000 { ··· 271 239 #address-cells = <1>; 272 240 #size-cells = <0>; 273 241 ti,hwmods = "i2c5"; 242 + }; 243 + 244 + mcspi1: spi@48098000 { 245 + compatible = "ti,omap4-mcspi"; 246 + reg = <0x48098000 0x200>; 247 + interrupts = <0 65 0x4>; 248 + #address-cells = <1>; 249 + #size-cells = <0>; 250 + ti,hwmods = "mcspi1"; 251 + ti,spi-num-cs = <4>; 252 + dmas = <&sdma 35>, 253 + <&sdma 36>, 254 + <&sdma 37>, 255 + <&sdma 38>, 256 + <&sdma 39>, 257 + <&sdma 40>, 258 + <&sdma 41>, 259 + <&sdma 42>; 260 + dma-names = "tx0", "rx0", "tx1", "rx1", 261 + "tx2", "rx2", "tx3", "rx3"; 262 + }; 263 + 264 + mcspi2: spi@4809a000 { 265 + compatible = "ti,omap4-mcspi"; 266 + reg = <0x4809a000 0x200>; 267 + interrupts = <0 66 0x4>; 268 + #address-cells = <1>; 269 + #size-cells = <0>; 270 + ti,hwmods = "mcspi2"; 271 + ti,spi-num-cs = <2>; 272 + dmas = <&sdma 43>, 273 + <&sdma 44>, 274 + <&sdma 45>, 275 + <&sdma 46>; 276 + dma-names = "tx0", "rx0", "tx1", "rx1"; 277 + }; 278 + 279 + mcspi3: spi@480b8000 { 280 + compatible = "ti,omap4-mcspi"; 281 + reg = <0x480b8000 0x200>; 282 + interrupts = <0 91 0x4>; 283 + #address-cells = <1>; 284 + #size-cells = <0>; 285 + ti,hwmods = "mcspi3"; 286 + ti,spi-num-cs = <2>; 287 + dmas = <&sdma 15>, <&sdma 16>; 288 + dma-names = "tx0", "rx0"; 289 + }; 290 + 291 + mcspi4: spi@480ba000 { 292 + compatible = "ti,omap4-mcspi"; 293 + reg = <0x480ba000 0x200>; 294 + interrupts = <0 48 0x4>; 295 + #address-cells = <1>; 296 + #size-cells = <0>; 297 + ti,hwmods = "mcspi4"; 298 + ti,spi-num-cs = <1>; 299 + dmas = <&sdma 70>, <&sdma 71>; 300 + dma-names = "tx0", "rx0"; 274 301 }; 275 302 276 303 uart1: serial@4806a000 { ··· 387 296 ti,hwmods = "mmc1"; 388 297 ti,dual-volt; 389 298 ti,needs-special-reset; 299 + dmas = <&sdma 61>, <&sdma 62>; 300 + dma-names = "tx", "rx"; 390 301 }; 391 302 392 303 mmc2: mmc@480b4000 { ··· 397 304 interrupts = <0 86 0x4>; 398 305 ti,hwmods = "mmc2"; 399 306 ti,needs-special-reset; 307 + dmas = <&sdma 47>, <&sdma 48>; 308 + dma-names = "tx", "rx"; 400 309 }; 401 310 402 311 mmc3: mmc@480ad000 { ··· 407 312 interrupts = <0 94 0x4>; 408 313 ti,hwmods = "mmc3"; 409 314 ti,needs-special-reset; 315 + dmas = <&sdma 77>, <&sdma 78>; 316 + dma-names = "tx", "rx"; 410 317 }; 411 318 412 319 mmc4: mmc@480d1000 { ··· 417 320 interrupts = <0 96 0x4>; 418 321 ti,hwmods = "mmc4"; 419 322 ti,needs-special-reset; 323 + dmas = <&sdma 57>, <&sdma 58>; 324 + dma-names = "tx", "rx"; 420 325 }; 421 326 422 327 mmc5: mmc@480d5000 { ··· 427 328 interrupts = <0 59 0x4>; 428 329 ti,hwmods = "mmc5"; 429 330 ti,needs-special-reset; 331 + dmas = <&sdma 59>, <&sdma 60>; 332 + dma-names = "tx", "rx"; 430 333 }; 431 334 432 335 keypad: keypad@4ae1c000 { 433 336 compatible = "ti,omap4-keypad"; 337 + reg = <0x4ae1c000 0x400>; 434 338 ti,hwmods = "kbd"; 435 339 }; 436 340 ··· 444 342 reg-names = "mpu", "dma"; 445 343 interrupts = <0 112 0x4>; 446 344 ti,hwmods = "mcpdm"; 345 + dmas = <&sdma 65>, 346 + <&sdma 66>; 347 + dma-names = "up_link", "dn_link"; 447 348 }; 448 349 449 350 dmic: dmic@4012e000 { ··· 456 351 reg-names = "mpu", "dma"; 457 352 interrupts = <0 114 0x4>; 458 353 ti,hwmods = "dmic"; 354 + dmas = <&sdma 67>; 355 + dma-names = "up_link"; 459 356 }; 460 357 461 358 mcbsp1: mcbsp@40122000 { ··· 469 362 interrupt-names = "common"; 470 363 ti,buffer-size = <128>; 471 364 ti,hwmods = "mcbsp1"; 365 + dmas = <&sdma 33>, 366 + <&sdma 34>; 367 + dma-names = "tx", "rx"; 472 368 }; 473 369 474 370 mcbsp2: mcbsp@40124000 { ··· 483 373 interrupt-names = "common"; 484 374 ti,buffer-size = <128>; 485 375 ti,hwmods = "mcbsp2"; 376 + dmas = <&sdma 17>, 377 + <&sdma 18>; 378 + dma-names = "tx", "rx"; 486 379 }; 487 380 488 381 mcbsp3: mcbsp@40126000 { ··· 497 384 interrupt-names = "common"; 498 385 ti,buffer-size = <128>; 499 386 ti,hwmods = "mcbsp3"; 387 + dmas = <&sdma 19>, 388 + <&sdma 20>; 389 + dma-names = "tx", "rx"; 500 390 }; 501 391 502 392 timer1: timer@4ae18000 { 503 - compatible = "ti,omap2-timer"; 393 + compatible = "ti,omap5430-timer"; 504 394 reg = <0x4ae18000 0x80>; 505 395 interrupts = <0 37 0x4>; 506 396 ti,hwmods = "timer1"; ··· 511 395 }; 512 396 513 397 timer2: timer@48032000 { 514 - compatible = "ti,omap2-timer"; 398 + compatible = "ti,omap5430-timer"; 515 399 reg = <0x48032000 0x80>; 516 400 interrupts = <0 38 0x4>; 517 401 ti,hwmods = "timer2"; 518 402 }; 519 403 520 404 timer3: timer@48034000 { 521 - compatible = "ti,omap2-timer"; 405 + compatible = "ti,omap5430-timer"; 522 406 reg = <0x48034000 0x80>; 523 407 interrupts = <0 39 0x4>; 524 408 ti,hwmods = "timer3"; 525 409 }; 526 410 527 411 timer4: timer@48036000 { 528 - compatible = "ti,omap2-timer"; 412 + compatible = "ti,omap5430-timer"; 529 413 reg = <0x48036000 0x80>; 530 414 interrupts = <0 40 0x4>; 531 415 ti,hwmods = "timer4"; 532 416 }; 533 417 534 418 timer5: timer@40138000 { 535 - compatible = "ti,omap2-timer"; 419 + compatible = "ti,omap5430-timer"; 536 420 reg = <0x40138000 0x80>, 537 421 <0x49038000 0x80>; 538 422 interrupts = <0 41 0x4>; ··· 541 425 }; 542 426 543 427 timer6: timer@4013a000 { 544 - compatible = "ti,omap2-timer"; 428 + compatible = "ti,omap5430-timer"; 545 429 reg = <0x4013a000 0x80>, 546 430 <0x4903a000 0x80>; 547 431 interrupts = <0 42 0x4>; ··· 551 435 }; 552 436 553 437 timer7: timer@4013c000 { 554 - compatible = "ti,omap2-timer"; 438 + compatible = "ti,omap5430-timer"; 555 439 reg = <0x4013c000 0x80>, 556 440 <0x4903c000 0x80>; 557 441 interrupts = <0 43 0x4>; ··· 560 444 }; 561 445 562 446 timer8: timer@4013e000 { 563 - compatible = "ti,omap2-timer"; 447 + compatible = "ti,omap5430-timer"; 564 448 reg = <0x4013e000 0x80>, 565 449 <0x4903e000 0x80>; 566 450 interrupts = <0 44 0x4>; ··· 570 454 }; 571 455 572 456 timer9: timer@4803e000 { 573 - compatible = "ti,omap2-timer"; 457 + compatible = "ti,omap5430-timer"; 574 458 reg = <0x4803e000 0x80>; 575 459 interrupts = <0 45 0x4>; 576 460 ti,hwmods = "timer9"; 577 461 }; 578 462 579 463 timer10: timer@48086000 { 580 - compatible = "ti,omap2-timer"; 464 + compatible = "ti,omap5430-timer"; 581 465 reg = <0x48086000 0x80>; 582 466 interrupts = <0 46 0x4>; 583 467 ti,hwmods = "timer10"; 584 468 }; 585 469 586 470 timer11: timer@48088000 { 587 - compatible = "ti,omap2-timer"; 471 + compatible = "ti,omap5430-timer"; 588 472 reg = <0x48088000 0x80>; 589 473 interrupts = <0 47 0x4>; 590 474 ti,hwmods = "timer11"; 591 475 ti,timer-pwm; 476 + }; 477 + 478 + wdt2: wdt@4ae14000 { 479 + compatible = "ti,omap5-wdt", "ti,omap3-wdt"; 480 + reg = <0x4ae14000 0x80>; 481 + interrupts = <0 80 0x4>; 482 + ti,hwmods = "wd_timer2"; 592 483 }; 593 484 594 485 emif1: emif@0x4c000000 { ··· 618 495 hw-caps-read-idle-ctrl; 619 496 hw-caps-ll-interface; 620 497 hw-caps-temp-alert; 498 + }; 499 + 500 + omap_control_usb: omap-control-usb@4a002300 { 501 + compatible = "ti,omap-control-usb"; 502 + reg = <0x4a002300 0x4>, 503 + <0x4a002370 0x4>; 504 + reg-names = "control_dev_conf", "phy_power_usb"; 505 + ti,type = <2>; 506 + }; 507 + 508 + omap_dwc3@4a020000 { 509 + compatible = "ti,dwc3"; 510 + ti,hwmods = "usb_otg_ss"; 511 + reg = <0x4a020000 0x1000>; 512 + interrupts = <0 93 4>; 513 + #address-cells = <1>; 514 + #size-cells = <1>; 515 + utmi-mode = <2>; 516 + ranges; 517 + dwc3@4a030000 { 518 + compatible = "synopsys,dwc3"; 519 + reg = <0x4a030000 0x1000>; 520 + interrupts = <0 92 4>; 521 + usb-phy = <&usb2_phy>, <&usb3_phy>; 522 + tx-fifo-resize; 523 + }; 524 + }; 525 + 526 + ocp2scp { 527 + compatible = "ti,omap-ocp2scp"; 528 + #address-cells = <1>; 529 + #size-cells = <1>; 530 + ranges; 531 + ti,hwmods = "ocp2scp1"; 532 + usb2_phy: usb2phy@4a084000 { 533 + compatible = "ti,omap-usb2"; 534 + reg = <0x4a084000 0x7c>; 535 + ctrl-module = <&omap_control_usb>; 536 + }; 537 + 538 + usb3_phy: usb3phy@4a084400 { 539 + compatible = "ti,omap-usb3"; 540 + reg = <0x4a084400 0x80>, 541 + <0x4a084800 0x64>, 542 + <0x4a084c00 0x40>; 543 + reg-names = "phy_rx", "phy_tx", "pll_ctrl"; 544 + ctrl-module = <&omap_control_usb>; 545 + }; 621 546 }; 622 547 }; 623 548 };
+891
arch/arm/boot/dts/tegra114-dalmore.dts
··· 10 10 reg = <0x80000000 0x40000000>; 11 11 }; 12 12 13 + pinmux { 14 + pinctrl-names = "default"; 15 + pinctrl-0 = <&state_default>; 16 + 17 + state_default: pinmux { 18 + clk1_out_pw4 { 19 + nvidia,pins = "clk1_out_pw4"; 20 + nvidia,function = "extperiph1"; 21 + nvidia,pull = <0>; 22 + nvidia,tristate = <0>; 23 + nvidia,enable-input = <0>; 24 + }; 25 + dap1_din_pn1 { 26 + nvidia,pins = "dap1_din_pn1"; 27 + nvidia,function = "i2s0"; 28 + nvidia,pull = <0>; 29 + nvidia,tristate = <1>; 30 + nvidia,enable-input = <1>; 31 + }; 32 + dap1_dout_pn2 { 33 + nvidia,pins = "dap1_dout_pn2", 34 + "dap1_fs_pn0", 35 + "dap1_sclk_pn3"; 36 + nvidia,function = "i2s0"; 37 + nvidia,pull = <0>; 38 + nvidia,tristate = <0>; 39 + nvidia,enable-input = <1>; 40 + }; 41 + dap2_din_pa4 { 42 + nvidia,pins = "dap2_din_pa4"; 43 + nvidia,function = "i2s1"; 44 + nvidia,pull = <0>; 45 + nvidia,tristate = <1>; 46 + nvidia,enable-input = <1>; 47 + }; 48 + dap2_dout_pa5 { 49 + nvidia,pins = "dap2_dout_pa5", 50 + "dap2_fs_pa2", 51 + "dap2_sclk_pa3"; 52 + nvidia,function = "i2s1"; 53 + nvidia,pull = <0>; 54 + nvidia,tristate = <0>; 55 + nvidia,enable-input = <1>; 56 + }; 57 + dap4_din_pp5 { 58 + nvidia,pins = "dap4_din_pp5", 59 + "dap4_dout_pp6", 60 + "dap4_fs_pp4", 61 + "dap4_sclk_pp7"; 62 + nvidia,function = "i2s3"; 63 + nvidia,pull = <0>; 64 + nvidia,tristate = <0>; 65 + nvidia,enable-input = <1>; 66 + }; 67 + dvfs_pwm_px0 { 68 + nvidia,pins = "dvfs_pwm_px0", 69 + "dvfs_clk_px2"; 70 + nvidia,function = "cldvfs"; 71 + nvidia,pull = <0>; 72 + nvidia,tristate = <0>; 73 + nvidia,enable-input = <0>; 74 + }; 75 + ulpi_clk_py0 { 76 + nvidia,pins = "ulpi_clk_py0", 77 + "ulpi_data0_po1", 78 + "ulpi_data1_po2", 79 + "ulpi_data2_po3", 80 + "ulpi_data3_po4", 81 + "ulpi_data4_po5", 82 + "ulpi_data5_po6", 83 + "ulpi_data6_po7", 84 + "ulpi_data7_po0"; 85 + nvidia,function = "ulpi"; 86 + nvidia,pull = <0>; 87 + nvidia,tristate = <0>; 88 + nvidia,enable-input = <1>; 89 + }; 90 + ulpi_dir_py1 { 91 + nvidia,pins = "ulpi_dir_py1", 92 + "ulpi_nxt_py2"; 93 + nvidia,function = "ulpi"; 94 + nvidia,pull = <0>; 95 + nvidia,tristate = <1>; 96 + nvidia,enable-input = <1>; 97 + }; 98 + ulpi_stp_py3 { 99 + nvidia,pins = "ulpi_stp_py3"; 100 + nvidia,function = "ulpi"; 101 + nvidia,pull = <0>; 102 + nvidia,tristate = <0>; 103 + nvidia,enable-input = <0>; 104 + }; 105 + cam_i2c_scl_pbb1 { 106 + nvidia,pins = "cam_i2c_scl_pbb1", 107 + "cam_i2c_sda_pbb2"; 108 + nvidia,function = "i2c3"; 109 + nvidia,pull = <0>; 110 + nvidia,tristate = <0>; 111 + nvidia,enable-input = <1>; 112 + nvidia,lock = <0>; 113 + nvidia,open-drain = <0>; 114 + }; 115 + cam_mclk_pcc0 { 116 + nvidia,pins = "cam_mclk_pcc0", 117 + "pbb0"; 118 + nvidia,function = "vi_alt3"; 119 + nvidia,pull = <0>; 120 + nvidia,tristate = <0>; 121 + nvidia,enable-input = <0>; 122 + nvidia,lock = <0>; 123 + }; 124 + gen2_i2c_scl_pt5 { 125 + nvidia,pins = "gen2_i2c_scl_pt5", 126 + "gen2_i2c_sda_pt6"; 127 + nvidia,function = "i2c2"; 128 + nvidia,pull = <0>; 129 + nvidia,tristate = <0>; 130 + nvidia,enable-input = <1>; 131 + nvidia,lock = <0>; 132 + nvidia,open-drain = <0>; 133 + }; 134 + gmi_a16_pj7 { 135 + nvidia,pins = "gmi_a16_pj7"; 136 + nvidia,function = "uartd"; 137 + nvidia,pull = <0>; 138 + nvidia,tristate = <0>; 139 + nvidia,enable-input = <0>; 140 + }; 141 + gmi_a17_pb0 { 142 + nvidia,pins = "gmi_a17_pb0", 143 + "gmi_a18_pb1"; 144 + nvidia,function = "uartd"; 145 + nvidia,pull = <0>; 146 + nvidia,tristate = <1>; 147 + nvidia,enable-input = <1>; 148 + }; 149 + gmi_a19_pk7 { 150 + nvidia,pins = "gmi_a19_pk7"; 151 + nvidia,function = "uartd"; 152 + nvidia,pull = <0>; 153 + nvidia,tristate = <0>; 154 + nvidia,enable-input = <0>; 155 + }; 156 + gmi_ad5_pg5 { 157 + nvidia,pins = "gmi_ad5_pg5", 158 + "gmi_cs6_n_pi3", 159 + "gmi_wr_n_pi0"; 160 + nvidia,function = "spi4"; 161 + nvidia,pull = <0>; 162 + nvidia,tristate = <0>; 163 + nvidia,enable-input = <1>; 164 + }; 165 + gmi_ad6_pg6 { 166 + nvidia,pins = "gmi_ad6_pg6", 167 + "gmi_ad7_pg7"; 168 + nvidia,function = "spi4"; 169 + nvidia,pull = <2>; 170 + nvidia,tristate = <0>; 171 + nvidia,enable-input = <1>; 172 + }; 173 + gmi_ad12_ph4 { 174 + nvidia,pins = "gmi_ad12_ph4"; 175 + nvidia,function = "rsvd4"; 176 + nvidia,pull = <0>; 177 + nvidia,tristate = <0>; 178 + nvidia,enable-input = <0>; 179 + }; 180 + gmi_ad9_ph1 { 181 + nvidia,pins = "gmi_ad9_ph1"; 182 + nvidia,function = "pwm1"; 183 + nvidia,pull = <0>; 184 + nvidia,tristate = <0>; 185 + nvidia,enable-input = <0>; 186 + }; 187 + gmi_cs1_n_pj2 { 188 + nvidia,pins = "gmi_cs1_n_pj2", 189 + "gmi_oe_n_pi1"; 190 + nvidia,function = "soc"; 191 + nvidia,pull = <0>; 192 + nvidia,tristate = <1>; 193 + nvidia,enable-input = <1>; 194 + }; 195 + clk2_out_pw5 { 196 + nvidia,pins = "clk2_out_pw5"; 197 + nvidia,function = "extperiph2"; 198 + nvidia,pull = <0>; 199 + nvidia,tristate = <0>; 200 + nvidia,enable-input = <0>; 201 + }; 202 + sdmmc1_clk_pz0 { 203 + nvidia,pins = "sdmmc1_clk_pz0"; 204 + nvidia,function = "sdmmc1"; 205 + nvidia,pull = <0>; 206 + nvidia,tristate = <0>; 207 + nvidia,enable-input = <1>; 208 + }; 209 + sdmmc1_cmd_pz1 { 210 + nvidia,pins = "sdmmc1_cmd_pz1", 211 + "sdmmc1_dat0_py7", 212 + "sdmmc1_dat1_py6", 213 + "sdmmc1_dat2_py5", 214 + "sdmmc1_dat3_py4"; 215 + nvidia,function = "sdmmc1"; 216 + nvidia,pull = <2>; 217 + nvidia,tristate = <0>; 218 + nvidia,enable-input = <1>; 219 + }; 220 + sdmmc1_wp_n_pv3 { 221 + nvidia,pins = "sdmmc1_wp_n_pv3"; 222 + nvidia,function = "spi4"; 223 + nvidia,pull = <2>; 224 + nvidia,tristate = <0>; 225 + nvidia,enable-input = <0>; 226 + }; 227 + sdmmc3_clk_pa6 { 228 + nvidia,pins = "sdmmc3_clk_pa6"; 229 + nvidia,function = "sdmmc3"; 230 + nvidia,pull = <0>; 231 + nvidia,tristate = <0>; 232 + nvidia,enable-input = <1>; 233 + }; 234 + sdmmc3_cmd_pa7 { 235 + nvidia,pins = "sdmmc3_cmd_pa7", 236 + "sdmmc3_dat0_pb7", 237 + "sdmmc3_dat1_pb6", 238 + "sdmmc3_dat2_pb5", 239 + "sdmmc3_dat3_pb4", 240 + "kb_col4_pq4", 241 + "sdmmc3_clk_lb_out_pee4", 242 + "sdmmc3_clk_lb_in_pee5"; 243 + nvidia,function = "sdmmc3"; 244 + nvidia,pull = <2>; 245 + nvidia,tristate = <0>; 246 + nvidia,enable-input = <1>; 247 + }; 248 + sdmmc4_clk_pcc4 { 249 + nvidia,pins = "sdmmc4_clk_pcc4"; 250 + nvidia,function = "sdmmc4"; 251 + nvidia,pull = <0>; 252 + nvidia,tristate = <0>; 253 + nvidia,enable-input = <1>; 254 + }; 255 + sdmmc4_cmd_pt7 { 256 + nvidia,pins = "sdmmc4_cmd_pt7", 257 + "sdmmc4_dat0_paa0", 258 + "sdmmc4_dat1_paa1", 259 + "sdmmc4_dat2_paa2", 260 + "sdmmc4_dat3_paa3", 261 + "sdmmc4_dat4_paa4", 262 + "sdmmc4_dat5_paa5", 263 + "sdmmc4_dat6_paa6", 264 + "sdmmc4_dat7_paa7"; 265 + nvidia,function = "sdmmc4"; 266 + nvidia,pull = <2>; 267 + nvidia,tristate = <0>; 268 + nvidia,enable-input = <1>; 269 + }; 270 + clk_32k_out_pa0 { 271 + nvidia,pins = "clk_32k_out_pa0"; 272 + nvidia,function = "blink"; 273 + nvidia,pull = <0>; 274 + nvidia,tristate = <0>; 275 + nvidia,enable-input = <0>; 276 + }; 277 + kb_col0_pq0 { 278 + nvidia,pins = "kb_col0_pq0", 279 + "kb_col1_pq1", 280 + "kb_col2_pq2", 281 + "kb_row0_pr0", 282 + "kb_row1_pr1", 283 + "kb_row2_pr2"; 284 + nvidia,function = "kbc"; 285 + nvidia,pull = <2>; 286 + nvidia,tristate = <0>; 287 + nvidia,enable-input = <1>; 288 + }; 289 + dap3_din_pp1 { 290 + nvidia,pins = "dap3_din_pp1", 291 + "dap3_sclk_pp3"; 292 + nvidia,function = "displayb"; 293 + nvidia,pull = <0>; 294 + nvidia,tristate = <1>; 295 + nvidia,enable-input = <0>; 296 + }; 297 + pv0 { 298 + nvidia,pins = "pv0"; 299 + nvidia,function = "rsvd4"; 300 + nvidia,pull = <0>; 301 + nvidia,tristate = <1>; 302 + nvidia,enable-input = <0>; 303 + }; 304 + kb_row7_pr7 { 305 + nvidia,pins = "kb_row7_pr7"; 306 + nvidia,function = "rsvd2"; 307 + nvidia,pull = <2>; 308 + nvidia,tristate = <0>; 309 + nvidia,enable-input = <1>; 310 + }; 311 + kb_row10_ps2 { 312 + nvidia,pins = "kb_row10_ps2"; 313 + nvidia,function = "uarta"; 314 + nvidia,pull = <0>; 315 + nvidia,tristate = <1>; 316 + nvidia,enable-input = <1>; 317 + }; 318 + kb_row9_ps1 { 319 + nvidia,pins = "kb_row9_ps1"; 320 + nvidia,function = "uarta"; 321 + nvidia,pull = <0>; 322 + nvidia,tristate = <0>; 323 + nvidia,enable-input = <0>; 324 + }; 325 + pwr_i2c_scl_pz6 { 326 + nvidia,pins = "pwr_i2c_scl_pz6", 327 + "pwr_i2c_sda_pz7"; 328 + nvidia,function = "i2cpwr"; 329 + nvidia,pull = <0>; 330 + nvidia,tristate = <0>; 331 + nvidia,enable-input = <1>; 332 + nvidia,lock = <0>; 333 + nvidia,open-drain = <0>; 334 + }; 335 + sys_clk_req_pz5 { 336 + nvidia,pins = "sys_clk_req_pz5"; 337 + nvidia,function = "sysclk"; 338 + nvidia,pull = <0>; 339 + nvidia,tristate = <0>; 340 + nvidia,enable-input = <0>; 341 + }; 342 + core_pwr_req { 343 + nvidia,pins = "core_pwr_req"; 344 + nvidia,function = "pwron"; 345 + nvidia,pull = <0>; 346 + nvidia,tristate = <0>; 347 + nvidia,enable-input = <0>; 348 + }; 349 + cpu_pwr_req { 350 + nvidia,pins = "cpu_pwr_req"; 351 + nvidia,function = "cpu"; 352 + nvidia,pull = <0>; 353 + nvidia,tristate = <0>; 354 + nvidia,enable-input = <0>; 355 + }; 356 + pwr_int_n { 357 + nvidia,pins = "pwr_int_n"; 358 + nvidia,function = "pmi"; 359 + nvidia,pull = <0>; 360 + nvidia,tristate = <1>; 361 + nvidia,enable-input = <1>; 362 + }; 363 + reset_out_n { 364 + nvidia,pins = "reset_out_n"; 365 + nvidia,function = "reset_out_n"; 366 + nvidia,pull = <0>; 367 + nvidia,tristate = <0>; 368 + nvidia,enable-input = <0>; 369 + }; 370 + clk3_out_pee0 { 371 + nvidia,pins = "clk3_out_pee0"; 372 + nvidia,function = "extperiph3"; 373 + nvidia,pull = <0>; 374 + nvidia,tristate = <0>; 375 + nvidia,enable-input = <0>; 376 + }; 377 + gen1_i2c_scl_pc4 { 378 + nvidia,pins = "gen1_i2c_scl_pc4", 379 + "gen1_i2c_sda_pc5"; 380 + nvidia,function = "i2c1"; 381 + nvidia,pull = <0>; 382 + nvidia,tristate = <0>; 383 + nvidia,enable-input = <1>; 384 + nvidia,lock = <0>; 385 + nvidia,open-drain = <0>; 386 + }; 387 + uart2_cts_n_pj5 { 388 + nvidia,pins = "uart2_cts_n_pj5"; 389 + nvidia,function = "uartb"; 390 + nvidia,pull = <0>; 391 + nvidia,tristate = <1>; 392 + nvidia,enable-input = <1>; 393 + }; 394 + uart2_rts_n_pj6 { 395 + nvidia,pins = "uart2_rts_n_pj6"; 396 + nvidia,function = "uartb"; 397 + nvidia,pull = <0>; 398 + nvidia,tristate = <0>; 399 + nvidia,enable-input = <0>; 400 + }; 401 + uart2_rxd_pc3 { 402 + nvidia,pins = "uart2_rxd_pc3"; 403 + nvidia,function = "irda"; 404 + nvidia,pull = <0>; 405 + nvidia,tristate = <1>; 406 + nvidia,enable-input = <1>; 407 + }; 408 + uart2_txd_pc2 { 409 + nvidia,pins = "uart2_txd_pc2"; 410 + nvidia,function = "irda"; 411 + nvidia,pull = <0>; 412 + nvidia,tristate = <0>; 413 + nvidia,enable-input = <0>; 414 + }; 415 + uart3_cts_n_pa1 { 416 + nvidia,pins = "uart3_cts_n_pa1", 417 + "uart3_rxd_pw7"; 418 + nvidia,function = "uartc"; 419 + nvidia,pull = <0>; 420 + nvidia,tristate = <1>; 421 + nvidia,enable-input = <1>; 422 + }; 423 + uart3_rts_n_pc0 { 424 + nvidia,pins = "uart3_rts_n_pc0", 425 + "uart3_txd_pw6"; 426 + nvidia,function = "uartc"; 427 + nvidia,pull = <0>; 428 + nvidia,tristate = <0>; 429 + nvidia,enable-input = <0>; 430 + }; 431 + owr { 432 + nvidia,pins = "owr"; 433 + nvidia,function = "owr"; 434 + nvidia,pull = <0>; 435 + nvidia,tristate = <0>; 436 + nvidia,enable-input = <1>; 437 + }; 438 + hdmi_cec_pee3 { 439 + nvidia,pins = "hdmi_cec_pee3"; 440 + nvidia,function = "cec"; 441 + nvidia,pull = <0>; 442 + nvidia,tristate = <0>; 443 + nvidia,enable-input = <1>; 444 + nvidia,lock = <0>; 445 + nvidia,open-drain = <0>; 446 + }; 447 + ddc_scl_pv4 { 448 + nvidia,pins = "ddc_scl_pv4", 449 + "ddc_sda_pv5"; 450 + nvidia,function = "i2c4"; 451 + nvidia,pull = <0>; 452 + nvidia,tristate = <0>; 453 + nvidia,enable-input = <1>; 454 + nvidia,lock = <0>; 455 + nvidia,rcv-sel = <1>; 456 + }; 457 + spdif_in_pk6 { 458 + nvidia,pins = "spdif_in_pk6"; 459 + nvidia,function = "usb"; 460 + nvidia,pull = <2>; 461 + nvidia,tristate = <0>; 462 + nvidia,enable-input = <1>; 463 + nvidia,lock = <0>; 464 + }; 465 + usb_vbus_en0_pn4 { 466 + nvidia,pins = "usb_vbus_en0_pn4"; 467 + nvidia,function = "usb"; 468 + nvidia,pull = <2>; 469 + nvidia,tristate = <0>; 470 + nvidia,enable-input = <1>; 471 + nvidia,lock = <0>; 472 + nvidia,open-drain = <1>; 473 + }; 474 + gpio_x6_aud_px6 { 475 + nvidia,pins = "gpio_x6_aud_px6"; 476 + nvidia,function = "spi6"; 477 + nvidia,pull = <2>; 478 + nvidia,tristate = <1>; 479 + nvidia,enable-input = <1>; 480 + }; 481 + gpio_x4_aud_px4 { 482 + nvidia,pins = "gpio_x4_aud_px4", 483 + "gpio_x7_aud_px7"; 484 + nvidia,function = "rsvd1"; 485 + nvidia,pull = <1>; 486 + nvidia,tristate = <0>; 487 + nvidia,enable-input = <0>; 488 + }; 489 + gpio_x5_aud_px5 { 490 + nvidia,pins = "gpio_x5_aud_px5"; 491 + nvidia,function = "rsvd1"; 492 + nvidia,pull = <2>; 493 + nvidia,tristate = <0>; 494 + nvidia,enable-input = <1>; 495 + }; 496 + gpio_w2_aud_pw2 { 497 + nvidia,pins = "gpio_w2_aud_pw2"; 498 + nvidia,function = "rsvd2"; 499 + nvidia,pull = <2>; 500 + nvidia,tristate = <0>; 501 + nvidia,enable-input = <1>; 502 + }; 503 + gpio_w3_aud_pw3 { 504 + nvidia,pins = "gpio_w3_aud_pw3"; 505 + nvidia,function = "spi6"; 506 + nvidia,pull = <2>; 507 + nvidia,tristate = <0>; 508 + nvidia,enable-input = <1>; 509 + }; 510 + gpio_x1_aud_px1 { 511 + nvidia,pins = "gpio_x1_aud_px1"; 512 + nvidia,function = "rsvd4"; 513 + nvidia,pull = <1>; 514 + nvidia,tristate = <0>; 515 + nvidia,enable-input = <1>; 516 + }; 517 + gpio_x3_aud_px3 { 518 + nvidia,pins = "gpio_x3_aud_px3"; 519 + nvidia,function = "rsvd4"; 520 + nvidia,pull = <2>; 521 + nvidia,tristate = <0>; 522 + nvidia,enable-input = <1>; 523 + }; 524 + dap3_fs_pp0 { 525 + nvidia,pins = "dap3_fs_pp0"; 526 + nvidia,function = "i2s2"; 527 + nvidia,pull = <1>; 528 + nvidia,tristate = <0>; 529 + nvidia,enable-input = <0>; 530 + }; 531 + dap3_dout_pp2 { 532 + nvidia,pins = "dap3_dout_pp2"; 533 + nvidia,function = "i2s2"; 534 + nvidia,pull = <1>; 535 + nvidia,tristate = <0>; 536 + nvidia,enable-input = <0>; 537 + }; 538 + pv1 { 539 + nvidia,pins = "pv1"; 540 + nvidia,function = "rsvd1"; 541 + nvidia,pull = <0>; 542 + nvidia,tristate = <0>; 543 + nvidia,enable-input = <1>; 544 + }; 545 + pbb3 { 546 + nvidia,pins = "pbb3", 547 + "pbb5", 548 + "pbb6", 549 + "pbb7"; 550 + nvidia,function = "rsvd4"; 551 + nvidia,pull = <1>; 552 + nvidia,tristate = <0>; 553 + nvidia,enable-input = <0>; 554 + }; 555 + pcc1 { 556 + nvidia,pins = "pcc1", 557 + "pcc2"; 558 + nvidia,function = "rsvd4"; 559 + nvidia,pull = <1>; 560 + nvidia,tristate = <0>; 561 + nvidia,enable-input = <1>; 562 + }; 563 + gmi_ad0_pg0 { 564 + nvidia,pins = "gmi_ad0_pg0", 565 + "gmi_ad1_pg1"; 566 + nvidia,function = "gmi"; 567 + nvidia,pull = <0>; 568 + nvidia,tristate = <0>; 569 + nvidia,enable-input = <0>; 570 + }; 571 + gmi_ad10_ph2 { 572 + nvidia,pins = "gmi_ad10_ph2", 573 + "gmi_ad11_ph3", 574 + "gmi_ad13_ph5", 575 + "gmi_ad8_ph0", 576 + "gmi_clk_pk1"; 577 + nvidia,function = "gmi"; 578 + nvidia,pull = <1>; 579 + nvidia,tristate = <0>; 580 + nvidia,enable-input = <0>; 581 + }; 582 + gmi_ad2_pg2 { 583 + nvidia,pins = "gmi_ad2_pg2", 584 + "gmi_ad3_pg3"; 585 + nvidia,function = "gmi"; 586 + nvidia,pull = <0>; 587 + nvidia,tristate = <0>; 588 + nvidia,enable-input = <1>; 589 + }; 590 + gmi_adv_n_pk0 { 591 + nvidia,pins = "gmi_adv_n_pk0", 592 + "gmi_cs0_n_pj0", 593 + "gmi_cs2_n_pk3", 594 + "gmi_cs4_n_pk2", 595 + "gmi_cs7_n_pi6", 596 + "gmi_dqs_p_pj3", 597 + "gmi_iordy_pi5", 598 + "gmi_wp_n_pc7"; 599 + nvidia,function = "gmi"; 600 + nvidia,pull = <2>; 601 + nvidia,tristate = <0>; 602 + nvidia,enable-input = <1>; 603 + }; 604 + gmi_cs3_n_pk4 { 605 + nvidia,pins = "gmi_cs3_n_pk4"; 606 + nvidia,function = "gmi"; 607 + nvidia,pull = <2>; 608 + nvidia,tristate = <0>; 609 + nvidia,enable-input = <0>; 610 + }; 611 + clk2_req_pcc5 { 612 + nvidia,pins = "clk2_req_pcc5"; 613 + nvidia,function = "rsvd4"; 614 + nvidia,pull = <0>; 615 + nvidia,tristate = <0>; 616 + nvidia,enable-input = <0>; 617 + }; 618 + kb_col3_pq3 { 619 + nvidia,pins = "kb_col3_pq3", 620 + "kb_col6_pq6", 621 + "kb_col7_pq7"; 622 + nvidia,function = "kbc"; 623 + nvidia,pull = <2>; 624 + nvidia,tristate = <0>; 625 + nvidia,enable-input = <0>; 626 + }; 627 + kb_col5_pq5 { 628 + nvidia,pins = "kb_col5_pq5"; 629 + nvidia,function = "kbc"; 630 + nvidia,pull = <2>; 631 + nvidia,tristate = <0>; 632 + nvidia,enable-input = <1>; 633 + }; 634 + kb_row3_pr3 { 635 + nvidia,pins = "kb_row3_pr3", 636 + "kb_row4_pr4", 637 + "kb_row6_pr6", 638 + "kb_row8_ps0"; 639 + nvidia,function = "kbc"; 640 + nvidia,pull = <1>; 641 + nvidia,tristate = <0>; 642 + nvidia,enable-input = <1>; 643 + }; 644 + clk3_req_pee1 { 645 + nvidia,pins = "clk3_req_pee1"; 646 + nvidia,function = "rsvd4"; 647 + nvidia,pull = <0>; 648 + nvidia,tristate = <0>; 649 + nvidia,enable-input = <0>; 650 + }; 651 + pu4 { 652 + nvidia,pins = "pu4"; 653 + nvidia,function = "displayb"; 654 + nvidia,pull = <0>; 655 + nvidia,tristate = <0>; 656 + nvidia,enable-input = <0>; 657 + }; 658 + pu5 { 659 + nvidia,pins = "pu5", 660 + "pu6"; 661 + nvidia,function = "displayb"; 662 + nvidia,pull = <0>; 663 + nvidia,tristate = <0>; 664 + nvidia,enable-input = <1>; 665 + }; 666 + hdmi_int_pn7 { 667 + nvidia,pins = "hdmi_int_pn7"; 668 + nvidia,function = "rsvd1"; 669 + nvidia,pull = <1>; 670 + nvidia,tristate = <0>; 671 + nvidia,enable-input = <1>; 672 + }; 673 + clk1_req_pee2 { 674 + nvidia,pins = "clk1_req_pee2", 675 + "usb_vbus_en1_pn5"; 676 + nvidia,function = "rsvd4"; 677 + nvidia,pull = <1>; 678 + nvidia,tristate = <1>; 679 + nvidia,enable-input = <0>; 680 + }; 681 + 682 + drive_sdio1 { 683 + nvidia,pins = "drive_sdio1"; 684 + nvidia,high-speed-mode = <1>; 685 + nvidia,schmitt = <0>; 686 + nvidia,low-power-mode = <3>; 687 + nvidia,pull-down-strength = <36>; 688 + nvidia,pull-up-strength = <20>; 689 + nvidia,slew-rate-rising = <2>; 690 + nvidia,slew-rate-falling = <2>; 691 + }; 692 + drive_sdio3 { 693 + nvidia,pins = "drive_sdio3"; 694 + nvidia,high-speed-mode = <1>; 695 + nvidia,schmitt = <0>; 696 + nvidia,low-power-mode = <3>; 697 + nvidia,pull-down-strength = <22>; 698 + nvidia,pull-up-strength = <36>; 699 + nvidia,slew-rate-rising = <0>; 700 + nvidia,slew-rate-falling = <0>; 701 + }; 702 + drive_gma { 703 + nvidia,pins = "drive_gma"; 704 + nvidia,high-speed-mode = <1>; 705 + nvidia,schmitt = <0>; 706 + nvidia,low-power-mode = <3>; 707 + nvidia,pull-down-strength = <2>; 708 + nvidia,pull-up-strength = <1>; 709 + nvidia,slew-rate-rising = <0>; 710 + nvidia,slew-rate-falling = <0>; 711 + nvidia,drive-type = <1>; 712 + }; 713 + }; 714 + }; 715 + 13 716 serial@70006300 { 14 717 status = "okay"; 15 718 }; 16 719 720 + i2c@7000c000 { 721 + status = "okay"; 722 + clock-frequency = <100000>; 723 + 724 + battery: smart-battery { 725 + compatible = "ti,bq20z45", "sbs,sbs-battery"; 726 + reg = <0xb>; 727 + battery-name = "battery"; 728 + sbs,i2c-retry-count = <2>; 729 + sbs,poll-retry-count = <100>; 730 + }; 731 + }; 732 + 733 + i2c@7000d000 { 734 + status = "okay"; 735 + clock-frequency = <400000>; 736 + 737 + tps51632 { 738 + compatible = "ti,tps51632"; 739 + reg = <0x43>; 740 + regulator-name = "vdd-cpu"; 741 + regulator-min-microvolt = <500000>; 742 + regulator-max-microvolt = <1520000>; 743 + regulator-boot-on; 744 + regulator-always-on; 745 + }; 746 + 747 + tps65090 { 748 + compatible = "ti,tps65090"; 749 + reg = <0x48>; 750 + interrupt-parent = <&gpio>; 751 + interrupts = <72 0x04>; /* gpio PJ0 */ 752 + 753 + vsys1-supply = <&vdd_ac_bat_reg>; 754 + vsys2-supply = <&vdd_ac_bat_reg>; 755 + vsys3-supply = <&vdd_ac_bat_reg>; 756 + infet1-supply = <&vdd_ac_bat_reg>; 757 + infet2-supply = <&vdd_ac_bat_reg>; 758 + infet3-supply = <&tps65090_dcdc2_reg>; 759 + infet4-supply = <&tps65090_dcdc2_reg>; 760 + infet5-supply = <&tps65090_dcdc2_reg>; 761 + infet6-supply = <&tps65090_dcdc2_reg>; 762 + infet7-supply = <&tps65090_dcdc2_reg>; 763 + vsys-l1-supply = <&vdd_ac_bat_reg>; 764 + vsys-l2-supply = <&vdd_ac_bat_reg>; 765 + 766 + regulators { 767 + tps65090_dcdc1_reg: dcdc1 { 768 + regulator-name = "vdd-sys-5v0"; 769 + regulator-always-on; 770 + regulator-boot-on; 771 + }; 772 + 773 + tps65090_dcdc2_reg: dcdc2 { 774 + regulator-name = "vdd-sys-3v3"; 775 + regulator-always-on; 776 + regulator-boot-on; 777 + }; 778 + 779 + dcdc3 { 780 + regulator-name = "vdd-ao"; 781 + regulator-always-on; 782 + regulator-boot-on; 783 + }; 784 + 785 + fet1 { 786 + regulator-name = "vdd-lcd-bl"; 787 + }; 788 + 789 + fet3 { 790 + regulator-name = "vdd-modem-3v3"; 791 + }; 792 + 793 + fet4 { 794 + regulator-name = "avdd-lcd"; 795 + }; 796 + 797 + fet5 { 798 + regulator-name = "vdd-lvds"; 799 + }; 800 + 801 + fet6 { 802 + regulator-name = "vdd-sd-slot"; 803 + regulator-always-on; 804 + regulator-boot-on; 805 + }; 806 + 807 + fet7 { 808 + regulator-name = "vdd-com-3v3"; 809 + }; 810 + 811 + ldo1 { 812 + regulator-name = "vdd-sby-5v0"; 813 + regulator-always-on; 814 + regulator-boot-on; 815 + }; 816 + 817 + ldo2 { 818 + regulator-name = "vdd-sby-3v3"; 819 + regulator-always-on; 820 + regulator-boot-on; 821 + }; 822 + }; 823 + }; 824 + }; 825 + 17 826 pmc { 18 827 nvidia,invert-interrupt; 828 + }; 829 + 830 + sdhci@78000400 { 831 + cd-gpios = <&gpio 170 1>; /* gpio PV2 */ 832 + bus-width = <4>; 833 + status = "okay"; 834 + }; 835 + 836 + sdhci@78000600 { 837 + bus-width = <8>; 838 + status = "okay"; 839 + non-removable; 19 840 }; 20 841 21 842 clocks { ··· 849 28 reg=<0>; 850 29 #clock-cells = <0>; 851 30 clock-frequency = <32768>; 31 + }; 32 + }; 33 + 34 + regulators { 35 + compatible = "simple-bus"; 36 + #address-cells = <1>; 37 + #size-cells = <0>; 38 + 39 + vdd_ac_bat_reg: regulator@0 { 40 + compatible = "regulator-fixed"; 41 + reg = <0>; 42 + regulator-name = "vdd_ac_bat"; 43 + regulator-min-microvolt = <5000000>; 44 + regulator-max-microvolt = <5000000>; 45 + regulator-always-on; 46 + }; 47 + 48 + dvdd_ts_reg: regulator@1 { 49 + compatible = "regulator-fixed"; 50 + reg = <1>; 51 + regulator-name = "dvdd_ts"; 52 + regulator-min-microvolt = <1800000>; 53 + regulator-max-microvolt = <1800000>; 54 + enable-active-high; 55 + gpio = <&gpio 61 0>; /* GPIO PH5 */ 56 + }; 57 + 58 + lcd_bl_en_reg: regulator@2 { 59 + compatible = "regulator-fixed"; 60 + reg = <2>; 61 + regulator-name = "lcd_bl_en"; 62 + regulator-min-microvolt = <5000000>; 63 + regulator-max-microvolt = <5000000>; 64 + enable-active-high; 65 + gpio = <&gpio 58 0>; /* GPIO PH2 */ 66 + }; 67 + 68 + usb1_vbus_reg: regulator@3 { 69 + compatible = "regulator-fixed"; 70 + reg = <3>; 71 + regulator-name = "usb1_vbus"; 72 + regulator-min-microvolt = <5000000>; 73 + regulator-max-microvolt = <5000000>; 74 + enable-active-high; 75 + gpio = <&gpio 108 0>; /* GPIO PN4 */ 76 + gpio-open-drain; 77 + vin-supply = <&tps65090_dcdc1_reg>; 78 + }; 79 + 80 + usb3_vbus_reg: regulator@4 { 81 + compatible = "regulator-fixed"; 82 + reg = <4>; 83 + regulator-name = "usb2_vbus"; 84 + regulator-min-microvolt = <5000000>; 85 + regulator-max-microvolt = <5000000>; 86 + enable-active-high; 87 + gpio = <&gpio 86 0>; /* GPIO PK6 */ 88 + gpio-open-drain; 89 + vin-supply = <&tps65090_dcdc1_reg>; 90 + }; 91 + 92 + vdd_hdmi_reg: regulator@5 { 93 + compatible = "regulator-fixed"; 94 + reg = <5>; 95 + regulator-name = "vdd_hdmi_5v0"; 96 + regulator-min-microvolt = <5000000>; 97 + regulator-max-microvolt = <5000000>; 98 + enable-active-high; 99 + gpio = <&gpio 81 0>; /* GPIO PK1 */ 100 + vin-supply = <&tps65090_dcdc1_reg>; 852 101 }; 853 102 }; 854 103 };
+236 -4
arch/arm/boot/dts/tegra114.dtsi
··· 4 4 compatible = "nvidia,tegra114"; 5 5 interrupt-parent = <&gic>; 6 6 7 + aliases { 8 + serial0 = &uarta; 9 + serial1 = &uartb; 10 + serial2 = &uartc; 11 + serial3 = &uartd; 12 + }; 13 + 7 14 gic: interrupt-controller { 8 15 compatible = "arm,cortex-a15-gic"; 9 16 #interrupt-cells = <3>; ··· 38 31 compatible = "nvidia,tegra114-car"; 39 32 reg = <0x60006000 0x1000>; 40 33 #clock-cells = <1>; 34 + }; 35 + 36 + apbdma: dma { 37 + compatible = "nvidia,tegra114-apbdma"; 38 + reg = <0x6000a000 0x1400>; 39 + interrupts = <0 104 0x04 40 + 0 105 0x04 41 + 0 106 0x04 42 + 0 107 0x04 43 + 0 108 0x04 44 + 0 109 0x04 45 + 0 110 0x04 46 + 0 111 0x04 47 + 0 112 0x04 48 + 0 113 0x04 49 + 0 114 0x04 50 + 0 115 0x04 51 + 0 116 0x04 52 + 0 117 0x04 53 + 0 118 0x04 54 + 0 119 0x04 55 + 0 128 0x04 56 + 0 129 0x04 57 + 0 130 0x04 58 + 0 131 0x04 59 + 0 132 0x04 60 + 0 133 0x04 61 + 0 134 0x04 62 + 0 135 0x04 63 + 0 136 0x04 64 + 0 137 0x04 65 + 0 138 0x04 66 + 0 139 0x04 67 + 0 140 0x04 68 + 0 141 0x04 69 + 0 142 0x04 70 + 0 143 0x04>; 71 + clocks = <&tegra_car 34>; 41 72 }; 42 73 43 74 ahb: ahb { ··· 106 61 0x70003000 0x40c>; /* Mux registers */ 107 62 }; 108 63 109 - serial@70006000 { 64 + /* 65 + * There are two serial driver i.e. 8250 based simple serial 66 + * driver and APB DMA based serial driver for higher baudrate 67 + * and performace. To enable the 8250 based driver, the compatible 68 + * is "nvidia,tegra114-uart", "nvidia,tegra20-uart" and to enable 69 + * the APB DMA based serial driver, the comptible is 70 + * "nvidia,tegra114-hsuart", "nvidia,tegra30-hsuart". 71 + */ 72 + uarta: serial@70006000 { 110 73 compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart"; 111 74 reg = <0x70006000 0x40>; 112 75 reg-shift = <2>; 113 76 interrupts = <0 36 0x04>; 77 + nvidia,dma-request-selector = <&apbdma 8>; 114 78 status = "disabled"; 115 79 clocks = <&tegra_car 6>; 116 80 }; 117 81 118 - serial@70006040 { 82 + uartb: serial@70006040 { 119 83 compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart"; 120 84 reg = <0x70006040 0x40>; 121 85 reg-shift = <2>; 122 86 interrupts = <0 37 0x04>; 87 + nvidia,dma-request-selector = <&apbdma 9>; 123 88 status = "disabled"; 124 89 clocks = <&tegra_car 192>; 125 90 }; 126 91 127 - serial@70006200 { 92 + uartc: serial@70006200 { 128 93 compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart"; 129 94 reg = <0x70006200 0x100>; 130 95 reg-shift = <2>; 131 96 interrupts = <0 46 0x04>; 97 + nvidia,dma-request-selector = <&apbdma 10>; 132 98 status = "disabled"; 133 99 clocks = <&tegra_car 55>; 134 100 }; 135 101 136 - serial@70006300 { 102 + uartd: serial@70006300 { 137 103 compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart"; 138 104 reg = <0x70006300 0x100>; 139 105 reg-shift = <2>; 140 106 interrupts = <0 90 0x04>; 107 + nvidia,dma-request-selector = <&apbdma 19>; 141 108 status = "disabled"; 142 109 clocks = <&tegra_car 65>; 110 + }; 111 + 112 + pwm: pwm { 113 + compatible = "nvidia,tegra114-pwm", "nvidia,tegra20-pwm"; 114 + reg = <0x7000a000 0x100>; 115 + #pwm-cells = <2>; 116 + clocks = <&tegra_car 17>; 117 + status = "disabled"; 118 + }; 119 + 120 + i2c@7000c000 { 121 + compatible = "nvidia,tegra114-i2c"; 122 + reg = <0x7000c000 0x100>; 123 + interrupts = <0 38 0x04>; 124 + #address-cells = <1>; 125 + #size-cells = <0>; 126 + clocks = <&tegra_car 12>; 127 + clock-names = "div-clk"; 128 + status = "disabled"; 129 + }; 130 + 131 + i2c@7000c400 { 132 + compatible = "nvidia,tegra114-i2c"; 133 + reg = <0x7000c400 0x100>; 134 + interrupts = <0 84 0x04>; 135 + #address-cells = <1>; 136 + #size-cells = <0>; 137 + clocks = <&tegra_car 54>; 138 + clock-names = "div-clk"; 139 + status = "disabled"; 140 + }; 141 + 142 + i2c@7000c500 { 143 + compatible = "nvidia,tegra114-i2c"; 144 + reg = <0x7000c500 0x100>; 145 + interrupts = <0 92 0x04>; 146 + #address-cells = <1>; 147 + #size-cells = <0>; 148 + clocks = <&tegra_car 67>; 149 + clock-names = "div-clk"; 150 + status = "disabled"; 151 + }; 152 + 153 + i2c@7000c700 { 154 + compatible = "nvidia,tegra114-i2c"; 155 + reg = <0x7000c700 0x100>; 156 + interrupts = <0 120 0x04>; 157 + #address-cells = <1>; 158 + #size-cells = <0>; 159 + clocks = <&tegra_car 103>; 160 + clock-names = "div-clk"; 161 + status = "disabled"; 162 + }; 163 + 164 + i2c@7000d000 { 165 + compatible = "nvidia,tegra114-i2c"; 166 + reg = <0x7000d000 0x100>; 167 + interrupts = <0 53 0x04>; 168 + #address-cells = <1>; 169 + #size-cells = <0>; 170 + clocks = <&tegra_car 47>; 171 + clock-names = "div-clk"; 172 + status = "disabled"; 173 + }; 174 + 175 + spi@7000d400 { 176 + compatible = "nvidia,tegra114-spi"; 177 + reg = <0x7000d400 0x200>; 178 + interrupts = <0 59 0x04>; 179 + nvidia,dma-request-selector = <&apbdma 15>; 180 + #address-cells = <1>; 181 + #size-cells = <0>; 182 + clocks = <&tegra_car 41>; 183 + clock-names = "spi"; 184 + status = "disabled"; 185 + }; 186 + 187 + spi@7000d600 { 188 + compatible = "nvidia,tegra114-spi"; 189 + reg = <0x7000d600 0x200>; 190 + interrupts = <0 82 0x04>; 191 + nvidia,dma-request-selector = <&apbdma 16>; 192 + #address-cells = <1>; 193 + #size-cells = <0>; 194 + clocks = <&tegra_car 44>; 195 + clock-names = "spi"; 196 + status = "disabled"; 197 + }; 198 + 199 + spi@7000d800 { 200 + compatible = "nvidia,tegra114-spi"; 201 + reg = <0x7000d800 0x200>; 202 + interrupts = <0 83 0x04>; 203 + nvidia,dma-request-selector = <&apbdma 17>; 204 + #address-cells = <1>; 205 + #size-cells = <0>; 206 + clocks = <&tegra_car 46>; 207 + clock-names = "spi"; 208 + status = "disabled"; 209 + }; 210 + 211 + spi@7000da00 { 212 + compatible = "nvidia,tegra114-spi"; 213 + reg = <0x7000da00 0x200>; 214 + interrupts = <0 93 0x04>; 215 + nvidia,dma-request-selector = <&apbdma 18>; 216 + #address-cells = <1>; 217 + #size-cells = <0>; 218 + clocks = <&tegra_car 68>; 219 + clock-names = "spi"; 220 + status = "disabled"; 221 + }; 222 + 223 + spi@7000dc00 { 224 + compatible = "nvidia,tegra114-spi"; 225 + reg = <0x7000dc00 0x200>; 226 + interrupts = <0 94 0x04>; 227 + nvidia,dma-request-selector = <&apbdma 27>; 228 + #address-cells = <1>; 229 + #size-cells = <0>; 230 + clocks = <&tegra_car 104>; 231 + clock-names = "spi"; 232 + status = "disabled"; 233 + }; 234 + 235 + spi@7000de00 { 236 + compatible = "nvidia,tegra114-spi"; 237 + reg = <0x7000de00 0x200>; 238 + interrupts = <0 79 0x04>; 239 + nvidia,dma-request-selector = <&apbdma 28>; 240 + #address-cells = <1>; 241 + #size-cells = <0>; 242 + clocks = <&tegra_car 105>; 243 + clock-names = "spi"; 244 + status = "disabled"; 143 245 }; 144 246 145 247 rtc { ··· 294 102 reg = <0x7000e000 0x100>; 295 103 interrupts = <0 2 0x04>; 296 104 clocks = <&tegra_car 4>; 105 + }; 106 + 107 + kbc { 108 + compatible = "nvidia,tegra114-kbc"; 109 + reg = <0x7000e200 0x100>; 110 + interrupts = <0 85 0x04>; 111 + clocks = <&tegra_car 36>; 112 + status = "disabled"; 297 113 }; 298 114 299 115 pmc { ··· 320 120 dma-window = <0 0x40000000>; 321 121 nvidia,swgroups = <0x18659fe>; 322 122 nvidia,ahb = <&ahb>; 123 + }; 124 + 125 + sdhci@78000000 { 126 + compatible = "nvidia,tegra114-sdhci", "nvidia,tegra30-sdhci"; 127 + reg = <0x78000000 0x200>; 128 + interrupts = <0 14 0x04>; 129 + clocks = <&tegra_car 14>; 130 + status = "disable"; 131 + }; 132 + 133 + sdhci@78000200 { 134 + compatible = "nvidia,tegra114-sdhci", "nvidia,tegra30-sdhci"; 135 + reg = <0x78000200 0x200>; 136 + interrupts = <0 15 0x04>; 137 + clocks = <&tegra_car 9>; 138 + status = "disable"; 139 + }; 140 + 141 + sdhci@78000400 { 142 + compatible = "nvidia,tegra114-sdhci", "nvidia,tegra30-sdhci"; 143 + reg = <0x78000400 0x200>; 144 + interrupts = <0 19 0x04>; 145 + clocks = <&tegra_car 69>; 146 + status = "disable"; 147 + }; 148 + 149 + sdhci@78000600 { 150 + compatible = "nvidia,tegra114-sdhci", "nvidia,tegra30-sdhci"; 151 + reg = <0x78000600 0x200>; 152 + interrupts = <0 31 0x04>; 153 + clocks = <&tegra_car 15>; 154 + status = "disable"; 323 155 }; 324 156 325 157 cpus {
+12
arch/arm/boot/dts/tegra20-colibri-512.dtsi
··· 361 361 }; 362 362 }; 363 363 364 + pmc { 365 + nvidia,suspend-mode = <2>; 366 + nvidia,cpu-pwr-good-time = <5000>; 367 + nvidia,cpu-pwr-off-time = <5000>; 368 + nvidia,core-pwr-good-time = <3845 3845>; 369 + nvidia,core-pwr-off-time = <3875>; 370 + nvidia,sys-clock-req-active-high; 371 + }; 372 + 364 373 memory-controller@7000f400 { 365 374 emc-table@83250 { 366 375 reg = <83250>; ··· 482 473 "Mic", "MIC1"; 483 474 484 475 nvidia,ac97-controller = <&ac97>; 476 + 477 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>; 478 + clock-names = "pll_a", "pll_a_out0", "mclk"; 485 479 }; 486 480 487 481 regulators {
+20
arch/arm/boot/dts/tegra20-harmony.dts
··· 416 416 417 417 pmc { 418 418 nvidia,invert-interrupt; 419 + nvidia,suspend-mode = <2>; 420 + nvidia,cpu-pwr-good-time = <5000>; 421 + nvidia,cpu-pwr-off-time = <5000>; 422 + nvidia,core-pwr-good-time = <3845 3845>; 423 + nvidia,core-pwr-off-time = <3875>; 424 + nvidia,sys-clock-req-active-high; 419 425 }; 420 426 421 427 usb@c5000000 { ··· 467 461 reg=<0>; 468 462 #clock-cells = <0>; 469 463 clock-frequency = <32768>; 464 + }; 465 + }; 466 + 467 + gpio-keys { 468 + compatible = "gpio-keys"; 469 + 470 + power { 471 + label = "Power"; 472 + gpios = <&gpio 170 1>; /* gpio PV2, active low */ 473 + linux,code = <116>; /* KEY_POWER */ 474 + gpio-key,wakeup; 470 475 }; 471 476 }; 472 477 ··· 686 669 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 687 670 nvidia,int-mic-en-gpios = <&gpio 184 0>; /*gpio PX0 */ 688 671 nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */ 672 + 673 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>; 674 + clock-names = "pll_a", "pll_a_out0", "mclk"; 689 675 }; 690 676 };
+7
arch/arm/boot/dts/tegra20-medcom-wide.dts
··· 6 6 model = "Avionic Design Medcom-Wide board"; 7 7 compatible = "ad,medcom-wide", "ad,tamonten", "nvidia,tegra20"; 8 8 9 + pwm { 10 + status = "okay"; 11 + }; 12 + 9 13 i2c@7000c000 { 10 14 wm8903: wm8903@1a { 11 15 compatible = "wlf,wm8903"; ··· 58 54 59 55 nvidia,spkr-en-gpios = <&wm8903 2 0>; 60 56 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 57 + 58 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>; 59 + clock-names = "pll_a", "pll_a_out0", "mclk"; 61 60 }; 62 61 };
+10
arch/arm/boot/dts/tegra20-paz00.dts
··· 415 415 416 416 pmc { 417 417 nvidia,invert-interrupt; 418 + nvidia,suspend-mode = <2>; 419 + nvidia,cpu-pwr-good-time = <2000>; 420 + nvidia,cpu-pwr-off-time = <0>; 421 + nvidia,core-pwr-good-time = <3845 3845>; 422 + nvidia,core-pwr-off-time = <0>; 423 + nvidia,sys-clock-req-active-high; 418 424 }; 419 425 420 426 usb@c5000000 { ··· 451 445 sdhci@c8000600 { 452 446 status = "okay"; 453 447 bus-width = <8>; 448 + non-removable; 454 449 }; 455 450 456 451 clocks { ··· 521 514 nvidia,audio-codec = <&alc5632>; 522 515 nvidia,i2s-controller = <&tegra_i2s1>; 523 516 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 517 + 518 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>; 519 + clock-names = "pll_a", "pll_a_out0", "mclk"; 524 520 }; 525 521 };
+3
arch/arm/boot/dts/tegra20-plutux.dts
··· 52 52 53 53 nvidia,spkr-en-gpios = <&wm8903 2 0>; 54 54 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 55 + 56 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>; 57 + clock-names = "pll_a", "pll_a_out0", "mclk"; 55 58 }; 56 59 };
+11
arch/arm/boot/dts/tegra20-seaboard.dts
··· 517 517 518 518 pmc { 519 519 nvidia,invert-interrupt; 520 + nvidia,suspend-mode = <2>; 521 + nvidia,cpu-pwr-good-time = <5000>; 522 + nvidia,cpu-pwr-off-time = <5000>; 523 + nvidia,core-pwr-good-time = <3845 3845>; 524 + nvidia,core-pwr-off-time = <3875>; 525 + nvidia,sys-clock-req-active-high; 520 526 }; 521 527 522 528 memory-controller@7000f400 { ··· 586 580 status = "okay"; 587 581 power-gpios = <&gpio 86 0>; /* gpio PK6 */ 588 582 bus-width = <4>; 583 + keep-power-in-suspend; 589 584 }; 590 585 591 586 sdhci@c8000400 { ··· 600 593 sdhci@c8000600 { 601 594 status = "okay"; 602 595 bus-width = <8>; 596 + non-removable; 603 597 }; 604 598 605 599 clocks { ··· 829 821 830 822 nvidia,spkr-en-gpios = <&wm8903 2 0>; 831 823 nvidia,hp-det-gpios = <&gpio 185 0>; /* gpio PX1 */ 824 + 825 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>; 826 + clock-names = "pll_a", "pll_a_out0", "mclk"; 832 827 }; 833 828 };
+6
arch/arm/boot/dts/tegra20-tamonten.dtsi
··· 458 458 459 459 pmc { 460 460 nvidia,invert-interrupt; 461 + nvidia,suspend-mode = <2>; 462 + nvidia,cpu-pwr-good-time = <5000>; 463 + nvidia,cpu-pwr-off-time = <5000>; 464 + nvidia,core-pwr-good-time = <3845 3845>; 465 + nvidia,core-pwr-off-time = <3875>; 466 + nvidia,sys-clock-req-active-high; 461 467 }; 462 468 463 469 usb@c5008000 {
+3
arch/arm/boot/dts/tegra20-tec.dts
··· 52 52 53 53 nvidia,spkr-en-gpios = <&wm8903 2 0>; 54 54 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 55 + 56 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>; 57 + clock-names = "pll_a", "pll_a_out0", "mclk"; 55 58 }; 56 59 };
+23
arch/arm/boot/dts/tegra20-trimslice.dts
··· 300 300 }; 301 301 }; 302 302 303 + pmc { 304 + nvidia,suspend-mode = <2>; 305 + nvidia,cpu-pwr-good-time = <5000>; 306 + nvidia,cpu-pwr-off-time = <5000>; 307 + nvidia,core-pwr-good-time = <3845 3845>; 308 + nvidia,core-pwr-off-time = <3875>; 309 + nvidia,sys-clock-req-active-high; 310 + }; 311 + 303 312 usb@c5000000 { 304 313 status = "okay"; 305 314 nvidia,vbus-gpio = <&gpio 170 0>; /* gpio PV2 */ ··· 352 343 }; 353 344 }; 354 345 346 + gpio-keys { 347 + compatible = "gpio-keys"; 348 + 349 + power { 350 + label = "Power"; 351 + gpios = <&gpio 190 1>; /* gpio PX6, active low */ 352 + linux,code = <116>; /* KEY_POWER */ 353 + gpio-key,wakeup; 354 + }; 355 + }; 356 + 355 357 poweroff { 356 358 compatible = "gpio-poweroff"; 357 359 gpios = <&gpio 191 1>; /* gpio PX7, active low */ ··· 396 376 compatible = "nvidia,tegra-audio-trimslice"; 397 377 nvidia,i2s-controller = <&tegra_i2s1>; 398 378 nvidia,audio-codec = <&codec>; 379 + 380 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>; 381 + clock-names = "pll_a", "pll_a_out0", "mclk"; 399 382 }; 400 383 };
+22
arch/arm/boot/dts/tegra20-ventana.dts
··· 493 493 494 494 pmc { 495 495 nvidia,invert-interrupt; 496 + nvidia,suspend-mode = <2>; 497 + nvidia,cpu-pwr-good-time = <2000>; 498 + nvidia,cpu-pwr-off-time = <100>; 499 + nvidia,core-pwr-good-time = <3845 3845>; 500 + nvidia,core-pwr-off-time = <458>; 501 + nvidia,sys-clock-req-active-high; 496 502 }; 497 503 498 504 usb@c5000000 { ··· 522 516 status = "okay"; 523 517 power-gpios = <&gpio 86 0>; /* gpio PK6 */ 524 518 bus-width = <4>; 519 + keep-power-in-suspend; 525 520 }; 526 521 527 522 sdhci@c8000400 { ··· 536 529 sdhci@c8000600 { 537 530 status = "okay"; 538 531 bus-width = <8>; 532 + non-removable; 539 533 }; 540 534 541 535 clocks { ··· 549 541 reg=<0>; 550 542 #clock-cells = <0>; 551 543 clock-frequency = <32768>; 544 + }; 545 + }; 546 + 547 + gpio-keys { 548 + compatible = "gpio-keys"; 549 + 550 + power { 551 + label = "Power"; 552 + gpios = <&gpio 170 1>; /* gpio PV2, active low */ 553 + linux,code = <116>; /* KEY_POWER */ 554 + gpio-key,wakeup; 552 555 }; 553 556 }; 554 557 ··· 639 620 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 640 621 nvidia,int-mic-en-gpios = <&gpio 184 0>; /* gpio PX0 */ 641 622 nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */ 623 + 624 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>; 625 + clock-names = "pll_a", "pll_a_out0", "mclk"; 642 626 }; 643 627 };
+13
arch/arm/boot/dts/tegra20-whistler.dts
··· 496 496 497 497 pmc { 498 498 nvidia,invert-interrupt; 499 + nvidia,suspend-mode = <2>; 500 + nvidia,cpu-pwr-good-time = <2000>; 501 + nvidia,cpu-pwr-off-time = <1000>; 502 + nvidia,core-pwr-good-time = <0 3845>; 503 + nvidia,core-pwr-off-time = <93727>; 504 + nvidia,core-power-req-active-high; 505 + nvidia,sys-clock-req-active-high; 506 + nvidia,combined-power-req; 499 507 }; 500 508 501 509 usb@c5000000 { ··· 526 518 sdhci@c8000600 { 527 519 status = "okay"; 528 520 bus-width = <8>; 521 + non-removable; 529 522 }; 530 523 531 524 clocks { ··· 548 539 nvidia,repeat-delay-ms = <160>; 549 540 nvidia,kbc-row-pins = <0 1 2>; 550 541 nvidia,kbc-col-pins = <16 17>; 542 + nvidia,wakeup-source; 551 543 linux,keymap = <0x00000074 /* KEY_POWER */ 552 544 0x01000066 /* KEY_HOME */ 553 545 0x0101009E /* KEY_BACK */ ··· 583 573 584 574 nvidia,i2s-controller = <&tegra_i2s1>; 585 575 nvidia,audio-codec = <&codec>; 576 + 577 + clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>; 578 + clock-names = "pll_a", "pll_a_out0", "mclk"; 586 579 }; 587 580 };
+27 -26
arch/arm/boot/dts/tegra20.dtsi
··· 209 209 compatible = "nvidia,tegra20-das"; 210 210 reg = <0x70000c00 0x80>; 211 211 }; 212 - 212 + 213 213 tegra_ac97: ac97 { 214 214 compatible = "nvidia,tegra20-ac97"; 215 215 reg = <0x70002000 0x200>; ··· 299 299 reg = <0x7000a000 0x100>; 300 300 #pwm-cells = <2>; 301 301 clocks = <&tegra_car 17>; 302 + status = "disabled"; 302 303 }; 303 304 304 305 rtc { ··· 443 442 #size-cells = <0>; 444 443 }; 445 444 446 - phy1: usb-phy@c5000400 { 447 - compatible = "nvidia,tegra20-usb-phy"; 448 - reg = <0xc5000400 0x3c00>; 449 - phy_type = "utmi"; 450 - nvidia,has-legacy-mode; 451 - clocks = <&tegra_car 22>, <&tegra_car 127>; 452 - clock-names = "phy", "pll_u"; 453 - }; 454 - 455 - phy2: usb-phy@c5004400 { 456 - compatible = "nvidia,tegra20-usb-phy"; 457 - reg = <0xc5004400 0x3c00>; 458 - phy_type = "ulpi"; 459 - clocks = <&tegra_car 94>, <&tegra_car 127>; 460 - clock-names = "phy", "pll_u"; 461 - }; 462 - 463 - phy3: usb-phy@c5008400 { 464 - compatible = "nvidia,tegra20-usb-phy"; 465 - reg = <0xc5008400 0x3C00>; 466 - phy_type = "utmi"; 467 - clocks = <&tegra_car 22>, <&tegra_car 127>; 468 - clock-names = "phy", "pll_u"; 469 - }; 470 - 471 445 usb@c5000000 { 472 446 compatible = "nvidia,tegra20-ehci", "usb-ehci"; 473 447 reg = <0xc5000000 0x4000>; ··· 455 479 status = "disabled"; 456 480 }; 457 481 482 + phy1: usb-phy@c5000400 { 483 + compatible = "nvidia,tegra20-usb-phy"; 484 + reg = <0xc5000400 0x3c00>; 485 + phy_type = "utmi"; 486 + nvidia,has-legacy-mode; 487 + clocks = <&tegra_car 22>, <&tegra_car 127>; 488 + clock-names = "phy", "pll_u"; 489 + }; 490 + 458 491 usb@c5004000 { 459 492 compatible = "nvidia,tegra20-ehci", "usb-ehci"; 460 493 reg = <0xc5004000 0x4000>; ··· 474 489 status = "disabled"; 475 490 }; 476 491 492 + phy2: usb-phy@c5004400 { 493 + compatible = "nvidia,tegra20-usb-phy"; 494 + reg = <0xc5004400 0x3c00>; 495 + phy_type = "ulpi"; 496 + clocks = <&tegra_car 93>, <&tegra_car 127>; 497 + clock-names = "phy", "pll_u"; 498 + }; 499 + 477 500 usb@c5008000 { 478 501 compatible = "nvidia,tegra20-ehci", "usb-ehci"; 479 502 reg = <0xc5008000 0x4000>; ··· 490 497 clocks = <&tegra_car 59>; 491 498 nvidia,phy = <&phy3>; 492 499 status = "disabled"; 500 + }; 501 + 502 + phy3: usb-phy@c5008400 { 503 + compatible = "nvidia,tegra20-usb-phy"; 504 + reg = <0xc5008400 0x3c00>; 505 + phy_type = "utmi"; 506 + clocks = <&tegra_car 22>, <&tegra_car 127>; 507 + clock-names = "phy", "pll_u"; 493 508 }; 494 509 495 510 sdhci@c8000000 {
+8
arch/arm/boot/dts/tegra30-beaver.dts
··· 253 253 pmc { 254 254 status = "okay"; 255 255 nvidia,invert-interrupt; 256 + nvidia,suspend-mode = <2>; 257 + nvidia,cpu-pwr-good-time = <2000>; 258 + nvidia,cpu-pwr-off-time = <200>; 259 + nvidia,core-pwr-good-time = <3845 3845>; 260 + nvidia,core-pwr-off-time = <0>; 261 + nvidia,core-power-req-active-high; 262 + nvidia,sys-clock-req-active-high; 256 263 }; 257 264 258 265 sdhci@78000000 { ··· 273 266 sdhci@78000600 { 274 267 status = "okay"; 275 268 bus-width = <8>; 269 + non-removable; 276 270 }; 277 271 278 272 clocks {
+1
arch/arm/boot/dts/tegra30-cardhu-a02.dts
··· 88 88 status = "okay"; 89 89 power-gpios = <&gpio 28 0>; /* gpio PD4 */ 90 90 bus-width = <4>; 91 + keep-power-in-suspend; 91 92 }; 92 93 }; 93 94
+1
arch/arm/boot/dts/tegra30-cardhu-a04.dts
··· 100 100 status = "okay"; 101 101 power-gpios = <&gpio 27 0>; /* gpio PD3 */ 102 102 bus-width = <4>; 103 + keep-power-in-suspend; 103 104 }; 104 105 };
+11
arch/arm/boot/dts/tegra30-cardhu.dtsi
··· 307 307 pmc { 308 308 status = "okay"; 309 309 nvidia,invert-interrupt; 310 + nvidia,suspend-mode = <2>; 311 + nvidia,cpu-pwr-good-time = <2000>; 312 + nvidia,cpu-pwr-off-time = <200>; 313 + nvidia,core-pwr-good-time = <3845 3845>; 314 + nvidia,core-pwr-off-time = <0>; 315 + nvidia,core-power-req-active-high; 316 + nvidia,sys-clock-req-active-high; 310 317 }; 311 318 312 319 sdhci@78000000 { ··· 327 320 sdhci@78000600 { 328 321 status = "okay"; 329 322 bus-width = <8>; 323 + non-removable; 330 324 }; 331 325 332 326 clocks { ··· 517 509 518 510 nvidia,spkr-en-gpios = <&wm8903 2 0>; 519 511 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 512 + 513 + clocks = <&tegra_car 184>, <&tegra_car 185>, <&tegra_car 120>; 514 + clock-names = "pll_a", "pll_a_out0", "mclk"; 520 515 }; 521 516 };
+1
arch/arm/boot/dts/tegra30.dtsi
··· 286 286 reg = <0x7000a000 0x100>; 287 287 #pwm-cells = <2>; 288 288 clocks = <&tegra_car 17>; 289 + status = "disabled"; 289 290 }; 290 291 291 292 rtc {
+17 -1
arch/arm/boot/dts/twl4030.dtsi
··· 23 23 compatible = "ti,twl4030-wdt"; 24 24 }; 25 25 26 + vcc: regulator-vdd1 { 27 + compatible = "ti,twl4030-vdd1"; 28 + regulator-min-microvolt = <600000>; 29 + regulator-max-microvolt = <1450000>; 30 + }; 31 + 26 32 vdac: regulator-vdac { 27 33 compatible = "ti,twl4030-vdac"; 28 34 regulator-min-microvolt = <1800000>; ··· 73 67 #interrupt-cells = <1>; 74 68 }; 75 69 76 - twl4030-usb { 70 + usb2_phy: twl4030-usb { 77 71 compatible = "ti,twl4030-usb"; 78 72 interrupts = <10>, <4>; 79 73 usb1v5-supply = <&vusb1v5>; 80 74 usb1v8-supply = <&vusb1v8>; 81 75 usb3v1-supply = <&vusb3v1>; 82 76 usb_mode = <1>; 77 + }; 78 + 79 + twl_pwm: pwm { 80 + compatible = "ti,twl4030-pwm"; 81 + #pwm-cells = <2>; 82 + }; 83 + 84 + twl_pwmled: pwmled { 85 + compatible = "ti,twl4030-pwmled"; 86 + #pwm-cells = <2>; 83 87 }; 84 88 };
+12
arch/arm/boot/dts/twl6030.dtsi
··· 91 91 compatible = "ti,twl6030-usb"; 92 92 interrupts = <4>, <10>; 93 93 }; 94 + 95 + twl_pwm: pwm { 96 + /* provides two PWMs (id 0, 1 for PWM1 and PWM2) */ 97 + compatible = "ti,twl6030-pwm"; 98 + #pwm-cells = <2>; 99 + }; 100 + 101 + twl_pwmled: pwmled { 102 + /* provides one PWM (id 0 for Charging indicator LED) */ 103 + compatible = "ti,twl6030-pwmled"; 104 + #pwm-cells = <2>; 105 + }; 94 106 };
+6
arch/arm/mach-davinci/da8xx-dt.c
··· 41 41 OF_DEV_AUXDATA("ti,davinci-i2c", 0x01c22000, "i2c_davinci.1", NULL), 42 42 OF_DEV_AUXDATA("ti,davinci-wdt", 0x01c21000, "watchdog", NULL), 43 43 OF_DEV_AUXDATA("ti,da830-mmc", 0x01c40000, "da830-mmc.0", NULL), 44 + OF_DEV_AUXDATA("ti,da850-ehrpwm", 0x01f00000, "ehrpwm", NULL), 45 + OF_DEV_AUXDATA("ti,da850-ehrpwm", 0x01f02000, "ehrpwm", NULL), 46 + OF_DEV_AUXDATA("ti,da850-ecap", 0x01f06000, "ecap", NULL), 47 + OF_DEV_AUXDATA("ti,da850-ecap", 0x01f07000, "ecap", NULL), 48 + OF_DEV_AUXDATA("ti,da850-ecap", 0x01f08000, "ecap", NULL), 49 + OF_DEV_AUXDATA("ti,da830-spi", 0x01f0e000, "spi_davinci.1", NULL), 44 50 {} 45 51 }; 46 52
+30 -23
arch/arm/mach-exynos/common.c
··· 120 120 }, 121 121 }; 122 122 123 - #ifdef CONFIG_ARCH_EXYNOS5 124 - static struct map_desc exynos5440_iodesc[] __initdata = { 125 - { 126 - .virtual = (unsigned long)S5P_VA_CHIPID, 127 - .pfn = __phys_to_pfn(EXYNOS5440_PA_CHIPID), 128 - .length = SZ_4K, 129 - .type = MT_DEVICE, 130 - }, 131 - }; 132 - #endif 133 - 134 123 static struct map_desc exynos4_iodesc[] __initdata = { 135 124 { 136 125 .virtual = (unsigned long)S3C_VA_SYS, ··· 337 348 exynos_pm_late_initcall(); 338 349 } 339 350 351 + #ifdef CONFIG_OF 352 + int __init exynos_fdt_map_chipid(unsigned long node, const char *uname, 353 + int depth, void *data) 354 + { 355 + struct map_desc iodesc; 356 + __be32 *reg; 357 + unsigned long len; 358 + 359 + if (!of_flat_dt_is_compatible(node, "samsung,exynos4210-chipid") && 360 + !of_flat_dt_is_compatible(node, "samsung,exynos5440-clock")) 361 + return 0; 362 + 363 + reg = of_get_flat_dt_prop(node, "reg", &len); 364 + if (reg == NULL || len != (sizeof(unsigned long) * 2)) 365 + return 0; 366 + 367 + iodesc.pfn = __phys_to_pfn(be32_to_cpu(reg[0])); 368 + iodesc.length = be32_to_cpu(reg[1]) - 1; 369 + iodesc.virtual = (unsigned long)S5P_VA_CHIPID; 370 + iodesc.type = MT_DEVICE; 371 + iotable_init(&iodesc, 1); 372 + return 1; 373 + } 374 + #endif 375 + 340 376 /* 341 377 * exynos_map_io 342 378 * ··· 370 356 371 357 void __init exynos_init_io(struct map_desc *mach_desc, int size) 372 358 { 373 - struct map_desc *iodesc = exynos_iodesc; 374 - int iodesc_sz = ARRAY_SIZE(exynos_iodesc); 375 - #if defined(CONFIG_OF) && defined(CONFIG_ARCH_EXYNOS5) 376 - unsigned long root = of_get_flat_dt_root(); 377 - 378 - /* initialize the io descriptors we need for initialization */ 379 - if (of_flat_dt_is_compatible(root, "samsung,exynos5440")) { 380 - iodesc = exynos5440_iodesc; 381 - iodesc_sz = ARRAY_SIZE(exynos5440_iodesc); 382 - } 359 + #ifdef CONFIG_OF 360 + if (initial_boot_params) 361 + of_scan_flat_dt(exynos_fdt_map_chipid, NULL); 362 + else 383 363 #endif 384 - 385 - iotable_init(iodesc, iodesc_sz); 364 + iotable_init(exynos_iodesc, ARRAY_SIZE(exynos_iodesc)); 386 365 387 366 if (mach_desc) 388 367 iotable_init(mach_desc, size);
-1
arch/arm/mach-exynos/include/mach/map.h
··· 56 56 #define EXYNOS4_PA_ONENAND_DMA 0x0C600000 57 57 58 58 #define EXYNOS_PA_CHIPID 0x10000000 59 - #define EXYNOS5440_PA_CHIPID 0x00160000 60 59 61 60 #define EXYNOS4_PA_SYSCON 0x10010000 62 61 #define EXYNOS5_PA_SYSCON 0x10050100
-170
arch/arm/mach-mxs/mach-mxs.c
··· 22 22 #include <linux/irqchip.h> 23 23 #include <linux/irqchip/mxs.h> 24 24 #include <linux/micrel_phy.h> 25 - #include <linux/mxsfb.h> 26 25 #include <linux/of_address.h> 27 26 #include <linux/of_platform.h> 28 27 #include <linux/phy.h> ··· 60 61 __raw_writel(mask, reg + MXS_TOG_ADDR); 61 62 } 62 63 63 - static struct fb_videomode mx23evk_video_modes[] = { 64 - { 65 - .name = "Samsung-LMS430HF02", 66 - .refresh = 60, 67 - .xres = 480, 68 - .yres = 272, 69 - .pixclock = 108096, /* picosecond (9.2 MHz) */ 70 - .left_margin = 15, 71 - .right_margin = 8, 72 - .upper_margin = 12, 73 - .lower_margin = 4, 74 - .hsync_len = 1, 75 - .vsync_len = 1, 76 - }, 77 - }; 78 - 79 - static struct fb_videomode mx28evk_video_modes[] = { 80 - { 81 - .name = "Seiko-43WVF1G", 82 - .refresh = 60, 83 - .xres = 800, 84 - .yres = 480, 85 - .pixclock = 29851, /* picosecond (33.5 MHz) */ 86 - .left_margin = 89, 87 - .right_margin = 164, 88 - .upper_margin = 23, 89 - .lower_margin = 10, 90 - .hsync_len = 10, 91 - .vsync_len = 10, 92 - }, 93 - }; 94 - 95 - static struct fb_videomode m28evk_video_modes[] = { 96 - { 97 - .name = "Ampire AM-800480R2TMQW-T01H", 98 - .refresh = 60, 99 - .xres = 800, 100 - .yres = 480, 101 - .pixclock = 30066, /* picosecond (33.26 MHz) */ 102 - .left_margin = 0, 103 - .right_margin = 256, 104 - .upper_margin = 0, 105 - .lower_margin = 45, 106 - .hsync_len = 1, 107 - .vsync_len = 1, 108 - }, 109 - }; 110 - 111 - static struct fb_videomode apx4devkit_video_modes[] = { 112 - { 113 - .name = "HannStar PJ70112A", 114 - .refresh = 60, 115 - .xres = 800, 116 - .yres = 480, 117 - .pixclock = 33333, /* picosecond (30.00 MHz) */ 118 - .left_margin = 88, 119 - .right_margin = 40, 120 - .upper_margin = 32, 121 - .lower_margin = 13, 122 - .hsync_len = 48, 123 - .vsync_len = 3, 124 - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 125 - }, 126 - }; 127 - 128 - static struct fb_videomode apf28dev_video_modes[] = { 129 - { 130 - .name = "LW700", 131 - .refresh = 60, 132 - .xres = 800, 133 - .yres = 480, 134 - .pixclock = 30303, /* picosecond */ 135 - .left_margin = 96, 136 - .right_margin = 96, /* at least 3 & 1 */ 137 - .upper_margin = 0x14, 138 - .lower_margin = 0x15, 139 - .hsync_len = 64, 140 - .vsync_len = 4, 141 - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 142 - }, 143 - }; 144 - 145 - static struct fb_videomode cfa10049_video_modes[] = { 146 - { 147 - .name = "Himax HX8357-B", 148 - .refresh = 60, 149 - .xres = 320, 150 - .yres = 480, 151 - .pixclock = 108506, /* picosecond (9.216 MHz) */ 152 - .left_margin = 2, 153 - .right_margin = 2, 154 - .upper_margin = 2, 155 - .lower_margin = 2, 156 - .hsync_len = 15, 157 - .vsync_len = 15, 158 - }, 159 - }; 160 - 161 - static struct mxsfb_platform_data mxsfb_pdata __initdata; 162 - 163 64 /* 164 65 * MX28EVK_FLEXCAN_SWITCH is shared between both flexcan controllers 165 66 */ ··· 90 191 static struct flexcan_platform_data flexcan_pdata[2]; 91 192 92 193 static struct of_dev_auxdata mxs_auxdata_lookup[] __initdata = { 93 - OF_DEV_AUXDATA("fsl,imx23-lcdif", 0x80030000, NULL, &mxsfb_pdata), 94 - OF_DEV_AUXDATA("fsl,imx28-lcdif", 0x80030000, NULL, &mxsfb_pdata), 95 194 OF_DEV_AUXDATA("fsl,imx28-flexcan", 0x80032000, NULL, &flexcan_pdata[0]), 96 195 OF_DEV_AUXDATA("fsl,imx28-flexcan", 0x80034000, NULL, &flexcan_pdata[1]), 97 196 { /* sentinel */ } ··· 239 342 } 240 343 } 241 344 242 - static void __init imx23_evk_init(void) 243 - { 244 - mxsfb_pdata.mode_list = mx23evk_video_modes; 245 - mxsfb_pdata.mode_count = ARRAY_SIZE(mx23evk_video_modes); 246 - mxsfb_pdata.default_bpp = 32; 247 - mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT; 248 - mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT | 249 - MXSFB_SYNC_DOTCLK_FAILING_ACT; 250 - } 251 - 252 345 static inline void enable_clk_enet_out(void) 253 346 { 254 347 struct clk *clk = clk_get_sys("enet_out", NULL); ··· 249 362 250 363 static void __init imx28_evk_init(void) 251 364 { 252 - enable_clk_enet_out(); 253 365 update_fec_mac_prop(OUI_FSL); 254 - 255 - mxsfb_pdata.mode_list = mx28evk_video_modes; 256 - mxsfb_pdata.mode_count = ARRAY_SIZE(mx28evk_video_modes); 257 - mxsfb_pdata.default_bpp = 32; 258 - mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT; 259 - mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT | 260 - MXSFB_SYNC_DOTCLK_FAILING_ACT; 261 366 262 367 mxs_saif_clkmux_select(MXS_DIGCTL_SAIF_CLKMUX_EXTMSTR0); 263 368 } ··· 261 382 flexcan_pdata[0].transceiver_switch = mx28evk_flexcan0_switch; 262 383 flexcan_pdata[1].transceiver_switch = mx28evk_flexcan1_switch; 263 384 } 264 - } 265 - 266 - static void __init m28evk_init(void) 267 - { 268 - mxsfb_pdata.mode_list = m28evk_video_modes; 269 - mxsfb_pdata.mode_count = ARRAY_SIZE(m28evk_video_modes); 270 - mxsfb_pdata.default_bpp = 16; 271 - mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT; 272 - mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT; 273 - } 274 - 275 - static void __init sc_sps1_init(void) 276 - { 277 - enable_clk_enet_out(); 278 385 } 279 386 280 387 static int apx4devkit_phy_fixup(struct phy_device *phy) ··· 276 411 if (IS_BUILTIN(CONFIG_PHYLIB)) 277 412 phy_register_fixup_for_uid(PHY_ID_KSZ8051, MICREL_PHY_ID_MASK, 278 413 apx4devkit_phy_fixup); 279 - 280 - mxsfb_pdata.mode_list = apx4devkit_video_modes; 281 - mxsfb_pdata.mode_count = ARRAY_SIZE(apx4devkit_video_modes); 282 - mxsfb_pdata.default_bpp = 32; 283 - mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT; 284 - mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT | 285 - MXSFB_SYNC_DOTCLK_FAILING_ACT; 286 414 } 287 415 288 416 #define ENET0_MDC__GPIO_4_0 MXS_GPIO_NR(4, 0) ··· 354 496 355 497 static void __init cfa10049_init(void) 356 498 { 357 - enable_clk_enet_out(); 358 499 update_fec_mac_prop(OUI_CRYSTALFONTZ); 359 - 360 - mxsfb_pdata.mode_list = cfa10049_video_modes; 361 - mxsfb_pdata.mode_count = ARRAY_SIZE(cfa10049_video_modes); 362 - mxsfb_pdata.default_bpp = 32; 363 - mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT; 364 - mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT; 365 500 } 366 501 367 502 static void __init cfa10037_init(void) 368 503 { 369 - enable_clk_enet_out(); 370 504 update_fec_mac_prop(OUI_CRYSTALFONTZ); 371 - } 372 - 373 - static void __init apf28_init(void) 374 - { 375 - enable_clk_enet_out(); 376 - 377 - mxsfb_pdata.mode_list = apf28dev_video_modes; 378 - mxsfb_pdata.mode_count = ARRAY_SIZE(apf28dev_video_modes); 379 - mxsfb_pdata.default_bpp = 16; 380 - mxsfb_pdata.ld_intf_width = STMLCDIF_16BIT; 381 - mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT | 382 - MXSFB_SYNC_DOTCLK_FAILING_ACT; 383 505 } 384 506 385 507 static void __init mxs_machine_init(void) 386 508 { 387 509 if (of_machine_is_compatible("fsl,imx28-evk")) 388 510 imx28_evk_init(); 389 - else if (of_machine_is_compatible("fsl,imx23-evk")) 390 - imx23_evk_init(); 391 - else if (of_machine_is_compatible("denx,m28evk")) 392 - m28evk_init(); 393 511 else if (of_machine_is_compatible("bluegiga,apx4devkit")) 394 512 apx4devkit_init(); 395 513 else if (of_machine_is_compatible("crystalfontz,cfa10037")) 396 514 cfa10037_init(); 397 515 else if (of_machine_is_compatible("crystalfontz,cfa10049")) 398 516 cfa10049_init(); 399 - else if (of_machine_is_compatible("armadeus,imx28-apf28")) 400 - apf28_init(); 401 - else if (of_machine_is_compatible("schulercontrol,imx28-sps1")) 402 - sc_sps1_init(); 403 517 404 518 of_platform_populate(NULL, of_default_bus_match_table, 405 519 mxs_auxdata_lookup, NULL);
+1
arch/arm/mach-omap2/board-generic.c
··· 110 110 111 111 static const char *omap3_gp_boards_compat[] __initdata = { 112 112 "ti,omap3-beagle", 113 + "timll,omap3-devkit8000", 113 114 NULL, 114 115 }; 115 116
+44 -4
arch/arm/mach-omap2/omap_hwmod.c
··· 139 139 #include <linux/slab.h> 140 140 #include <linux/bootmem.h> 141 141 #include <linux/cpu.h> 142 + #include <linux/of.h> 143 + #include <linux/of_address.h> 142 144 143 145 #include <asm/system_misc.h> 144 146 ··· 2352 2350 } 2353 2351 2354 2352 /** 2353 + * of_dev_hwmod_lookup - look up needed hwmod from dt blob 2354 + * @np: struct device_node * 2355 + * @oh: struct omap_hwmod * 2356 + * 2357 + * Parse the dt blob and find out needed hwmod. Recursive function is 2358 + * implemented to take care hierarchical dt blob parsing. 2359 + * Return: The device node on success or NULL on failure. 2360 + */ 2361 + static struct device_node *of_dev_hwmod_lookup(struct device_node *np, 2362 + struct omap_hwmod *oh) 2363 + { 2364 + struct device_node *np0 = NULL, *np1 = NULL; 2365 + const char *p; 2366 + 2367 + for_each_child_of_node(np, np0) { 2368 + if (of_find_property(np0, "ti,hwmods", NULL)) { 2369 + p = of_get_property(np0, "ti,hwmods", NULL); 2370 + if (!strcmp(p, oh->name)) 2371 + return np0; 2372 + np1 = of_dev_hwmod_lookup(np0, oh); 2373 + if (np1) 2374 + return np1; 2375 + } 2376 + } 2377 + return NULL; 2378 + } 2379 + 2380 + /** 2355 2381 * _init_mpu_rt_base - populate the virtual address for a hwmod 2356 2382 * @oh: struct omap_hwmod * to locate the virtual address 2357 2383 * ··· 2391 2361 static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data) 2392 2362 { 2393 2363 struct omap_hwmod_addr_space *mem; 2394 - void __iomem *va_start; 2364 + void __iomem *va_start = NULL; 2365 + struct device_node *np; 2395 2366 2396 2367 if (!oh) 2397 2368 return; ··· 2406 2375 if (!mem) { 2407 2376 pr_debug("omap_hwmod: %s: no MPU register target found\n", 2408 2377 oh->name); 2409 - return; 2378 + 2379 + /* Extract the IO space from device tree blob */ 2380 + if (!of_have_populated_dt()) 2381 + return; 2382 + 2383 + np = of_dev_hwmod_lookup(of_find_node_by_name(NULL, "ocp"), oh); 2384 + if (np) 2385 + va_start = of_iomap(np, 0); 2386 + } else { 2387 + va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start); 2410 2388 } 2411 2389 2412 - va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start); 2413 2390 if (!va_start) { 2414 2391 pr_err("omap_hwmod: %s: Could not ioremap\n", oh->name); 2415 2392 return; ··· 2449 2410 if (oh->_state != _HWMOD_STATE_REGISTERED) 2450 2411 return 0; 2451 2412 2452 - _init_mpu_rt_base(oh, NULL); 2413 + if (oh->class->sysc) 2414 + _init_mpu_rt_base(oh, NULL); 2453 2415 2454 2416 r = _init_clocks(oh, NULL); 2455 2417 if (r < 0) {
+11 -3
arch/arm/mach-omap2/pmu.c
··· 11 11 * the Free Software Foundation; either version 2 of the License, or 12 12 * (at your option) any later version. 13 13 */ 14 + #include <linux/of.h> 15 + 14 16 #include <asm/pmu.h> 15 17 16 18 #include "soc.h" ··· 65 63 unsigned oh_num; 66 64 char **oh_names; 67 65 66 + /* XXX Remove this check when the CTI driver is available */ 67 + if (cpu_is_omap443x()) { 68 + pr_info("ARM PMU: not yet supported on OMAP4430 due to missing CTI driver\n"); 69 + return 0; 70 + } 71 + 72 + if (of_have_populated_dt()) 73 + return 0; 74 + 68 75 /* 69 76 * To create an ARM-PMU device the following HWMODs 70 77 * are required for the various OMAP2+ devices. ··· 86 75 if (cpu_is_omap443x()) { 87 76 oh_num = ARRAY_SIZE(omap4430_pmu_oh_names); 88 77 oh_names = omap4430_pmu_oh_names; 89 - /* XXX Remove the next two lines when CTI driver available */ 90 - pr_info("ARM PMU: not yet supported on OMAP4430 due to missing CTI driver\n"); 91 - return 0; 92 78 } else if (cpu_is_omap34xx() || cpu_is_omap44xx()) { 93 79 oh_num = ARRAY_SIZE(omap3_pmu_oh_names); 94 80 oh_names = omap3_pmu_oh_names;
+6 -1
arch/arm/mach-omap2/timer.c
··· 133 133 }; 134 134 135 135 static struct of_device_id omap_timer_match[] __initdata = { 136 - { .compatible = "ti,omap2-timer", }, 136 + { .compatible = "ti,omap2420-timer", }, 137 + { .compatible = "ti,omap3430-timer", }, 138 + { .compatible = "ti,omap4430-timer", }, 139 + { .compatible = "ti,omap5430-timer", }, 140 + { .compatible = "ti,am335x-timer", }, 141 + { .compatible = "ti,am335x-timer-1ms", }, 137 142 { } 138 143 }; 139 144
+146 -99
arch/arm/plat-omap/dmtimer.c
··· 52 52 static LIST_HEAD(omap_timer_list); 53 53 static DEFINE_SPINLOCK(dm_timer_lock); 54 54 55 + enum { 56 + REQUEST_ANY = 0, 57 + REQUEST_BY_ID, 58 + REQUEST_BY_CAP, 59 + REQUEST_BY_NODE, 60 + }; 61 + 55 62 /** 56 63 * omap_dm_timer_read_reg - read timer registers in posted and non-posted mode 57 64 * @timer: timer pointer over which read operation to perform ··· 184 177 return 0; 185 178 } 186 179 187 - struct omap_dm_timer *omap_dm_timer_request(void) 180 + static struct omap_dm_timer *_omap_dm_timer_request(int req_type, void *data) 188 181 { 189 182 struct omap_dm_timer *timer = NULL, *t; 183 + struct device_node *np = NULL; 190 184 unsigned long flags; 191 - int ret = 0; 185 + u32 cap = 0; 186 + int id = 0; 187 + 188 + switch (req_type) { 189 + case REQUEST_BY_ID: 190 + id = *(int *)data; 191 + break; 192 + case REQUEST_BY_CAP: 193 + cap = *(u32 *)data; 194 + break; 195 + case REQUEST_BY_NODE: 196 + np = (struct device_node *)data; 197 + break; 198 + default: 199 + /* REQUEST_ANY */ 200 + break; 201 + } 192 202 193 203 spin_lock_irqsave(&dm_timer_lock, flags); 194 204 list_for_each_entry(t, &omap_timer_list, node) { 195 205 if (t->reserved) 196 206 continue; 197 207 198 - timer = t; 199 - timer->reserved = 1; 200 - break; 208 + switch (req_type) { 209 + case REQUEST_BY_ID: 210 + if (id == t->pdev->id) { 211 + timer = t; 212 + timer->reserved = 1; 213 + goto found; 214 + } 215 + break; 216 + case REQUEST_BY_CAP: 217 + if (cap == (t->capability & cap)) { 218 + /* 219 + * If timer is not NULL, we have already found 220 + * one timer but it was not an exact match 221 + * because it had more capabilites that what 222 + * was required. Therefore, unreserve the last 223 + * timer found and see if this one is a better 224 + * match. 225 + */ 226 + if (timer) 227 + timer->reserved = 0; 228 + timer = t; 229 + timer->reserved = 1; 230 + 231 + /* Exit loop early if we find an exact match */ 232 + if (t->capability == cap) 233 + goto found; 234 + } 235 + break; 236 + case REQUEST_BY_NODE: 237 + if (np == t->pdev->dev.of_node) { 238 + timer = t; 239 + timer->reserved = 1; 240 + goto found; 241 + } 242 + break; 243 + default: 244 + /* REQUEST_ANY */ 245 + timer = t; 246 + timer->reserved = 1; 247 + goto found; 248 + } 201 249 } 250 + found: 202 251 spin_unlock_irqrestore(&dm_timer_lock, flags); 203 252 204 - if (timer) { 205 - ret = omap_dm_timer_prepare(timer); 206 - if (ret) { 207 - timer->reserved = 0; 208 - timer = NULL; 209 - } 253 + if (timer && omap_dm_timer_prepare(timer)) { 254 + timer->reserved = 0; 255 + timer = NULL; 210 256 } 211 257 212 258 if (!timer) ··· 267 207 268 208 return timer; 269 209 } 210 + 211 + struct omap_dm_timer *omap_dm_timer_request(void) 212 + { 213 + return _omap_dm_timer_request(REQUEST_ANY, NULL); 214 + } 270 215 EXPORT_SYMBOL_GPL(omap_dm_timer_request); 271 216 272 217 struct omap_dm_timer *omap_dm_timer_request_specific(int id) 273 218 { 274 - struct omap_dm_timer *timer = NULL, *t; 275 - unsigned long flags; 276 - int ret = 0; 277 - 278 219 /* Requesting timer by ID is not supported when device tree is used */ 279 220 if (of_have_populated_dt()) { 280 - pr_warn("%s: Please use omap_dm_timer_request_by_cap()\n", 221 + pr_warn("%s: Please use omap_dm_timer_request_by_cap/node()\n", 281 222 __func__); 282 223 return NULL; 283 224 } 284 225 285 - spin_lock_irqsave(&dm_timer_lock, flags); 286 - list_for_each_entry(t, &omap_timer_list, node) { 287 - if (t->pdev->id == id && !t->reserved) { 288 - timer = t; 289 - timer->reserved = 1; 290 - break; 291 - } 292 - } 293 - spin_unlock_irqrestore(&dm_timer_lock, flags); 294 - 295 - if (timer) { 296 - ret = omap_dm_timer_prepare(timer); 297 - if (ret) { 298 - timer->reserved = 0; 299 - timer = NULL; 300 - } 301 - } 302 - 303 - if (!timer) 304 - pr_debug("%s: timer%d request failed!\n", __func__, id); 305 - 306 - return timer; 226 + return _omap_dm_timer_request(REQUEST_BY_ID, &id); 307 227 } 308 228 EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific); 309 229 ··· 298 258 */ 299 259 struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap) 300 260 { 301 - struct omap_dm_timer *timer = NULL, *t; 302 - unsigned long flags; 303 - 304 - if (!cap) 305 - return NULL; 306 - 307 - spin_lock_irqsave(&dm_timer_lock, flags); 308 - list_for_each_entry(t, &omap_timer_list, node) { 309 - if ((!t->reserved) && ((t->capability & cap) == cap)) { 310 - /* 311 - * If timer is not NULL, we have already found one timer 312 - * but it was not an exact match because it had more 313 - * capabilites that what was required. Therefore, 314 - * unreserve the last timer found and see if this one 315 - * is a better match. 316 - */ 317 - if (timer) 318 - timer->reserved = 0; 319 - 320 - timer = t; 321 - timer->reserved = 1; 322 - 323 - /* Exit loop early if we find an exact match */ 324 - if (t->capability == cap) 325 - break; 326 - } 327 - } 328 - spin_unlock_irqrestore(&dm_timer_lock, flags); 329 - 330 - if (timer && omap_dm_timer_prepare(timer)) { 331 - timer->reserved = 0; 332 - timer = NULL; 333 - } 334 - 335 - if (!timer) 336 - pr_debug("%s: timer request failed!\n", __func__); 337 - 338 - return timer; 261 + return _omap_dm_timer_request(REQUEST_BY_CAP, &cap); 339 262 } 340 263 EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_cap); 264 + 265 + /** 266 + * omap_dm_timer_request_by_node - Request a timer by device-tree node 267 + * @np: Pointer to device-tree timer node 268 + * 269 + * Request a timer based upon a device node pointer. Returns pointer to 270 + * timer handle on success and a NULL pointer on failure. 271 + */ 272 + struct omap_dm_timer *omap_dm_timer_request_by_node(struct device_node *np) 273 + { 274 + if (!np) 275 + return NULL; 276 + 277 + return _omap_dm_timer_request(REQUEST_BY_NODE, np); 278 + } 279 + EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_node); 341 280 342 281 int omap_dm_timer_free(struct omap_dm_timer *timer) 343 282 { ··· 333 314 334 315 void omap_dm_timer_enable(struct omap_dm_timer *timer) 335 316 { 317 + int c; 318 + 336 319 pm_runtime_get_sync(&timer->pdev->dev); 320 + 321 + if (!(timer->capability & OMAP_TIMER_ALWON)) { 322 + if (timer->get_context_loss_count) { 323 + c = timer->get_context_loss_count(&timer->pdev->dev); 324 + if (c != timer->ctx_loss_count) { 325 + omap_timer_restore_context(timer); 326 + timer->ctx_loss_count = c; 327 + } 328 + } else { 329 + omap_timer_restore_context(timer); 330 + } 331 + } 337 332 } 338 333 EXPORT_SYMBOL_GPL(omap_dm_timer_enable); 339 334 ··· 442 409 443 410 omap_dm_timer_enable(timer); 444 411 445 - if (!(timer->capability & OMAP_TIMER_ALWON)) { 446 - if (timer->get_context_loss_count && 447 - timer->get_context_loss_count(&timer->pdev->dev) != 448 - timer->ctx_loss_count) 449 - omap_timer_restore_context(timer); 450 - } 451 - 452 412 l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG); 453 413 if (!(l & OMAP_TIMER_CTRL_ST)) { 454 414 l |= OMAP_TIMER_CTRL_ST; ··· 465 439 rate = clk_get_rate(timer->fclk); 466 440 467 441 __omap_dm_timer_stop(timer, timer->posted, rate); 468 - 469 - if (!(timer->capability & OMAP_TIMER_ALWON)) { 470 - if (timer->get_context_loss_count) 471 - timer->ctx_loss_count = 472 - timer->get_context_loss_count(&timer->pdev->dev); 473 - } 474 442 475 443 /* 476 444 * Since the register values are computed and written within ··· 571 551 return -EINVAL; 572 552 573 553 omap_dm_timer_enable(timer); 574 - 575 - if (!(timer->capability & OMAP_TIMER_ALWON)) { 576 - if (timer->get_context_loss_count && 577 - timer->get_context_loss_count(&timer->pdev->dev) != 578 - timer->ctx_loss_count) 579 - omap_timer_restore_context(timer); 580 - } 581 554 582 555 l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG); 583 556 if (autoreload) { ··· 782 769 } 783 770 EXPORT_SYMBOL_GPL(omap_dm_timers_active); 784 771 772 + static const struct of_device_id omap_timer_match[]; 773 + 785 774 /** 786 775 * omap_dm_timer_probe - probe function called for every registered device 787 776 * @pdev: pointer to current timer platform device ··· 797 782 struct omap_dm_timer *timer; 798 783 struct resource *mem, *irq; 799 784 struct device *dev = &pdev->dev; 800 - struct dmtimer_platform_data *pdata = pdev->dev.platform_data; 785 + const struct of_device_id *match; 786 + const struct dmtimer_platform_data *pdata; 787 + 788 + match = of_match_device(of_match_ptr(omap_timer_match), dev); 789 + pdata = match ? match->data : dev->platform_data; 801 790 802 791 if (!pdata && !dev->of_node) { 803 792 dev_err(dev, "%s: no platform data.\n", __func__); ··· 842 823 timer->capability |= OMAP_TIMER_SECURE; 843 824 } else { 844 825 timer->id = pdev->id; 845 - timer->errata = pdata->timer_errata; 846 826 timer->capability = pdata->timer_capability; 847 827 timer->reserved = omap_dm_timer_reserved_systimer(timer->id); 848 828 timer->get_context_loss_count = pdata->get_context_loss_count; 849 829 } 830 + 831 + if (pdata) 832 + timer->errata = pdata->timer_errata; 850 833 851 834 timer->irq = irq->start; 852 835 timer->pdev = pdev; ··· 902 881 return ret; 903 882 } 904 883 884 + static const struct dmtimer_platform_data omap3plus_pdata = { 885 + .timer_errata = OMAP_TIMER_ERRATA_I103_I767, 886 + }; 887 + 905 888 static const struct of_device_id omap_timer_match[] = { 906 - { .compatible = "ti,omap2-timer", }, 889 + { 890 + .compatible = "ti,omap2420-timer", 891 + }, 892 + { 893 + .compatible = "ti,omap3430-timer", 894 + .data = &omap3plus_pdata, 895 + }, 896 + { 897 + .compatible = "ti,omap4430-timer", 898 + .data = &omap3plus_pdata, 899 + }, 900 + { 901 + .compatible = "ti,omap5430-timer", 902 + .data = &omap3plus_pdata, 903 + }, 904 + { 905 + .compatible = "ti,am335x-timer", 906 + .data = &omap3plus_pdata, 907 + }, 908 + { 909 + .compatible = "ti,am335x-timer-1ms", 910 + .data = &omap3plus_pdata, 911 + }, 907 912 {}, 908 913 }; 909 914 MODULE_DEVICE_TABLE(of, omap_timer_match);
+1
arch/arm/plat-omap/include/plat/dmtimer.h
··· 128 128 struct omap_dm_timer *omap_dm_timer_request(void); 129 129 struct omap_dm_timer *omap_dm_timer_request_specific(int timer_id); 130 130 struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap); 131 + struct omap_dm_timer *omap_dm_timer_request_by_node(struct device_node *np); 131 132 int omap_dm_timer_free(struct omap_dm_timer *timer); 132 133 void omap_dm_timer_enable(struct omap_dm_timer *timer); 133 134 void omap_dm_timer_disable(struct omap_dm_timer *timer);
+75 -34
drivers/dma/mxs-dma.c
··· 27 27 #include <linux/stmp_device.h> 28 28 #include <linux/of.h> 29 29 #include <linux/of_device.h> 30 + #include <linux/of_dma.h> 30 31 31 32 #include <asm/irq.h> 32 33 ··· 140 139 struct dma_device dma_device; 141 140 struct device_dma_parameters dma_parms; 142 141 struct mxs_dma_chan mxs_chans[MXS_DMA_CHANNELS]; 142 + struct platform_device *pdev; 143 + unsigned int nr_channels; 143 144 }; 144 145 145 146 struct mxs_dma_type { ··· 353 350 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma; 354 351 int ret; 355 352 356 - if (!data) 357 - return -EINVAL; 358 - 359 - mxs_chan->chan_irq = data->chan_irq; 353 + if (data) 354 + mxs_chan->chan_irq = data->chan_irq; 360 355 361 356 mxs_chan->ccw = dma_alloc_coherent(mxs_dma->dma_device.dev, 362 357 CCW_BLOCK_SIZE, &mxs_chan->ccw_phys, ··· 666 665 return ret; 667 666 } 668 667 668 + struct mxs_dma_filter_param { 669 + struct device_node *of_node; 670 + unsigned int chan_id; 671 + }; 672 + 673 + static bool mxs_dma_filter_fn(struct dma_chan *chan, void *fn_param) 674 + { 675 + struct mxs_dma_filter_param *param = fn_param; 676 + struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); 677 + struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma; 678 + int chan_irq; 679 + 680 + if (mxs_dma->dma_device.dev->of_node != param->of_node) 681 + return false; 682 + 683 + if (chan->chan_id != param->chan_id) 684 + return false; 685 + 686 + chan_irq = platform_get_irq(mxs_dma->pdev, param->chan_id); 687 + if (chan_irq < 0) 688 + return false; 689 + 690 + mxs_chan->chan_irq = chan_irq; 691 + 692 + return true; 693 + } 694 + 695 + struct dma_chan *mxs_dma_xlate(struct of_phandle_args *dma_spec, 696 + struct of_dma *ofdma) 697 + { 698 + struct mxs_dma_engine *mxs_dma = ofdma->of_dma_data; 699 + dma_cap_mask_t mask = mxs_dma->dma_device.cap_mask; 700 + struct mxs_dma_filter_param param; 701 + 702 + if (dma_spec->args_count != 1) 703 + return NULL; 704 + 705 + param.of_node = ofdma->of_node; 706 + param.chan_id = dma_spec->args[0]; 707 + 708 + if (param.chan_id >= mxs_dma->nr_channels) 709 + return NULL; 710 + 711 + return dma_request_channel(mask, mxs_dma_filter_fn, &param); 712 + } 713 + 669 714 static int __init mxs_dma_probe(struct platform_device *pdev) 670 715 { 716 + struct device_node *np = pdev->dev.of_node; 671 717 const struct platform_device_id *id_entry; 672 718 const struct of_device_id *of_id; 673 719 const struct mxs_dma_type *dma_type; ··· 722 674 struct resource *iores; 723 675 int ret, i; 724 676 725 - mxs_dma = kzalloc(sizeof(*mxs_dma), GFP_KERNEL); 677 + mxs_dma = devm_kzalloc(&pdev->dev, sizeof(*mxs_dma), GFP_KERNEL); 726 678 if (!mxs_dma) 727 679 return -ENOMEM; 680 + 681 + ret = of_property_read_u32(np, "dma-channels", &mxs_dma->nr_channels); 682 + if (ret) { 683 + dev_err(&pdev->dev, "failed to read dma-channels\n"); 684 + return ret; 685 + } 728 686 729 687 of_id = of_match_device(mxs_dma_dt_ids, &pdev->dev); 730 688 if (of_id) ··· 743 689 mxs_dma->dev_id = dma_type->id; 744 690 745 691 iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); 692 + mxs_dma->base = devm_ioremap_resource(&pdev->dev, iores); 693 + if (IS_ERR(mxs_dma->base)) 694 + return PTR_ERR(mxs_dma->base); 746 695 747 - if (!request_mem_region(iores->start, resource_size(iores), 748 - pdev->name)) { 749 - ret = -EBUSY; 750 - goto err_request_region; 751 - } 752 - 753 - mxs_dma->base = ioremap(iores->start, resource_size(iores)); 754 - if (!mxs_dma->base) { 755 - ret = -ENOMEM; 756 - goto err_ioremap; 757 - } 758 - 759 - mxs_dma->clk = clk_get(&pdev->dev, NULL); 760 - if (IS_ERR(mxs_dma->clk)) { 761 - ret = PTR_ERR(mxs_dma->clk); 762 - goto err_clk; 763 - } 696 + mxs_dma->clk = devm_clk_get(&pdev->dev, NULL); 697 + if (IS_ERR(mxs_dma->clk)) 698 + return PTR_ERR(mxs_dma->clk); 764 699 765 700 dma_cap_set(DMA_SLAVE, mxs_dma->dma_device.cap_mask); 766 701 dma_cap_set(DMA_CYCLIC, mxs_dma->dma_device.cap_mask); ··· 775 732 776 733 ret = mxs_dma_init(mxs_dma); 777 734 if (ret) 778 - goto err_init; 735 + return ret; 779 736 737 + mxs_dma->pdev = pdev; 780 738 mxs_dma->dma_device.dev = &pdev->dev; 781 739 782 740 /* mxs_dma gets 65535 bytes maximum sg size */ ··· 795 751 ret = dma_async_device_register(&mxs_dma->dma_device); 796 752 if (ret) { 797 753 dev_err(mxs_dma->dma_device.dev, "unable to register\n"); 798 - goto err_init; 754 + return ret; 755 + } 756 + 757 + ret = of_dma_controller_register(np, mxs_dma_xlate, mxs_dma); 758 + if (ret) { 759 + dev_err(mxs_dma->dma_device.dev, 760 + "failed to register controller\n"); 761 + dma_async_device_unregister(&mxs_dma->dma_device); 799 762 } 800 763 801 764 dev_info(mxs_dma->dma_device.dev, "initialized\n"); 802 765 803 766 return 0; 804 - 805 - err_init: 806 - clk_put(mxs_dma->clk); 807 - err_clk: 808 - iounmap(mxs_dma->base); 809 - err_ioremap: 810 - release_mem_region(iores->start, resource_size(iores)); 811 - err_request_region: 812 - kfree(mxs_dma); 813 - return ret; 814 767 } 815 768 816 769 static struct platform_driver mxs_dma_driver = {
+3 -37
drivers/i2c/busses/i2c-mxs.c
··· 31 31 #include <linux/of_i2c.h> 32 32 #include <linux/dma-mapping.h> 33 33 #include <linux/dmaengine.h> 34 - #include <linux/fsl/mxs-dma.h> 35 34 36 35 #define DRIVER_NAME "mxs-i2c" 37 36 ··· 117 118 uint32_t timing1; 118 119 119 120 /* DMA support components */ 120 - int dma_channel; 121 121 struct dma_chan *dmach; 122 - struct mxs_dma_data dma_data; 123 122 uint32_t pio_data[2]; 124 123 uint32_t addr_data; 125 124 struct scatterlist sg_io[2]; ··· 578 581 .functionality = mxs_i2c_func, 579 582 }; 580 583 581 - static bool mxs_i2c_dma_filter(struct dma_chan *chan, void *param) 582 - { 583 - struct mxs_i2c_dev *i2c = param; 584 - 585 - if (!mxs_dma_is_apbx(chan)) 586 - return false; 587 - 588 - if (chan->chan_id != i2c->dma_channel) 589 - return false; 590 - 591 - chan->private = &i2c->dma_data; 592 - 593 - return true; 594 - } 595 - 596 584 static void mxs_i2c_derive_timing(struct mxs_i2c_dev *i2c, int speed) 597 585 { 598 586 /* The I2C block clock run at 24MHz */ ··· 622 640 struct device_node *node = dev->of_node; 623 641 int ret; 624 642 625 - /* 626 - * TODO: This is a temporary solution and should be changed 627 - * to use generic DMA binding later when the helpers get in. 628 - */ 629 - ret = of_property_read_u32(node, "fsl,i2c-dma-channel", 630 - &i2c->dma_channel); 631 - if (ret) { 632 - dev_err(dev, "Failed to get DMA channel!\n"); 633 - return -ENODEV; 634 - } 635 - 636 643 ret = of_property_read_u32(node, "clock-frequency", &speed); 637 644 if (ret) { 638 645 dev_warn(dev, "No I2C speed selected, using 100kHz\n"); ··· 641 670 struct pinctrl *pinctrl; 642 671 struct resource *res; 643 672 resource_size_t res_size; 644 - int err, irq, dmairq; 645 - dma_cap_mask_t mask; 673 + int err, irq; 646 674 647 675 pinctrl = devm_pinctrl_get_select_default(dev); 648 676 if (IS_ERR(pinctrl)) ··· 653 683 654 684 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 655 685 irq = platform_get_irq(pdev, 0); 656 - dmairq = platform_get_irq(pdev, 1); 657 686 658 - if (!res || irq < 0 || dmairq < 0) 687 + if (!res || irq < 0) 659 688 return -ENOENT; 660 689 661 690 res_size = resource_size(res); ··· 680 711 } 681 712 682 713 /* Setup the DMA */ 683 - dma_cap_zero(mask); 684 - dma_cap_set(DMA_SLAVE, mask); 685 - i2c->dma_data.chan_irq = dmairq; 686 - i2c->dmach = dma_request_channel(mask, mxs_i2c_dma_filter, i2c); 714 + i2c->dmach = dma_request_slave_channel(dev, "rx-tx"); 687 715 if (!i2c->dmach) { 688 716 dev_err(dev, "Failed to request dma\n"); 689 717 return -ENODEV;
+5 -43
drivers/mmc/host/mxs-mmc.c
··· 552 552 .enable_sdio_irq = mxs_mmc_enable_sdio_irq, 553 553 }; 554 554 555 - static bool mxs_mmc_dma_filter(struct dma_chan *chan, void *param) 556 - { 557 - struct mxs_mmc_host *host = param; 558 - struct mxs_ssp *ssp = &host->ssp; 559 - 560 - if (!mxs_dma_is_apbh(chan)) 561 - return false; 562 - 563 - if (chan->chan_id != ssp->dma_channel) 564 - return false; 565 - 566 - chan->private = &ssp->dma_data; 567 - 568 - return true; 569 - } 570 - 571 555 static struct platform_device_id mxs_ssp_ids[] = { 572 556 { 573 557 .name = "imx23-mmc", ··· 579 595 struct device_node *np = pdev->dev.of_node; 580 596 struct mxs_mmc_host *host; 581 597 struct mmc_host *mmc; 582 - struct resource *iores, *dmares; 598 + struct resource *iores; 583 599 struct pinctrl *pinctrl; 584 - int ret = 0, irq_err, irq_dma; 585 - dma_cap_mask_t mask; 600 + int ret = 0, irq_err; 586 601 struct regulator *reg_vmmc; 587 602 enum of_gpio_flags flags; 588 603 struct mxs_ssp *ssp; 589 604 u32 bus_width = 0; 590 605 591 606 iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); 592 - dmares = platform_get_resource(pdev, IORESOURCE_DMA, 0); 593 607 irq_err = platform_get_irq(pdev, 0); 594 - irq_dma = platform_get_irq(pdev, 1); 595 - if (!iores || irq_err < 0 || irq_dma < 0) 608 + if (!iores || irq_err < 0) 596 609 return -EINVAL; 597 610 598 611 mmc = mmc_alloc_host(sizeof(struct mxs_mmc_host), &pdev->dev); ··· 605 624 goto out_mmc_free; 606 625 } 607 626 608 - if (np) { 609 - ssp->devid = (enum mxs_ssp_id) of_id->data; 610 - /* 611 - * TODO: This is a temporary solution and should be changed 612 - * to use generic DMA binding later when the helpers get in. 613 - */ 614 - ret = of_property_read_u32(np, "fsl,ssp-dma-channel", 615 - &ssp->dma_channel); 616 - if (ret) { 617 - dev_err(mmc_dev(host->mmc), 618 - "failed to get dma channel\n"); 619 - goto out_mmc_free; 620 - } 621 - } else { 622 - ssp->devid = pdev->id_entry->driver_data; 623 - ssp->dma_channel = dmares->start; 624 - } 627 + ssp->devid = (enum mxs_ssp_id) of_id->data; 625 628 626 629 host->mmc = mmc; 627 630 host->sdio_irq_en = 0; ··· 635 670 636 671 mxs_mmc_reset(host); 637 672 638 - dma_cap_zero(mask); 639 - dma_cap_set(DMA_SLAVE, mask); 640 - ssp->dma_data.chan_irq = irq_dma; 641 - ssp->dmach = dma_request_channel(mask, mxs_mmc_dma_filter, host); 673 + ssp->dmach = dma_request_slave_channel(&pdev->dev, "rx-tx"); 642 674 if (!ssp->dmach) { 643 675 dev_err(mmc_dev(host->mmc), 644 676 "%s: failed to request dma\n", __func__);
+1 -50
drivers/mtd/nand/gpmi-nand/gpmi-nand.c
··· 36 36 #define GPMI_NAND_GPMI_REGS_ADDR_RES_NAME "gpmi-nand" 37 37 #define GPMI_NAND_BCH_REGS_ADDR_RES_NAME "bch" 38 38 #define GPMI_NAND_BCH_INTERRUPT_RES_NAME "bch" 39 - #define GPMI_NAND_DMA_INTERRUPT_RES_NAME "gpmi-dma" 40 39 41 40 /* add our owner bbt descriptor */ 42 41 static uint8_t scan_ff_pattern[] = { 0xff }; ··· 419 420 free_irq(i, this); 420 421 } 421 422 422 - static bool gpmi_dma_filter(struct dma_chan *chan, void *param) 423 - { 424 - struct gpmi_nand_data *this = param; 425 - int dma_channel = (int)this->private; 426 - 427 - if (!mxs_dma_is_apbh(chan)) 428 - return false; 429 - /* 430 - * only catch the GPMI dma channels : 431 - * for mx23 : MX23_DMA_GPMI0 ~ MX23_DMA_GPMI3 432 - * (These four channels share the same IRQ!) 433 - * 434 - * for mx28 : MX28_DMA_GPMI0 ~ MX28_DMA_GPMI7 435 - * (These eight channels share the same IRQ!) 436 - */ 437 - if (dma_channel == chan->chan_id) { 438 - chan->private = &this->dma_data; 439 - return true; 440 - } 441 - return false; 442 - } 443 - 444 423 static void release_dma_channels(struct gpmi_nand_data *this) 445 424 { 446 425 unsigned int i; ··· 432 455 static int acquire_dma_channels(struct gpmi_nand_data *this) 433 456 { 434 457 struct platform_device *pdev = this->pdev; 435 - struct resource *r_dma; 436 - struct device_node *dn; 437 - u32 dma_channel; 438 - int ret; 439 458 struct dma_chan *dma_chan; 440 - dma_cap_mask_t mask; 441 - 442 - /* dma channel, we only use the first one. */ 443 - dn = pdev->dev.of_node; 444 - ret = of_property_read_u32(dn, "fsl,gpmi-dma-channel", &dma_channel); 445 - if (ret) { 446 - pr_err("unable to get DMA channel from dt.\n"); 447 - goto acquire_err; 448 - } 449 - this->private = (void *)dma_channel; 450 - 451 - /* gpmi dma interrupt */ 452 - r_dma = platform_get_resource_byname(pdev, IORESOURCE_IRQ, 453 - GPMI_NAND_DMA_INTERRUPT_RES_NAME); 454 - if (!r_dma) { 455 - pr_err("Can't get resource for DMA\n"); 456 - goto acquire_err; 457 - } 458 - this->dma_data.chan_irq = r_dma->start; 459 459 460 460 /* request dma channel */ 461 - dma_cap_zero(mask); 462 - dma_cap_set(DMA_SLAVE, mask); 463 - 464 - dma_chan = dma_request_channel(mask, gpmi_dma_filter, this); 461 + dma_chan = dma_request_slave_channel(&pdev->dev, "rx-tx"); 465 462 if (!dma_chan) { 466 463 pr_err("Failed to request DMA channel.\n"); 467 464 goto acquire_err;
+1 -2
drivers/mtd/nand/gpmi-nand/gpmi-nand.h
··· 20 20 #include <linux/mtd/nand.h> 21 21 #include <linux/platform_device.h> 22 22 #include <linux/dma-mapping.h> 23 - #include <linux/fsl/mxs-dma.h> 23 + #include <linux/dmaengine.h> 24 24 25 25 #define GPMI_CLK_MAX 5 /* MX6Q needs five clocks */ 26 26 struct resources { ··· 180 180 /* DMA channels */ 181 181 #define DMA_CHANS 8 182 182 struct dma_chan *dma_chans[DMA_CHANS]; 183 - struct mxs_dma_data dma_data; 184 183 enum dma_ops_type last_dma_type; 185 184 enum dma_ops_type dma_type; 186 185 struct completion dma_done;
+1
drivers/net/ethernet/freescale/fec.h
··· 214 214 215 215 struct clk *clk_ipg; 216 216 struct clk *clk_ahb; 217 + struct clk *clk_enet_out; 217 218 struct clk *clk_ptp; 218 219 219 220 /* The saved address of a sent-in-place packet/buffer, for skfree(). */
+13 -5
drivers/net/ethernet/freescale/fec_main.c
··· 1883 1883 goto failed_clk; 1884 1884 } 1885 1885 1886 + /* enet_out is optional, depends on board */ 1887 + fep->clk_enet_out = devm_clk_get(&pdev->dev, "enet_out"); 1888 + if (IS_ERR(fep->clk_enet_out)) 1889 + fep->clk_enet_out = NULL; 1890 + 1886 1891 fep->clk_ptp = devm_clk_get(&pdev->dev, "ptp"); 1887 1892 fep->bufdesc_ex = 1888 1893 pdev->id_entry->driver_data & FEC_QUIRK_HAS_BUFDESC_EX; 1889 1894 if (IS_ERR(fep->clk_ptp)) { 1890 - ret = PTR_ERR(fep->clk_ptp); 1895 + fep->clk_ptp = NULL; 1891 1896 fep->bufdesc_ex = 0; 1892 1897 } 1893 1898 1894 1899 clk_prepare_enable(fep->clk_ahb); 1895 1900 clk_prepare_enable(fep->clk_ipg); 1896 - if (!IS_ERR(fep->clk_ptp)) 1897 - clk_prepare_enable(fep->clk_ptp); 1901 + clk_prepare_enable(fep->clk_enet_out); 1902 + clk_prepare_enable(fep->clk_ptp); 1898 1903 1899 1904 reg_phy = devm_regulator_get(&pdev->dev, "phy"); 1900 1905 if (!IS_ERR(reg_phy)) { ··· 1967 1962 failed_regulator: 1968 1963 clk_disable_unprepare(fep->clk_ahb); 1969 1964 clk_disable_unprepare(fep->clk_ipg); 1970 - if (!IS_ERR(fep->clk_ptp)) 1971 - clk_disable_unprepare(fep->clk_ptp); 1965 + clk_disable_unprepare(fep->clk_enet_out); 1966 + clk_disable_unprepare(fep->clk_ptp); 1972 1967 failed_pin: 1973 1968 failed_clk: 1974 1969 failed_ioremap: ··· 1990 1985 clk_disable_unprepare(fep->clk_ptp); 1991 1986 if (fep->ptp_clock) 1992 1987 ptp_clock_unregister(fep->ptp_clock); 1988 + clk_disable_unprepare(fep->clk_enet_out); 1993 1989 clk_disable_unprepare(fep->clk_ahb); 1994 1990 clk_disable_unprepare(fep->clk_ipg); 1995 1991 for (i = 0; i < FEC_IRQ_NUM; i++) { ··· 2016 2010 fec_stop(ndev); 2017 2011 netif_device_detach(ndev); 2018 2012 } 2013 + clk_disable_unprepare(fep->clk_enet_out); 2019 2014 clk_disable_unprepare(fep->clk_ahb); 2020 2015 clk_disable_unprepare(fep->clk_ipg); 2021 2016 ··· 2029 2022 struct net_device *ndev = dev_get_drvdata(dev); 2030 2023 struct fec_enet_private *fep = netdev_priv(ndev); 2031 2024 2025 + clk_prepare_enable(fep->clk_enet_out); 2032 2026 clk_prepare_enable(fep->clk_ahb); 2033 2027 clk_prepare_enable(fep->clk_ipg); 2034 2028 if (netif_running(ndev)) {
+2 -2
drivers/spi/spi-davinci.c
··· 776 776 #if defined(CONFIG_OF) 777 777 static const struct of_device_id davinci_spi_of_match[] = { 778 778 { 779 - .compatible = "ti,dm644x-spi", 779 + .compatible = "ti,dm6441-spi", 780 780 }, 781 781 { 782 - .compatible = "ti,da8xx-spi", 782 + .compatible = "ti,da830-spi", 783 783 .data = (void *)SPI_VERSION_2, 784 784 }, 785 785 { },
+9 -51
drivers/spi/spi-mxs.c
··· 490 490 return status; 491 491 } 492 492 493 - static bool mxs_ssp_dma_filter(struct dma_chan *chan, void *param) 494 - { 495 - struct mxs_ssp *ssp = param; 496 - 497 - if (!mxs_dma_is_apbh(chan)) 498 - return false; 499 - 500 - if (chan->chan_id != ssp->dma_channel) 501 - return false; 502 - 503 - chan->private = &ssp->dma_data; 504 - 505 - return true; 506 - } 507 - 508 493 static const struct of_device_id mxs_spi_dt_ids[] = { 509 494 { .compatible = "fsl,imx23-spi", .data = (void *) IMX23_SSP, }, 510 495 { .compatible = "fsl,imx28-spi", .data = (void *) IMX28_SSP, }, ··· 505 520 struct spi_master *master; 506 521 struct mxs_spi *spi; 507 522 struct mxs_ssp *ssp; 508 - struct resource *iores, *dmares; 523 + struct resource *iores; 509 524 struct pinctrl *pinctrl; 510 525 struct clk *clk; 511 526 void __iomem *base; 512 - int devid, dma_channel, clk_freq; 513 - int ret = 0, irq_err, irq_dma; 514 - dma_cap_mask_t mask; 527 + int devid, clk_freq; 528 + int ret = 0, irq_err; 515 529 516 530 /* 517 531 * Default clock speed for the SPI core. 160MHz seems to ··· 521 537 522 538 iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); 523 539 irq_err = platform_get_irq(pdev, 0); 524 - irq_dma = platform_get_irq(pdev, 1); 525 - if (!iores || irq_err < 0 || irq_dma < 0) 540 + if (!iores || irq_err < 0) 526 541 return -EINVAL; 527 542 528 543 base = devm_ioremap_resource(&pdev->dev, iores); ··· 536 553 if (IS_ERR(clk)) 537 554 return PTR_ERR(clk); 538 555 539 - if (np) { 540 - devid = (enum mxs_ssp_id) of_id->data; 541 - /* 542 - * TODO: This is a temporary solution and should be changed 543 - * to use generic DMA binding later when the helpers get in. 544 - */ 545 - ret = of_property_read_u32(np, "fsl,ssp-dma-channel", 546 - &dma_channel); 547 - if (ret) { 548 - dev_err(&pdev->dev, 549 - "Failed to get DMA channel\n"); 550 - return -EINVAL; 551 - } 552 - 553 - ret = of_property_read_u32(np, "clock-frequency", 554 - &clk_freq); 555 - if (ret) 556 - clk_freq = clk_freq_default; 557 - } else { 558 - dmares = platform_get_resource(pdev, IORESOURCE_DMA, 0); 559 - if (!dmares) 560 - return -EINVAL; 561 - devid = pdev->id_entry->driver_data; 562 - dma_channel = dmares->start; 556 + devid = (enum mxs_ssp_id) of_id->data; 557 + ret = of_property_read_u32(np, "clock-frequency", 558 + &clk_freq); 559 + if (ret) 563 560 clk_freq = clk_freq_default; 564 - } 565 561 566 562 master = spi_alloc_master(&pdev->dev, sizeof(*spi)); 567 563 if (!master) ··· 559 597 ssp->clk = clk; 560 598 ssp->base = base; 561 599 ssp->devid = devid; 562 - ssp->dma_channel = dma_channel; 563 600 564 601 init_completion(&spi->c); 565 602 ··· 567 606 if (ret) 568 607 goto out_master_free; 569 608 570 - dma_cap_zero(mask); 571 - dma_cap_set(DMA_SLAVE, mask); 572 - ssp->dma_data.chan_irq = irq_dma; 573 - ssp->dmach = dma_request_channel(mask, mxs_ssp_dma_filter, ssp); 609 + ssp->dmach = dma_request_slave_channel(&pdev->dev, "rx-tx"); 574 610 if (!ssp->dmach) { 575 611 dev_err(ssp->dev, "Failed to request DMA\n"); 576 612 ret = -ENODEV;
+4 -48
drivers/tty/serial/mxs-auart.c
··· 35 35 #include <linux/pinctrl/consumer.h> 36 36 #include <linux/of_device.h> 37 37 #include <linux/dma-mapping.h> 38 - #include <linux/fsl/mxs-dma.h> 38 + #include <linux/dmaengine.h> 39 39 40 40 #include <asm/cacheflush.h> 41 41 ··· 148 148 struct device *dev; 149 149 150 150 /* for DMA */ 151 - struct mxs_dma_data dma_data; 152 - int dma_channel_rx, dma_channel_tx; 153 - int dma_irq_rx, dma_irq_tx; 154 - int dma_channel; 155 - 156 151 struct scatterlist tx_sgl; 157 152 struct dma_chan *tx_dma_chan; 158 153 void *tx_dma_buf; ··· 435 440 return mctrl; 436 441 } 437 442 438 - static bool mxs_auart_dma_filter(struct dma_chan *chan, void *param) 439 - { 440 - struct mxs_auart_port *s = param; 441 - 442 - if (!mxs_dma_is_apbx(chan)) 443 - return false; 444 - 445 - if (s->dma_channel == chan->chan_id) { 446 - chan->private = &s->dma_data; 447 - return true; 448 - } 449 - return false; 450 - } 451 - 452 443 static int mxs_auart_dma_prep_rx(struct mxs_auart_port *s); 453 444 static void dma_rx_callback(void *arg) 454 445 { ··· 526 545 527 546 static int mxs_auart_dma_init(struct mxs_auart_port *s) 528 547 { 529 - dma_cap_mask_t mask; 530 - 531 548 if (auart_dma_enabled(s)) 532 549 return 0; 533 550 534 - /* We do not get the right DMA channels. */ 535 - if (s->dma_channel_rx == -1 || s->dma_channel_tx == -1) 536 - return -EINVAL; 537 - 538 551 /* init for RX */ 539 - dma_cap_zero(mask); 540 - dma_cap_set(DMA_SLAVE, mask); 541 - s->dma_channel = s->dma_channel_rx; 542 - s->dma_data.chan_irq = s->dma_irq_rx; 543 - s->rx_dma_chan = dma_request_channel(mask, mxs_auart_dma_filter, s); 552 + s->rx_dma_chan = dma_request_slave_channel(s->dev, "rx"); 544 553 if (!s->rx_dma_chan) 545 554 goto err_out; 546 555 s->rx_dma_buf = kzalloc(UART_XMIT_SIZE, GFP_KERNEL | GFP_DMA); ··· 538 567 goto err_out; 539 568 540 569 /* init for TX */ 541 - s->dma_channel = s->dma_channel_tx; 542 - s->dma_data.chan_irq = s->dma_irq_tx; 543 - s->tx_dma_chan = dma_request_channel(mask, mxs_auart_dma_filter, s); 570 + s->tx_dma_chan = dma_request_slave_channel(s->dev, "tx"); 544 571 if (!s->tx_dma_chan) 545 572 goto err_out; 546 573 s->tx_dma_buf = kzalloc(UART_XMIT_SIZE, GFP_KERNEL | GFP_DMA); ··· 989 1020 struct platform_device *pdev) 990 1021 { 991 1022 struct device_node *np = pdev->dev.of_node; 992 - u32 dma_channel[2]; 993 1023 int ret; 994 1024 995 1025 if (!np) ··· 1002 1034 } 1003 1035 s->port.line = ret; 1004 1036 1005 - s->dma_irq_rx = platform_get_irq(pdev, 1); 1006 - s->dma_irq_tx = platform_get_irq(pdev, 2); 1037 + s->flags |= MXS_AUART_DMA_CONFIG; 1007 1038 1008 - ret = of_property_read_u32_array(np, "fsl,auart-dma-channel", 1009 - dma_channel, 2); 1010 - if (ret == 0) { 1011 - s->dma_channel_rx = dma_channel[0]; 1012 - s->dma_channel_tx = dma_channel[1]; 1013 - 1014 - s->flags |= MXS_AUART_DMA_CONFIG; 1015 - } else { 1016 - s->dma_channel_rx = -1; 1017 - s->dma_channel_tx = -1; 1018 - } 1019 1039 return 0; 1020 1040 } 1021 1041
+2
drivers/video/Kconfig
··· 2428 2428 select FB_CFB_FILLRECT 2429 2429 select FB_CFB_COPYAREA 2430 2430 select FB_CFB_IMAGEBLIT 2431 + select FB_MODE_HELPERS 2432 + select OF_VIDEOMODE 2431 2433 help 2432 2434 Framebuffer support for the MXS SoC. 2433 2435
+156 -104
drivers/video/mxsfb.c
··· 42 42 #include <linux/module.h> 43 43 #include <linux/kernel.h> 44 44 #include <linux/of_device.h> 45 - #include <linux/of_gpio.h> 45 + #include <video/of_display_timing.h> 46 46 #include <linux/platform_device.h> 47 47 #include <linux/clk.h> 48 48 #include <linux/dma-mapping.h> 49 49 #include <linux/io.h> 50 50 #include <linux/pinctrl/consumer.h> 51 - #include <linux/mxsfb.h> 51 + #include <linux/fb.h> 52 + #include <linux/regulator/consumer.h> 53 + #include <video/videomode.h> 52 54 53 55 #define REG_SET 4 54 56 #define REG_CLR 8 ··· 109 107 #define VDCTRL0_ENABLE_PRESENT (1 << 28) 110 108 #define VDCTRL0_VSYNC_ACT_HIGH (1 << 27) 111 109 #define VDCTRL0_HSYNC_ACT_HIGH (1 << 26) 112 - #define VDCTRL0_DOTCLK_ACT_FAILING (1 << 25) 110 + #define VDCTRL0_DOTCLK_ACT_FALLING (1 << 25) 113 111 #define VDCTRL0_ENABLE_ACT_HIGH (1 << 24) 114 112 #define VDCTRL0_VSYNC_PERIOD_UNIT (1 << 21) 115 113 #define VDCTRL0_VSYNC_PULSE_WIDTH_UNIT (1 << 20) ··· 144 142 #define BLUE 2 145 143 #define TRANSP 3 146 144 145 + #define STMLCDIF_8BIT 1 /** pixel data bus to the display is of 8 bit width */ 146 + #define STMLCDIF_16BIT 0 /** pixel data bus to the display is of 16 bit width */ 147 + #define STMLCDIF_18BIT 2 /** pixel data bus to the display is of 18 bit width */ 148 + #define STMLCDIF_24BIT 3 /** pixel data bus to the display is of 24 bit width */ 149 + 150 + #define MXSFB_SYNC_DATA_ENABLE_HIGH_ACT (1 << 6) 151 + #define MXSFB_SYNC_DOTCLK_FALLING_ACT (1 << 7) /* negtive edge sampling */ 152 + 147 153 enum mxsfb_devtype { 148 154 MXSFB_V3, 149 155 MXSFB_V4, ··· 178 168 unsigned ld_intf_width; 179 169 unsigned dotclk_delay; 180 170 const struct mxsfb_devdata *devdata; 181 - int mapped; 182 171 u32 sync; 172 + struct regulator *reg_lcd; 183 173 }; 184 174 185 175 #define mxsfb_is_v3(host) (host->devdata->ipversion == 3) ··· 339 329 { 340 330 struct mxsfb_info *host = to_imxfb_host(fb_info); 341 331 u32 reg; 332 + int ret; 342 333 343 334 dev_dbg(&host->pdev->dev, "%s\n", __func__); 335 + 336 + if (host->reg_lcd) { 337 + ret = regulator_enable(host->reg_lcd); 338 + if (ret) { 339 + dev_err(&host->pdev->dev, 340 + "lcd regulator enable failed: %d\n", ret); 341 + return; 342 + } 343 + } 344 344 345 345 clk_prepare_enable(host->clk); 346 346 clk_set_rate(host->clk, PICOS2KHZ(fb_info->var.pixclock) * 1000U); ··· 373 353 struct mxsfb_info *host = to_imxfb_host(fb_info); 374 354 unsigned loop; 375 355 u32 reg; 356 + int ret; 376 357 377 358 dev_dbg(&host->pdev->dev, "%s\n", __func__); 378 359 ··· 397 376 clk_disable_unprepare(host->clk); 398 377 399 378 host->enabled = 0; 379 + 380 + if (host->reg_lcd) { 381 + ret = regulator_disable(host->reg_lcd); 382 + if (ret) 383 + dev_err(&host->pdev->dev, 384 + "lcd regulator disable failed: %d\n", ret); 385 + } 400 386 } 401 387 402 388 static int mxsfb_set_par(struct fb_info *fb_info) ··· 487 459 vdctrl0 |= VDCTRL0_VSYNC_ACT_HIGH; 488 460 if (host->sync & MXSFB_SYNC_DATA_ENABLE_HIGH_ACT) 489 461 vdctrl0 |= VDCTRL0_ENABLE_ACT_HIGH; 490 - if (host->sync & MXSFB_SYNC_DOTCLK_FAILING_ACT) 491 - vdctrl0 |= VDCTRL0_DOTCLK_ACT_FAILING; 462 + if (host->sync & MXSFB_SYNC_DOTCLK_FALLING_ACT) 463 + vdctrl0 |= VDCTRL0_DOTCLK_ACT_FALLING; 492 464 493 465 writel(vdctrl0, host->base + LCDC_VDCTRL0); 494 466 ··· 707 679 return 0; 708 680 } 709 681 682 + static int mxsfb_init_fbinfo_dt(struct mxsfb_info *host) 683 + { 684 + struct fb_info *fb_info = &host->fb_info; 685 + struct fb_var_screeninfo *var = &fb_info->var; 686 + struct device *dev = &host->pdev->dev; 687 + struct device_node *np = host->pdev->dev.of_node; 688 + struct device_node *display_np; 689 + struct device_node *timings_np; 690 + struct display_timings *timings; 691 + u32 width; 692 + int i; 693 + int ret = 0; 694 + 695 + display_np = of_parse_phandle(np, "display", 0); 696 + if (!display_np) { 697 + dev_err(dev, "failed to find display phandle\n"); 698 + return -ENOENT; 699 + } 700 + 701 + ret = of_property_read_u32(display_np, "bus-width", &width); 702 + if (ret < 0) { 703 + dev_err(dev, "failed to get property bus-width\n"); 704 + goto put_display_node; 705 + } 706 + 707 + switch (width) { 708 + case 8: 709 + host->ld_intf_width = STMLCDIF_8BIT; 710 + break; 711 + case 16: 712 + host->ld_intf_width = STMLCDIF_16BIT; 713 + break; 714 + case 18: 715 + host->ld_intf_width = STMLCDIF_18BIT; 716 + break; 717 + case 24: 718 + host->ld_intf_width = STMLCDIF_24BIT; 719 + break; 720 + default: 721 + dev_err(dev, "invalid bus-width value\n"); 722 + ret = -EINVAL; 723 + goto put_display_node; 724 + } 725 + 726 + ret = of_property_read_u32(display_np, "bits-per-pixel", 727 + &var->bits_per_pixel); 728 + if (ret < 0) { 729 + dev_err(dev, "failed to get property bits-per-pixel\n"); 730 + goto put_display_node; 731 + } 732 + 733 + timings = of_get_display_timings(display_np); 734 + if (!timings) { 735 + dev_err(dev, "failed to get display timings\n"); 736 + ret = -ENOENT; 737 + goto put_display_node; 738 + } 739 + 740 + timings_np = of_find_node_by_name(display_np, 741 + "display-timings"); 742 + if (!timings_np) { 743 + dev_err(dev, "failed to find display-timings node\n"); 744 + ret = -ENOENT; 745 + goto put_display_node; 746 + } 747 + 748 + for (i = 0; i < of_get_child_count(timings_np); i++) { 749 + struct videomode vm; 750 + struct fb_videomode fb_vm; 751 + 752 + ret = videomode_from_timing(timings, &vm, i); 753 + if (ret < 0) 754 + goto put_timings_node; 755 + ret = fb_videomode_from_videomode(&vm, &fb_vm); 756 + if (ret < 0) 757 + goto put_timings_node; 758 + 759 + if (vm.data_flags & DISPLAY_FLAGS_DE_HIGH) 760 + host->sync |= MXSFB_SYNC_DATA_ENABLE_HIGH_ACT; 761 + if (vm.data_flags & DISPLAY_FLAGS_PIXDATA_NEGEDGE) 762 + host->sync |= MXSFB_SYNC_DOTCLK_FALLING_ACT; 763 + fb_add_videomode(&fb_vm, &fb_info->modelist); 764 + } 765 + 766 + put_timings_node: 767 + of_node_put(timings_np); 768 + put_display_node: 769 + of_node_put(display_np); 770 + return ret; 771 + } 772 + 710 773 static int mxsfb_init_fbinfo(struct mxsfb_info *host) 711 774 { 712 775 struct fb_info *fb_info = &host->fb_info; 713 776 struct fb_var_screeninfo *var = &fb_info->var; 714 - struct mxsfb_platform_data *pdata = host->pdev->dev.platform_data; 715 777 dma_addr_t fb_phys; 716 778 void *fb_virt; 717 - unsigned fb_size = pdata->fb_size; 779 + unsigned fb_size; 780 + int ret; 718 781 719 782 fb_info->fbops = &mxsfb_ops; 720 783 fb_info->flags = FBINFO_FLAG_DEFAULT | FBINFO_READS_FAST; ··· 815 696 fb_info->fix.visual = FB_VISUAL_TRUECOLOR, 816 697 fb_info->fix.accel = FB_ACCEL_NONE; 817 698 818 - var->bits_per_pixel = pdata->default_bpp ? pdata->default_bpp : 16; 699 + ret = mxsfb_init_fbinfo_dt(host); 700 + if (ret) 701 + return ret; 702 + 819 703 var->nonstd = 0; 820 704 var->activate = FB_ACTIVATE_NOW; 821 705 var->accel_flags = 0; 822 706 var->vmode = FB_VMODE_NONINTERLACED; 823 707 824 - host->dotclk_delay = pdata->dotclk_delay; 825 - host->ld_intf_width = pdata->ld_intf_width; 826 - 827 708 /* Memory allocation for framebuffer */ 828 - if (pdata->fb_phys) { 829 - if (!fb_size) 830 - return -EINVAL; 709 + fb_size = SZ_2M; 710 + fb_virt = alloc_pages_exact(fb_size, GFP_DMA); 711 + if (!fb_virt) 712 + return -ENOMEM; 831 713 832 - fb_phys = pdata->fb_phys; 833 - 834 - if (!request_mem_region(fb_phys, fb_size, host->pdev->name)) 835 - return -ENOMEM; 836 - 837 - fb_virt = ioremap(fb_phys, fb_size); 838 - if (!fb_virt) { 839 - release_mem_region(fb_phys, fb_size); 840 - return -ENOMEM; 841 - } 842 - host->mapped = 1; 843 - } else { 844 - if (!fb_size) 845 - fb_size = SZ_2M; /* default */ 846 - fb_virt = alloc_pages_exact(fb_size, GFP_DMA); 847 - if (!fb_virt) 848 - return -ENOMEM; 849 - 850 - fb_phys = virt_to_phys(fb_virt); 851 - } 714 + fb_phys = virt_to_phys(fb_virt); 852 715 853 716 fb_info->fix.smem_start = fb_phys; 854 717 fb_info->screen_base = fb_virt; ··· 846 745 { 847 746 struct fb_info *fb_info = &host->fb_info; 848 747 849 - if (host->mapped) { 850 - iounmap(fb_info->screen_base); 851 - release_mem_region(fb_info->fix.smem_start, 852 - fb_info->screen_size); 853 - } else { 854 - free_pages_exact(fb_info->screen_base, fb_info->fix.smem_len); 855 - } 748 + free_pages_exact(fb_info->screen_base, fb_info->fix.smem_len); 856 749 } 857 750 858 751 static struct platform_device_id mxsfb_devtype[] = { ··· 873 778 { 874 779 const struct of_device_id *of_id = 875 780 of_match_device(mxsfb_dt_ids, &pdev->dev); 876 - struct mxsfb_platform_data *pdata = pdev->dev.platform_data; 877 781 struct resource *res; 878 782 struct mxsfb_info *host; 879 783 struct fb_info *fb_info; 880 784 struct fb_modelist *modelist; 881 785 struct pinctrl *pinctrl; 882 - int panel_enable; 883 - enum of_gpio_flags flags; 884 - int i, ret; 786 + int ret; 885 787 886 788 if (of_id) 887 789 pdev->id_entry = of_id->data; 888 - 889 - if (!pdata) { 890 - dev_err(&pdev->dev, "No platformdata. Giving up\n"); 891 - return -ENODEV; 892 - } 893 790 894 791 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 895 792 if (!res) { ··· 889 802 return -ENODEV; 890 803 } 891 804 892 - if (!request_mem_region(res->start, resource_size(res), pdev->name)) 893 - return -EBUSY; 894 - 895 805 fb_info = framebuffer_alloc(sizeof(struct mxsfb_info), &pdev->dev); 896 806 if (!fb_info) { 897 807 dev_err(&pdev->dev, "Failed to allocate fbdev\n"); 898 - ret = -ENOMEM; 899 - goto error_alloc_info; 808 + return -ENOMEM; 900 809 } 901 810 902 811 host = to_imxfb_host(fb_info); 903 812 904 - host->base = ioremap(res->start, resource_size(res)); 905 - if (!host->base) { 813 + host->base = devm_ioremap_resource(&pdev->dev, res); 814 + if (IS_ERR(host->base)) { 906 815 dev_err(&pdev->dev, "ioremap failed\n"); 907 - ret = -ENOMEM; 908 - goto error_ioremap; 816 + ret = PTR_ERR(host->base); 817 + goto fb_release; 909 818 } 910 819 911 820 host->pdev = pdev; ··· 912 829 pinctrl = devm_pinctrl_get_select_default(&pdev->dev); 913 830 if (IS_ERR(pinctrl)) { 914 831 ret = PTR_ERR(pinctrl); 915 - goto error_getpin; 832 + goto fb_release; 916 833 } 917 834 918 - host->clk = clk_get(&host->pdev->dev, NULL); 835 + host->clk = devm_clk_get(&host->pdev->dev, NULL); 919 836 if (IS_ERR(host->clk)) { 920 837 ret = PTR_ERR(host->clk); 921 - goto error_getclock; 838 + goto fb_release; 922 839 } 923 840 924 - panel_enable = of_get_named_gpio_flags(pdev->dev.of_node, 925 - "panel-enable-gpios", 0, &flags); 926 - if (gpio_is_valid(panel_enable)) { 927 - unsigned long f = GPIOF_OUT_INIT_HIGH; 928 - if (flags == OF_GPIO_ACTIVE_LOW) 929 - f = GPIOF_OUT_INIT_LOW; 930 - ret = devm_gpio_request_one(&pdev->dev, panel_enable, 931 - f, "panel-enable"); 932 - if (ret) { 933 - dev_err(&pdev->dev, 934 - "failed to request gpio %d: %d\n", 935 - panel_enable, ret); 936 - goto error_panel_enable; 937 - } 938 - } 841 + host->reg_lcd = devm_regulator_get(&pdev->dev, "lcd"); 842 + if (IS_ERR(host->reg_lcd)) 843 + host->reg_lcd = NULL; 939 844 940 - fb_info->pseudo_palette = kmalloc(sizeof(u32) * 16, GFP_KERNEL); 845 + fb_info->pseudo_palette = devm_kzalloc(&pdev->dev, sizeof(u32) * 16, 846 + GFP_KERNEL); 941 847 if (!fb_info->pseudo_palette) { 942 848 ret = -ENOMEM; 943 - goto error_pseudo_pallette; 849 + goto fb_release; 944 850 } 945 851 946 852 INIT_LIST_HEAD(&fb_info->modelist); 947 853 948 - host->sync = pdata->sync; 949 - 950 854 ret = mxsfb_init_fbinfo(host); 951 855 if (ret != 0) 952 - goto error_init_fb; 953 - 954 - for (i = 0; i < pdata->mode_count; i++) 955 - fb_add_videomode(&pdata->mode_list[i], &fb_info->modelist); 856 + goto fb_release; 956 857 957 858 modelist = list_first_entry(&fb_info->modelist, 958 859 struct fb_modelist, list); ··· 950 883 ret = register_framebuffer(fb_info); 951 884 if (ret != 0) { 952 885 dev_err(&pdev->dev,"Failed to register framebuffer\n"); 953 - goto error_register; 886 + goto fb_destroy; 954 887 } 955 888 956 889 if (!host->enabled) { ··· 963 896 964 897 return 0; 965 898 966 - error_register: 899 + fb_destroy: 967 900 if (host->enabled) 968 901 clk_disable_unprepare(host->clk); 969 902 fb_destroy_modelist(&fb_info->modelist); 970 - error_init_fb: 971 - kfree(fb_info->pseudo_palette); 972 - error_pseudo_pallette: 973 - error_panel_enable: 974 - clk_put(host->clk); 975 - error_getclock: 976 - error_getpin: 977 - iounmap(host->base); 978 - error_ioremap: 903 + fb_release: 979 904 framebuffer_release(fb_info); 980 - error_alloc_info: 981 - release_mem_region(res->start, resource_size(res)); 982 905 983 906 return ret; 984 907 } ··· 977 920 { 978 921 struct fb_info *fb_info = platform_get_drvdata(pdev); 979 922 struct mxsfb_info *host = to_imxfb_host(fb_info); 980 - struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 981 923 982 924 if (host->enabled) 983 925 mxsfb_disable_controller(fb_info); 984 926 985 927 unregister_framebuffer(fb_info); 986 - kfree(fb_info->pseudo_palette); 987 928 mxsfb_free_videomem(host); 988 - iounmap(host->base); 989 - clk_put(host->clk); 990 929 991 930 framebuffer_release(fb_info); 992 - release_mem_region(res->start, resource_size(res)); 993 931 994 932 platform_set_drvdata(pdev, NULL); 995 933
-52
include/linux/mxsfb.h
··· 1 - /* 2 - * This program is free software; you can redistribute it and/or 3 - * modify it under the terms of the GNU General Public License 4 - * as published by the Free Software Foundation; either version 2 5 - * of the License, or (at your option) any later version. 6 - * This program is distributed in the hope that it will be useful, 7 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 8 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 9 - * GNU General Public License for more details. 10 - * 11 - * You should have received a copy of the GNU General Public License 12 - * along with this program; if not, write to the Free Software 13 - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 14 - * MA 02110-1301, USA. 15 - */ 16 - 17 - #ifndef __LINUX_MXSFB_H 18 - #define __LINUX_MXSFB_H 19 - 20 - #include <linux/fb.h> 21 - 22 - #define STMLCDIF_8BIT 1 /** pixel data bus to the display is of 8 bit width */ 23 - #define STMLCDIF_16BIT 0 /** pixel data bus to the display is of 16 bit width */ 24 - #define STMLCDIF_18BIT 2 /** pixel data bus to the display is of 18 bit width */ 25 - #define STMLCDIF_24BIT 3 /** pixel data bus to the display is of 24 bit width */ 26 - 27 - #define MXSFB_SYNC_DATA_ENABLE_HIGH_ACT (1 << 6) 28 - #define MXSFB_SYNC_DOTCLK_FAILING_ACT (1 << 7) /* failing/negtive edge sampling */ 29 - 30 - struct mxsfb_platform_data { 31 - struct fb_videomode *mode_list; 32 - unsigned mode_count; 33 - 34 - unsigned default_bpp; 35 - 36 - unsigned dotclk_delay; /* refer manual HW_LCDIF_VDCTRL4 register */ 37 - unsigned ld_intf_width; /* refer STMLCDIF_* macros */ 38 - 39 - unsigned fb_size; /* Size of the video memory. If zero a 40 - * default will be used 41 - */ 42 - unsigned long fb_phys; /* physical address for the video memory. If 43 - * zero the framebuffer memory will be dynamically 44 - * allocated. If specified,fb_size must also be specified. 45 - * fb_phys must be unused by Linux. 46 - */ 47 - u32 sync; /* sync mask, contains MXSFB specifics not 48 - * carried in fb_info->var.sync 49 - */ 50 - }; 51 - 52 - #endif /* __LINUX_MXSFB_H */
+1 -3
include/linux/spi/mxs-spi.h
··· 24 24 #ifndef __LINUX_SPI_MXS_SPI_H__ 25 25 #define __LINUX_SPI_MXS_SPI_H__ 26 26 27 - #include <linux/fsl/mxs-dma.h> 27 + #include <linux/dmaengine.h> 28 28 29 29 #define ssp_is_old(host) ((host)->devid == IMX23_SSP) 30 30 ··· 137 137 unsigned int clk_rate; 138 138 enum mxs_ssp_id devid; 139 139 140 - int dma_channel; 141 140 struct dma_chan *dmach; 142 - struct mxs_dma_data dma_data; 143 141 unsigned int dma_dir; 144 142 enum dma_transfer_direction slave_dirn; 145 143 u32 ssp_pio_words[SSP_PIO_NUM];