Skip to content

Commit

Permalink
Merge tag 'dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/a…
Browse files Browse the repository at this point in the history
…rm-soc

Device tree conversions for samsung and tegra

Both platforms had some initial device tree support, but this adds
much more to actually make it usable.

* tag 'dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (45 commits)
  ARM: dts: Add intial dts file for EXYNOS4210 SoC, SMDKV310 and ORIGEN
  ARM: EXYNOS: Add Exynos4 device tree enabled board file
  rtc: rtc-s3c: Add device tree support
  input: samsung-keypad: Add device tree support
  ARM: S5PV210: Modify platform data for pl330 driver
  ARM: S5PC100: Modify platform data for pl330 driver
  ARM: S5P64x0: Modify platform data for pl330 driver
  ARM: EXYNOS: Add a alias for pdma clocks
  ARM: EXYNOS: Limit usage of pl330 device instance to non-dt build
  ARM: SAMSUNG: Add device tree support for pl330 dma engine wrappers
  DMA: PL330: Add device tree support
  ARM: EXYNOS: Modify platform data for pl330 driver
  DMA: PL330: Infer transfer direction from transfer request instead of platform data
  DMA: PL330: move filter function into driver
  serial: samsung: Fix build for non-Exynos4210 devices
  serial: samsung: add device tree support
  serial: samsung: merge probe() function from all SoC specific extensions
  serial: samsung: merge all SoC specific port reset functions
  ARM: SAMSUNG: register uart clocks to clock lookup list
  serial: samsung: remove all uses of get_clksrc and set_clksrc
  ...

Fix up fairly trivial conflicts in arch/arm/mach-s3c2440/clock.c and
drivers/tty/serial/Kconfig both due to just adding code close to
changes.
  • Loading branch information
torvalds committed Jan 9, 2012
2 parents acc952c + b001bef commit dfc1ebe
Show file tree
Hide file tree
Showing 74 changed files with 3,015 additions and 2,247 deletions.
8 changes: 8 additions & 0 deletions Documentation/devicetree/bindings/arm/insignal-boards.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
* Insignal's Exynos4210 based Origen evaluation board

Origen low-cost evaluation board is based on Samsung's Exynos4210 SoC.

Required root node properties:
- compatible = should be one or more of the following.
(a) "samsung,smdkv310" - for Samsung's SMDKV310 eval board.
(b) "samsung,exynos4210" - for boards based on Exynos4210 SoC.
8 changes: 8 additions & 0 deletions Documentation/devicetree/bindings/arm/samsung-boards.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
* Samsung's Exynos4210 based SMDKV310 evaluation board

SMDKV310 evaluation board is based on Samsung's Exynos4210 SoC.

Required root node properties:
- compatible = should be one or more of the following.
(a) "samsung,smdkv310" - for Samsung's SMDKV310 eval board.
(b) "samsung,exynos4210" - for boards based on Exynos4210 SoC.
14 changes: 14 additions & 0 deletions Documentation/devicetree/bindings/arm/tegra.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
NVIDIA Tegra device tree bindings
-------------------------------------------

Boards with the tegra20 SoC shall have the following properties:

Required root node property:

compatible = "nvidia,tegra20";

Boards with the tegra30 SoC shall have the following properties:

Required root node property:

compatible = "nvidia,tegra30";
30 changes: 30 additions & 0 deletions Documentation/devicetree/bindings/dma/arm-pl330.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
* ARM PrimeCell PL330 DMA Controller

The ARM PrimeCell PL330 DMA controller can move blocks of memory contents
between memory and peripherals or memory to memory.

Required properties:
- compatible: should include both "arm,pl330" and "arm,primecell".
- reg: physical base address of the controller and length of memory mapped
region.
- interrupts: interrupt number to the cpu.

Example:

pdma0: pdma@12680000 {
compatible = "arm,pl330", "arm,primecell";
reg = <0x12680000 0x1000>;
interrupts = <99>;
};

Client drivers (device nodes requiring dma transfers from dev-to-mem or
mem-to-dev) should specify the DMA channel numbers using a two-value pair
as shown below.

[property name] = <[phandle of the dma controller] [dma request id]>;

where 'dma request id' is the dma request number which is connected
to the client controller. The 'property name' is recommended to be
of the form <name>-dma-channel.

Example: tx-dma-channel = <&pdma0 12>;
40 changes: 40 additions & 0 deletions Documentation/devicetree/bindings/gpio/gpio-samsung.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
Samsung Exynos4 GPIO Controller

Required properties:
- compatible: Compatible property value should be "samsung,exynos4-gpio>".

- reg: Physical base address of the controller and length of memory mapped
region.

- #gpio-cells: Should be 4. The syntax of the gpio specifier used by client nodes
should be the following with values derived from the SoC user manual.
<[phandle of the gpio controller node]
[pin number within the gpio controller]
[mux function]
[pull up/down]
[drive strength]>

Values for gpio specifier:
- Pin number: is a value between 0 to 7.
- Pull Up/Down: 0 - Pull Up/Down Disabled.
1 - Pull Down Enabled.
3 - Pull Up Enabled.
- Drive Strength: 0 - 1x,
1 - 3x,
2 - 2x,
3 - 4x

- gpio-controller: Specifies that the node is a gpio controller.
- #address-cells: should be 1.
- #size-cells: should be 1.

Example:

gpa0: gpio-controller@11400000 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "samsung,exynos4-gpio";
reg = <0x11400000 0x20>;
#gpio-cells = <4>;
gpio-controller;
};
88 changes: 88 additions & 0 deletions Documentation/devicetree/bindings/input/samsung-keypad.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
* Samsung's Keypad Controller device tree bindings

Samsung's Keypad controller is used to interface a SoC with a matrix-type
keypad device. The keypad controller supports multiple row and column lines.
A key can be placed at each intersection of a unique row and a unique column.
The keypad controller can sense a key-press and key-release and report the
event using a interrupt to the cpu.

Required SoC Specific Properties:
- compatible: should be one of the following
- "samsung,s3c6410-keypad": For controllers compatible with s3c6410 keypad
controller.
- "samsung,s5pv210-keypad": For controllers compatible with s5pv210 keypad
controller.

- reg: physical base address of the controller and length of memory mapped
region.

- interrupts: The interrupt number to the cpu.

Required Board Specific Properties:
- samsung,keypad-num-rows: Number of row lines connected to the keypad
controller.

- samsung,keypad-num-columns: Number of column lines connected to the
keypad controller.

- row-gpios: List of gpios used as row lines. The gpio specifier for
this property depends on the gpio controller to which these row lines
are connected.

- col-gpios: List of gpios used as column lines. The gpio specifier for
this property depends on the gpio controller to which these column
lines are connected.

- Keys represented as child nodes: Each key connected to the keypad
controller is represented as a child node to the keypad controller
device node and should include the following properties.
- keypad,row: the row number to which the key is connected.
- keypad,column: the column number to which the key is connected.
- linux,code: the key-code to be reported when the key is pressed
and released.

Optional Properties specific to linux:
- linux,keypad-no-autorepeat: do no enable autorepeat feature.
- linux,keypad-wakeup: use any event on keypad as wakeup event.


Example:
keypad@100A0000 {
compatible = "samsung,s5pv210-keypad";
reg = <0x100A0000 0x100>;
interrupts = <173>;
samsung,keypad-num-rows = <2>;
samsung,keypad-num-columns = <8>;
linux,input-no-autorepeat;
linux,input-wakeup;

row-gpios = <&gpx2 0 3 3 0
&gpx2 1 3 3 0>;

col-gpios = <&gpx1 0 3 0 0
&gpx1 1 3 0 0
&gpx1 2 3 0 0
&gpx1 3 3 0 0
&gpx1 4 3 0 0
&gpx1 5 3 0 0
&gpx1 6 3 0 0
&gpx1 7 3 0 0>;

key_1 {
keypad,row = <0>;
keypad,column = <3>;
linux,code = <2>;
};

key_2 {
keypad,row = <0>;
keypad,column = <4>;
linux,code = <3>;
};

key_3 {
keypad,row = <0>;
keypad,column = <5>;
linux,code = <4>;
};
};
20 changes: 20 additions & 0 deletions Documentation/devicetree/bindings/rtc/s3c-rtc.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
* Samsung's S3C Real Time Clock controller

Required properties:
- compatible: should be one of the following.
* "samsung,s3c2410-rtc" - for controllers compatible with s3c2410 rtc.
* "samsung,s3c6410-rtc" - for controllers compatible with s3c6410 rtc.
- reg: physical base address of the controller and length of memory mapped
region.
- interrupts: Two interrupt numbers to the cpu should be specified. First
interrupt number is the rtc alarm interupt and second interrupt number
is the rtc tick interrupt. The number of cells representing a interrupt
depends on the parent interrupt controller.

Example:

rtc@10070000 {
compatible = "samsung,s3c6410-rtc";
reg = <0x10070000 0x100>;
interrupts = <44 0 45 0>;
};
14 changes: 14 additions & 0 deletions Documentation/devicetree/bindings/serial/samsung_uart.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
* Samsung's UART Controller

The Samsung's UART controller is used for interfacing SoC with serial communicaion
devices.

Required properties:
- compatible: should be
- "samsung,exynos4210-uart", for UART's compatible with Exynos4210 uart ports.

- reg: base physical address of the controller and length of memory mapped
region.

- interrupts: interrupt number to the cpu. The interrupt specifier format depends
on the interrupt controller parent.
13 changes: 13 additions & 0 deletions Documentation/devicetree/bindings/usb/tegra-usb.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Tegra SOC USB controllers

The device node for a USB controller that is part of a Tegra
SOC is as described in the document "Open Firmware Recommended
Practice : Universal Serial Bus" with the following modifications
and additions :

Required properties :
- compatible : Should be "nvidia,tegra20-ehci" for USB controllers
used in host mode.
- phy_type : Should be one of "ulpi" or "utmi".
- nvidia,vbus-gpio : If present, specifies a gpio that needs to be
activated for the bus to be powered.
137 changes: 137 additions & 0 deletions arch/arm/boot/dts/exynos4210-origen.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
/*
* Samsung's Exynos4210 based Origen board device tree source
*
* Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
* http://www.samsung.com
* Copyright (c) 2010-2011 Linaro Ltd.
* www.linaro.org
*
* Device tree source file for Insignal's Origen board which is based on
* Samsung's Exynos4210 SoC.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/

/dts-v1/;
/include/ "exynos4210.dtsi"

/ {
model = "Insignal Origen evaluation board based on Exynos4210";
compatible = "insignal,origen", "samsung,exynos4210";

memory {
reg = <0x40000000 0x40000000>;
};

chosen {
bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc";
};

sdhci@12530000 {
samsung,sdhci-bus-width = <4>;
linux,mmc_cap_4_bit_data;
samsung,sdhci-cd-internal;
gpio-cd = <&gpk2 2 2 3 3>;
gpios = <&gpk2 0 2 0 3>,
<&gpk2 1 2 0 3>,
<&gpk2 3 2 3 3>,
<&gpk2 4 2 3 3>,
<&gpk2 5 2 3 3>,
<&gpk2 6 2 3 3>;
};

sdhci@12510000 {
samsung,sdhci-bus-width = <4>;
linux,mmc_cap_4_bit_data;
samsung,sdhci-cd-internal;
gpio-cd = <&gpk0 2 2 3 3>;
gpios = <&gpk0 0 2 0 3>,
<&gpk0 1 2 0 3>,
<&gpk0 3 2 3 3>,
<&gpk0 4 2 3 3>,
<&gpk0 5 2 3 3>,
<&gpk0 6 2 3 3>;
};

gpio_keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;

up {
label = "Up";
gpios = <&gpx2 0 0 0 2>;
linux,code = <103>;
};

down {
label = "Down";
gpios = <&gpx2 1 0 0 2>;
linux,code = <108>;
};

back {
label = "Back";
gpios = <&gpx1 7 0 0 2>;
linux,code = <158>;
};

home {
label = "Home";
gpios = <&gpx1 6 0 0 2>;
linux,code = <102>;
};

menu {
label = "Menu";
gpios = <&gpx1 5 0 0 2>;
linux,code = <139>;
};
};

keypad@100A0000 {
status = "disabled";
};

sdhci@12520000 {
status = "disabled";
};

sdhci@12540000 {
status = "disabled";
};

i2c@13860000 {
status = "disabled";
};

i2c@13870000 {
status = "disabled";
};

i2c@13880000 {
status = "disabled";
};

i2c@13890000 {
status = "disabled";
};

i2c@138A0000 {
status = "disabled";
};

i2c@138B0000 {
status = "disabled";
};

i2c@138C0000 {
status = "disabled";
};

i2c@138D0000 {
status = "disabled";
};
};
Loading

0 comments on commit dfc1ebe

Please sign in to comment.