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

Commit dca092f6 authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'exynos-mcpm' of...

Merge tag 'exynos-mcpm' of http://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/soc

Merge "Exynos MCPM support for v3.16" from Kukjin Kim:

- adding MCPM backend support for SMP secondary boot and core switching
on Samsung's Exynos5420.

Tested on exynos5420-smdk5420 and exynos5420 based chromebook (peach-pit)
using the "/dev/b.L_switcher" user interface. Secondary core boot-up has
also been tested on both the boards.

* tag 'exynos-mcpm' of http://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung

:
  ARM: EXYNOS: Add MCPM call-back functions
  ARM: dts: add CCI node for exynos5420
  ARM: EXYNOS: Add generic cluster power control functions
  ARM: EXYNOS: use generic exynos cpu power control functions
  ARM: EXYNOS: Add generic cpu power control functions for exynos SoCs

Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents 4fd09120 ccf55117
Loading
Loading
Loading
Loading
+38 −0
Original line number Original line Diff line number Diff line
Samsung Exynos SYSRAM for SMP bringup:
------------------------------------

Samsung SMP-capable Exynos SoCs use part of the SYSRAM for the bringup
of the secondary cores. Once the core gets powered up it executes the
code that is residing at some specific location of the SYSRAM.

Therefore reserved section sub-nodes have to be added to the mmio-sram
declaration. These nodes are of two types depending upon secure or
non-secure execution environment.

Required sub-node properties:
- compatible : depending upon boot mode, should be
		"samsung,exynos4210-sysram" : for Secure SYSRAM
		"samsung,exynos4210-sysram-ns" : for Non-secure SYSRAM

The rest of the properties should follow the generic mmio-sram discription
found in ../../misc/sysram.txt

Example:

	sysram@02020000 {
		compatible = "mmio-sram";
		reg = <0x02020000 0x54000>;
		#address-cells = <1>;
		#size-cells = <1>;
		ranges = <0 0x02020000 0x54000>;

		smp-sysram@0 {
			compatible = "samsung,exynos4210-sysram";
			reg = <0x0 0x1000>;
		};

		smp-sysram@53000 {
			compatible = "samsung,exynos4210-sysram-ns";
			reg = <0x53000 0x1000>;
		};
	};
+1 −0
Original line number Original line Diff line number Diff line
@@ -843,6 +843,7 @@ config ARCH_EXYNOS
	select HAVE_S3C_RTC if RTC_CLASS
	select HAVE_S3C_RTC if RTC_CLASS
	select NEED_MACH_MEMORY_H
	select NEED_MACH_MEMORY_H
	select SPARSE_IRQ
	select SPARSE_IRQ
	select SRAM
	select USE_OF
	select USE_OF
	help
	help
	  Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)
	  Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)
+1 −0
Original line number Original line Diff line number Diff line
@@ -74,6 +74,7 @@ dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
	exynos5250-smdk5250.dtb \
	exynos5250-smdk5250.dtb \
	exynos5250-snow.dtb \
	exynos5250-snow.dtb \
	exynos5420-arndale-octa.dtb \
	exynos5420-arndale-octa.dtb \
	exynos5420-peach-pit.dtb \
	exynos5420-smdk5420.dtb \
	exynos5420-smdk5420.dtb \
	exynos5440-sd5v1.dtb \
	exynos5440-sd5v1.dtb \
	exynos5440-ssdk5440.dtb
	exynos5440-ssdk5440.dtb
+14 −4
Original line number Original line Diff line number Diff line
@@ -129,11 +129,9 @@
		status = "disabled";
		status = "disabled";
		#address-cells = <1>;
		#address-cells = <1>;
		#size-cells = <1>;
		#size-cells = <1>;
		ranges;

		clock_cam: clock-controller {
		#clock-cells = <1>;
		#clock-cells = <1>;
		};
		clock-output-names = "cam_a_clkout", "cam_b_clkout";
		ranges;


		fimc_0: fimc@11800000 {
		fimc_0: fimc@11800000 {
			compatible = "samsung,exynos4210-fimc";
			compatible = "samsung,exynos4210-fimc";
@@ -371,6 +369,8 @@
		interrupts = <0 60 0>;
		interrupts = <0 60 0>;
		clocks = <&clock CLK_I2C2>;
		clocks = <&clock CLK_I2C2>;
		clock-names = "i2c";
		clock-names = "i2c";
		pinctrl-names = "default";
		pinctrl-0 = <&i2c2_bus>;
		status = "disabled";
		status = "disabled";
	};
	};


@@ -382,6 +382,8 @@
		interrupts = <0 61 0>;
		interrupts = <0 61 0>;
		clocks = <&clock CLK_I2C3>;
		clocks = <&clock CLK_I2C3>;
		clock-names = "i2c";
		clock-names = "i2c";
		pinctrl-names = "default";
		pinctrl-0 = <&i2c3_bus>;
		status = "disabled";
		status = "disabled";
	};
	};


@@ -393,6 +395,8 @@
		interrupts = <0 62 0>;
		interrupts = <0 62 0>;
		clocks = <&clock CLK_I2C4>;
		clocks = <&clock CLK_I2C4>;
		clock-names = "i2c";
		clock-names = "i2c";
		pinctrl-names = "default";
		pinctrl-0 = <&i2c4_bus>;
		status = "disabled";
		status = "disabled";
	};
	};


@@ -404,6 +408,8 @@
		interrupts = <0 63 0>;
		interrupts = <0 63 0>;
		clocks = <&clock CLK_I2C5>;
		clocks = <&clock CLK_I2C5>;
		clock-names = "i2c";
		clock-names = "i2c";
		pinctrl-names = "default";
		pinctrl-0 = <&i2c5_bus>;
		status = "disabled";
		status = "disabled";
	};
	};


@@ -415,6 +421,8 @@
		interrupts = <0 64 0>;
		interrupts = <0 64 0>;
		clocks = <&clock CLK_I2C6>;
		clocks = <&clock CLK_I2C6>;
		clock-names = "i2c";
		clock-names = "i2c";
		pinctrl-names = "default";
		pinctrl-0 = <&i2c6_bus>;
		status = "disabled";
		status = "disabled";
	};
	};


@@ -426,6 +434,8 @@
		interrupts = <0 65 0>;
		interrupts = <0 65 0>;
		clocks = <&clock CLK_I2C7>;
		clocks = <&clock CLK_I2C7>;
		clock-names = "i2c";
		clock-names = "i2c";
		pinctrl-names = "default";
		pinctrl-0 = <&i2c7_bus>;
		status = "disabled";
		status = "disabled";
	};
	};


+15 −0
Original line number Original line Diff line number Diff line
@@ -28,6 +28,21 @@
		bootargs = "console=ttySAC2,115200N8 root=/dev/mmcblk0p5 rw rootwait earlyprintk panic=5 maxcpus=1";
		bootargs = "console=ttySAC2,115200N8 root=/dev/mmcblk0p5 rw rootwait earlyprintk panic=5 maxcpus=1";
	};
	};


	sysram@02020000 {
		smp-sysram@0 {
			status = "disabled";
		};

		smp-sysram@5000 {
			compatible = "samsung,exynos4210-sysram";
			reg = <0x5000 0x1000>;
		};

		smp-sysram@1f000 {
			status = "disabled";
		};
	};

	mct@10050000 {
	mct@10050000 {
		compatible = "none";
		compatible = "none";
	};
	};
Loading