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

Commit 0a584715 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'cleanup-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc into next

Pull ARM SoC cleanups from Olof Johansson:
 "Cleanups for 3.16.  Among these are:

   - a bunch of misc cleanups for Broadcom platforms, mostly
     housekeeping
   - enabling Common Clock Framework on the older s3c24xx Samsung
     chipsets
   - cleanup of the Versatile Express system controller code, moving it
     to syscon
   - power management cleanups for OMAP platforms

  plus a handful of other cleanups across the place"

* tag 'cleanup-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (87 commits)
  ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM
  clk: samsung: fix build error
  ARM: vexpress: refine dependencies for new code
  clk: samsung: clk-s3c2410-dlck: do not use PNAME macro as it declares __initdata
  cpufreq: exynos: Fix the compile error
  ARM: S3C24XX: move debug-macro.S into the common space
  ARM: S3C24XX: use generic DEBUG_UART_PHY/_VIRT in debug macro
  ARM: S3C24XX: trim down debug uart handling
  ARM: compressed/head.S: remove s3c24xx special case
  ARM: EXYNOS: Remove unnecessary inclusion of cpu.h
  ARM: EXYNOS: Migrate Exynos specific macros from plat to mach
  ARM: EXYNOS: Remove exynos_subsys registration
  ARM: EXYNOS: Remove duplicate lines in Makefile
  ARM: EXYNOS: use v7_exit_coherency_flush macro for cache disabling
  ARM: OMAP4: PRCM: remove references to cm-regbits-44xx.h from PRCM core files
  ARM: OMAP3/4: PRM: add support of late_init call to prm_ll_ops
  ARM: OMAP3/OMAP4: PRM: add prm_features flags and add IO wakeup under it
  ARM: OMAP3/4: PRM: provide io chain reconfig function through irq setup
  ARM: OMAP2+: PRM: remove unnecessary cpu_is_XXX calls from prm_init / exit
  ARM: OMAP2+: PRCM: cleanup some header includes
  ...
parents ff933a08 08d38beb
Loading
Loading
Loading
Loading
+66 −13
Original line number Diff line number Diff line
@@ -8,6 +8,8 @@ interrupt generation, MMC and NOR Flash control etc.
Required node properties:
- compatible value : = "arm,vexpress,sysreg";
- reg : physical base address and the size of the registers window

Deprecated properties, replaced by GPIO subnodes (see below):
- gpio-controller : specifies that the node is a GPIO controller
- #gpio-cells : size of the GPIO specifier, should be 2:
  - first cell is the pseudo-GPIO line number:
@@ -16,35 +18,86 @@ Required node properties:
    2 - NOR FLASH WPn
  - second cell can take standard GPIO flags (currently ignored).

Control registers providing pseudo-GPIO lines must be represented
by subnodes, each of them requiring the following properties:
- compatible value : one of
			"arm,vexpress-sysreg,sys_led"
			"arm,vexpress-sysreg,sys_mci"
			"arm,vexpress-sysreg,sys_flash"
- gpio-controller : makes the node a GPIO controller
- #gpio-cells : size of the GPIO specifier, must be 2:
  - first cell is the function number:
    - for sys_led : 0..7 = LED 0..7
    - for sys_mci : 0 = MMC CARDIN, 1 = MMC WPROT
    - for sys_flash : 0 = NOR FLASH WPn
  - second cell can take standard GPIO flags (currently ignored).

Example:
	v2m_sysreg: sysreg@10000000 {
 		compatible = "arm,vexpress-sysreg";
 		reg = <0x10000000 0x1000>;

		v2m_led_gpios: sys_led@08 {
			compatible = "arm,vexpress-sysreg,sys_led";
			gpio-controller;
			#gpio-cells = <2>;
		};

		v2m_mmc_gpios: sys_mci@48 {
			compatible = "arm,vexpress-sysreg,sys_mci";
			gpio-controller;
			#gpio-cells = <2>;
		};

		v2m_flash_gpios: sys_flash@4c {
			compatible = "arm,vexpress-sysreg,sys_flash";
			gpio-controller;
			#gpio-cells = <2>;
		};
 	};

This block also can also act a bridge to the platform's configuration
bus via "system control" interface, addressing devices with site number,
position in the board stack, config controller, function and device
numbers - see motherboard's TRM for more details.

The node describing a config device must refer to the sysreg node via
"arm,vexpress,config-bridge" phandle (can be also defined in the node's
parent) and relies on the board topology properties - see main vexpress
node documentation for more details. It must also define the following
property:
- arm,vexpress-sysreg,func : must contain two cells:
  - first cell defines function number (eg. 1 for clock generator,
    2 for voltage regulators etc.)
  - device number (eg. osc 0, osc 1 etc.)
numbers - see motherboard's TRM for more details. All configuration
controller accessible via this interface must reference the sysreg
node via "arm,vexpress,config-bridge" phandle and define appropriate
topology properties - see main vexpress node documentation for more
details. Each child of such node describes one function and must
define the following properties:
- compatible value : must be one of (corresponding to the TRM):
	"arm,vexpress-amp"
	"arm,vexpress-dvimode"
	"arm,vexpress-energy"
	"arm,vexpress-muxfpga"
	"arm,vexpress-osc"
	"arm,vexpress-power"
	"arm,vexpress-reboot"
	"arm,vexpress-reset"
	"arm,vexpress-scc"
	"arm,vexpress-shutdown"
	"arm,vexpress-temp"
	"arm,vexpress-volt"
- arm,vexpress-sysreg,func : must contain a set of two cells long groups:
  - first cell of each group defines the function number
    (eg. 1 for clock generator, 2 for voltage regulators etc.)
  - second cell of each group defines device number (eg. osc 0,
    osc 1 etc.)
  - some functions (eg. energy meter, with its 64 bit long counter)
    are using more than one function/device number pair

Example:
	mcc {
		compatible = "arm,vexpress,config-bus";
		arm,vexpress,config-bridge = <&v2m_sysreg>;

		osc@0 {
			compatible = "arm,vexpress-osc";
			arm,vexpress-sysreg,func = <1 0>;
		};

		energy@0 {
			compatible = "arm,vexpress-energy";
			arm,vexpress-sysreg,func = <13 0>, <13 1>;
		};
	};
+10 −5
Original line number Diff line number Diff line
@@ -80,12 +80,17 @@ but also control clock generators, voltage regulators, gather
environmental data like temperature, power consumption etc. Even
the video output switch (FPGA) is controlled that way.

Nodes describing devices controlled by this infrastructure should
point at the bridge device node:
The controllers are not mapped into normal memory address space
and must be accessed through bridges - other devices capable
of generating transactions on the configuration bus.

The nodes describing configuration controllers must define
the following properties:
- compatible value:
	compatible = "arm,vexpress,config-bus";
- bridge phandle:
	arm,vexpress,config-bridge = <phandle>;
This property can be also defined in a parent node (eg. for a DCC)
and is effective for all children.
and children describing available functions.


Platform topology
@@ -197,7 +202,7 @@ Example of a VE tile description (simplified)
	};

	dcc {
		compatible = "simple-bus";
		compatible = "arm,vexpress,config-bus";
		arm,vexpress,config-bridge = <&v2m_sysreg>;

		osc@0 {
+50 −0
Original line number Diff line number Diff line
* Samsung S3C2410 Clock Controller

The S3C2410 clock controller generates and supplies clock to various controllers
within the SoC. The clock binding described here is applicable to the s3c2410,
s3c2440 and s3c2442 SoCs in the s3c24x family.

Required Properties:

- compatible: should be one of the following.
  - "samsung,s3c2410-clock" - controller compatible with S3C2410 SoC.
  - "samsung,s3c2440-clock" - controller compatible with S3C2440 SoC.
  - "samsung,s3c2442-clock" - controller compatible with S3C2442 SoC.
- reg: physical base address of the controller and length of memory mapped
  region.
- #clock-cells: should be 1.

Each clock is assigned an identifier and client nodes can use this identifier
to specify the clock which they consume. Some of the clocks are available only
on a particular SoC.

All available clocks are defined as preprocessor macros in
dt-bindings/clock/samsung,s3c2410-clock.h header and can be used in device
tree sources.

External clocks:

The xti clock used as input for the plls is generated outside the SoC. It is
expected that is are defined using standard clock bindings with a
clock-output-names value of "xti".

Example: Clock controller node:

	clocks: clock-controller@4c000000 {
		compatible = "samsung,s3c2410-clock";
		reg = <0x4c000000 0x20>;
		#clock-cells = <1>;
	};

Example: UART controller node that consumes the clock generated by the clock
  controller (refer to the standard clock bindings for information about
  "clocks" and "clock-names" properties):

	serial@50004000 {
		compatible = "samsung,s3c2440-uart";
		reg = <0x50004000 0x4000>;
		interrupts = <1 23 3 4>, <1 23 4 4>;
		clock-names = "uart", "clk_uart_baud2";
		clocks = <&clocks PCLK_UART0>, <&clocks PCLK_UART0>;
		status = "disabled";
	};
+50 −0
Original line number Diff line number Diff line
* Samsung S3C2412 Clock Controller

The S3C2412 clock controller generates and supplies clock to various controllers
within the SoC. The clock binding described here is applicable to the s3c2412
and s3c2413 SoCs in the s3c24x family.

Required Properties:

- compatible: should be "samsung,s3c2412-clock"
- reg: physical base address of the controller and length of memory mapped
  region.
- #clock-cells: should be 1.

Each clock is assigned an identifier and client nodes can use this identifier
to specify the clock which they consume. Some of the clocks are available only
on a particular SoC.

All available clocks are defined as preprocessor macros in
dt-bindings/clock/s3c2412.h header and can be used in device
tree sources.

External clocks:

There are several clocks that are generated outside the SoC. It is expected
that they are defined using standard clock bindings with following
clock-output-names:
 - "xti" - crystal input - required,
 - "ext" - external clock source - optional,

Example: Clock controller node:

	clocks: clock-controller@4c000000 {
		compatible = "samsung,s3c2412-clock";
		reg = <0x4c000000 0x20>;
		#clock-cells = <1>;
	};

Example: UART controller node that consumes the clock generated by the clock
  controller (refer to the standard clock bindings for information about
  "clocks" and "clock-names" properties):

	serial@50004000 {
		compatible = "samsung,s3c2412-uart";
		reg = <0x50004000 0x4000>;
		interrupts = <1 23 3 4>, <1 23 4 4>;
		clock-names = "uart", "clk_uart_baud2", "clk_uart_baud3";
		clocks = <&clocks PCLK_UART0>, <&clocks PCLK_UART0>,
			 <&clocks SCLK_UART>;
		status = "disabled";
	};
+56 −0
Original line number Diff line number Diff line
* Samsung S3C2443 Clock Controller

The S3C2443 clock controller generates and supplies clock to various controllers
within the SoC. The clock binding described here is applicable to all SoCs in
the s3c24x family starting with the s3c2443.

Required Properties:

- compatible: should be one of the following.
  - "samsung,s3c2416-clock" - controller compatible with S3C2416 SoC.
  - "samsung,s3c2443-clock" - controller compatible with S3C2443 SoC.
  - "samsung,s3c2450-clock" - controller compatible with S3C2450 SoC.
- reg: physical base address of the controller and length of memory mapped
  region.
- #clock-cells: should be 1.

Each clock is assigned an identifier and client nodes can use this identifier
to specify the clock which they consume. Some of the clocks are available only
on a particular SoC.

All available clocks are defined as preprocessor macros in
dt-bindings/clock/s3c2443.h header and can be used in device
tree sources.

External clocks:

There are several clocks that are generated outside the SoC. It is expected
that they are defined using standard clock bindings with following
clock-output-names:
 - "xti" - crystal input - required,
 - "ext" - external clock source - optional,
 - "ext_i2s" - external I2S clock - optional,
 - "ext_uart" - external uart clock - optional,

Example: Clock controller node:

	clocks: clock-controller@4c000000 {
		compatible = "samsung,s3c2416-clock";
		reg = <0x4c000000 0x40>;
		#clock-cells = <1>;
	};

Example: UART controller node that consumes the clock generated by the clock
  controller (refer to the standard clock bindings for information about
  "clocks" and "clock-names" properties):

	serial@50004000 {
		compatible = "samsung,s3c2440-uart";
		reg = <0x50004000 0x4000>;
		interrupts = <1 23 3 4>, <1 23 4 4>;
		clock-names = "uart", "clk_uart_baud2",
				"clk_uart_baud3";
		clocks = <&clocks PCLK_UART0>, <&clocks PCLK_UART0>,
				<&clocks SCLK_UART>;
		status = "disabled";
	};
Loading