Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24025f6f authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge branch 'next/dt-samsung' of...

Merge branch 'next/dt-samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/dt

From Kukjin Kim:

Here is Samsung DT for v3.8 and this is including DT for EXYNOS4X12
SoC, SMDK4412 board, pinctrl for exynos4x12, TMU, MFC, SATA and SATA
PHY.

As I commented on [4/7], this branch merged pinctrl/samsung to support
pinctrl for exynos4x12 without useless merge conflicts.

* 'next/dt-samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung

: (32 commits)
  ARM: EXYNOS: DT Support for SATA and SATA PHY
  ARM: dts: Remove broken-voltage property from sdhci node for exynos4210-trats
  ARM: dts: Add node for touchscreen for exynos4210-trats
  ARM: dts: Add node for touchscreen voltage regulator for exynos4210-trats
  ARM: dts: Add node for i2c3 bus for exynos4210-trats
  ARM: dts: Add nodes for GPIO keys available on Trats
  ARM: dts: Update for pinctrl-samsung driver for exynos4210-trats
  ARM: dts: Add nodes for pin controllers for exynos4x12
  pinctrl: samsung: Add support for EXYNOS4X12
  gpio: samsung: Skip registration if pinctrl driver is present on EXYNOS4X12
  ARM: EXYNOS: Skip wakeup-int setup if pinctrl driver is used on EXYNOS4X12
  ARM: dts: add board dts file for EXYNOS4412 based SMDK board
  ARM: dts: Add support for EXYNOS4X12 SoCs
  ARM: EXYNOS: Add devicetree node for TMU driver for exynos5
  ARM: EXYNOS: Add devicetree node for TMU driver for exynos4
  ARM: EXYNOS: Add MFC device tree support
  ARM: dts: Enable serial controllers on Origen and SMDKV310
  Documentation: Update samsung-pinctrl device tree bindings documentation
  pinctrl: samsung: Add GPIO to IRQ translation
  pinctrl: exynos: Set pin function to EINT in irq_set_type of wake-up EINT
  ...

Add/add conflicts in:
	arch/arm/boot/dts/exynos5250-smdk5250.dts
	arch/arm/boot/dts/exynos5250.dtsi
	arch/arm/mach-exynos/mach-exynos5-dt.c

Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents e642779b c47d244a
Loading
Loading
Loading
Loading
+14 −0
Original line number Original line Diff line number Diff line
* Samsung SATA PHY Controller

SATA PHY nodes are defined to describe on-chip SATA Physical layer controllers.
Each SATA PHY controller should have its own node.

Required properties:
- compatible        : compatible list, contains "samsung,exynos5-sata-phy"
- reg               : <registers mapping>

Example:
        sata@ffe07000 {
                compatible = "samsung,exynos5-sata-phy";
                reg = <0xffe07000 0x1000>;
        };
+17 −0
Original line number Original line Diff line number Diff line
* Samsung AHCI SATA Controller

SATA nodes are defined to describe on-chip Serial ATA controllers.
Each SATA controller should have its own node.

Required properties:
- compatible        : compatible list, contains "samsung,exynos5-sata"
- interrupts        : <interrupt mapping for SATA IRQ>
- reg               : <registers mapping>
- samsung,sata-freq : <frequency in MHz>

Example:
        sata@ffe08000 {
                compatible = "samsung,exynos5-sata";
                reg = <0xffe08000 0x1000>;
                interrupts = <115>;
        };
+23 −0
Original line number Original line Diff line number Diff line
* Samsung Multi Format Codec (MFC)

Multi Format Codec (MFC) is the IP present in Samsung SoCs which
supports high resolution decoding and encoding functionalities.
The MFC device driver is a v4l2 driver which can encode/decode
video raw/elementary streams and has support for all popular
video codecs.

Required properties:
  - compatible : value should be either one among the following
	(a) "samsung,mfc-v5" for MFC v5 present in Exynos4 SoCs
	(b) "samsung,mfc-v6" for MFC v6 present in Exynos5 SoCs

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

  - interrupts : MFC interrupt number to the CPU.

  - samsung,mfc-r : Base address of the first memory bank used by MFC
		    for DMA contiguous memory allocation and its size.

  - samsung,mfc-l : Base address of the second memory bank used by MFC
		    for DMA contiguous memory allocation and its size.
+94 −25
Original line number Original line Diff line number Diff line
@@ -8,13 +8,20 @@ on-chip controllers onto these pads.
Required Properties:
Required Properties:
- compatible: should be one of the following.
- compatible: should be one of the following.
  - "samsung,pinctrl-exynos4210": for Exynos4210 compatible pin-controller.
  - "samsung,pinctrl-exynos4210": for Exynos4210 compatible pin-controller.
  - "samsung,pinctrl-exynos4x12": for Exynos4x12 compatible pin-controller.
  - "samsung,pinctrl-exynos5250": for Exynos5250 compatible pin-controller.
  - "samsung,pinctrl-exynos5250": for Exynos5250 compatible pin-controller.


- reg: Base address of the pin controller hardware module and length of
- reg: Base address of the pin controller hardware module and length of
  the address space it occupies.
  the address space it occupies.


- interrupts: interrupt specifier for the controller. The format and value of
- Pin banks as child nodes: Pin banks of the controller are represented by child
  the interrupt specifier depends on the interrupt parent for the controller.
  nodes of the controller node. Bank name is taken from name of the node. Each
  bank node must contain following properties:

  - gpio-controller: identifies the node as a gpio controller and pin bank.
  - #gpio-cells: number of cells in GPIO specifier. Since the generic GPIO
    binding is used, the amount of cells must be specified as 2. See generic
    GPIO binding documentation for description of particular cells.


- Pin mux/config groups as child nodes: The pin mux (selecting pin function
- Pin mux/config groups as child nodes: The pin mux (selecting pin function
  mode) and pin config (pull up/down, driver strength) settings are represented
  mode) and pin config (pull up/down, driver strength) settings are represented
@@ -72,6 +79,14 @@ used as system wakeup events.
A. External GPIO Interrupts: For supporting external gpio interrupts, the
A. External GPIO Interrupts: For supporting external gpio interrupts, the
   following properties should be specified in the pin-controller device node.
   following properties should be specified in the pin-controller device node.


   - interrupt-parent: phandle of the interrupt parent to which the external
     GPIO interrupts are forwarded to.
   - interrupts: interrupt specifier for the controller. The format and value of
     the interrupt specifier depends on the interrupt parent for the controller.

   In addition, following properties must be present in node of every bank
   of pins supporting GPIO interrupts:

   - interrupt-controller: identifies the controller node as interrupt-parent.
   - interrupt-controller: identifies the controller node as interrupt-parent.
   - #interrupt-cells: the value of this property should be 2.
   - #interrupt-cells: the value of this property should be 2.
     - First Cell: represents the external gpio interrupt number local to the
     - First Cell: represents the external gpio interrupt number local to the
@@ -94,6 +109,11 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
       found on Samsung Exynos4210 SoC.
       found on Samsung Exynos4210 SoC.
   - interrupt-parent: phandle of the interrupt parent to which the external
   - interrupt-parent: phandle of the interrupt parent to which the external
     wakeup interrupts are forwarded to.
     wakeup interrupts are forwarded to.
   - interrupts: interrupt used by multiplexed wakeup interrupts.

   In addition, following properties must be present in node of every bank
   of pins supporting wake-up interrupts:

   - interrupt-controller: identifies the node as interrupt-parent.
   - interrupt-controller: identifies the node as interrupt-parent.
   - #interrupt-cells: the value of this property should be 2
   - #interrupt-cells: the value of this property should be 2
     - First Cell: represents the external wakeup interrupt number local to
     - First Cell: represents the external wakeup interrupt number local to
@@ -105,11 +125,63 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
       - 4 = high level triggered
       - 4 = high level triggered
       - 8 = low level triggered
       - 8 = low level triggered


   Node of every bank of pins supporting direct wake-up interrupts (without
   multiplexing) must contain following properties:

   - interrupt-parent: phandle of the interrupt parent to which the external
     wakeup interrupts are forwarded to.
   - interrupts: interrupts of the interrupt parent which are used for external
     wakeup interrupts from pins of the bank, must contain interrupts for all
     pins of the bank.

Aliases:
Aliases:


All the pin controller nodes should be represented in the aliases node using
All the pin controller nodes should be represented in the aliases node using
the following format 'pinctrl{n}' where n is a unique number for the alias.
the following format 'pinctrl{n}' where n is a unique number for the alias.


Example: A pin-controller node with pin banks:

	pinctrl_0: pinctrl@11400000 {
		compatible = "samsung,pinctrl-exynos4210";
		reg = <0x11400000 0x1000>;
		interrupts = <0 47 0>;

		/* ... */

		/* Pin bank without external interrupts */
		gpy0: gpy0 {
			gpio-controller;
			#gpio-cells = <2>;
		};

		/* ... */

		/* Pin bank with external GPIO or muxed wake-up interrupts */
		gpj0: gpj0 {
			gpio-controller;
			#gpio-cells = <2>;

			interrupt-controller;
			#interrupt-cells = <2>;
		};

		/* ... */

		/* Pin bank with external direct wake-up interrupts */
		gpx0: gpx0 {
			gpio-controller;
			#gpio-cells = <2>;

			interrupt-controller;
			interrupt-parent = <&gic>;
			interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>,
				     <0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>;
			#interrupt-cells = <2>;
		};

		/* ... */
	};

Example 1: A pin-controller node with pin groups.
Example 1: A pin-controller node with pin groups.


	pinctrl_0: pinctrl@11400000 {
	pinctrl_0: pinctrl@11400000 {
@@ -117,6 +189,8 @@ Example 1: A pin-controller node with pin groups.
		reg = <0x11400000 0x1000>;
		reg = <0x11400000 0x1000>;
		interrupts = <0 47 0>;
		interrupts = <0 47 0>;


		/* ... */

		uart0_data: uart0-data {
		uart0_data: uart0-data {
			samsung,pins = "gpa0-0", "gpa0-1";
			samsung,pins = "gpa0-0", "gpa0-1";
			samsung,pin-function = <2>;
			samsung,pin-function = <2>;
@@ -158,20 +232,14 @@ Example 2: A pin-controller node with external wakeup interrupt controller node.
	pinctrl_1: pinctrl@11000000 {
	pinctrl_1: pinctrl@11000000 {
		compatible = "samsung,pinctrl-exynos4210";
		compatible = "samsung,pinctrl-exynos4210";
		reg = <0x11000000 0x1000>;
		reg = <0x11000000 0x1000>;
		interrupts = <0 46 0>;
		interrupts = <0 46 0>
		interrupt-controller;
		#interrupt-cells = <2>;


		wakup_eint: wakeup-interrupt-controller {
		/* ... */

		wakeup-interrupt-controller {
			compatible = "samsung,exynos4210-wakeup-eint";
			compatible = "samsung,exynos4210-wakeup-eint";
			interrupt-parent = <&gic>;
			interrupt-parent = <&gic>;
			interrupt-controller;
			interrupts = <0 32 0>;
			#interrupt-cells = <2>;
			interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>,
					<0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>,
					<0 24 0>, <0 25 0>, <0 26 0>, <0 27 0>,
					<0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>,
					<0 32 0>;
		};
		};
	};
	};


@@ -190,7 +258,8 @@ Example 4: Set up the default pin state for uart controller.


	static int s3c24xx_serial_probe(struct platform_device *pdev) {
	static int s3c24xx_serial_probe(struct platform_device *pdev) {
		struct pinctrl *pinctrl;
		struct pinctrl *pinctrl;
		...

		...
		/* ... */

		pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
		pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
	}
	}
+1 −0
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@ dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \
dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
	exynos4210-smdkv310.dtb \
	exynos4210-smdkv310.dtb \
	exynos4210-trats.dtb \
	exynos4210-trats.dtb \
	exynos4412-smdk4412.dtb \
	exynos5250-smdk5250.dtb
	exynos5250-smdk5250.dtb
dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb
dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb
dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \
dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \
Loading