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

Commit 0b8467ee authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'pmu-exynos-for-v3.10' of...

Merge tag 'pmu-exynos-for-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/drivers

From Kukjin Kim <kgene.kim@samsung.com>:

add support arm-pmu for exynos4 and exynos5250

* tag 'pmu-exynos-for-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung

:
  ARM: EXYNOS: Add arm-pmu DT binding for exynos421x
  ARM: EXYNOS: Add arm-pmu DT binding for exynos5250
  ARM: EXYNOS: Enable PMUs for exynos4
  irqchip: exynos-combiner: Correct combined IRQs for exynos4
  irqchip: exynos-combiner: Add set_irq_affinity function for combiner_irq

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents 19ce4f4a db35234e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -77,6 +77,12 @@
		#clock-cells = <1>;
	};

	pmu {
		compatible = "arm,cortex-a9-pmu";
		interrupt-parent = <&combiner>;
		interrupts = <2 2>, <3 2>;
	};

	pinctrl_0: pinctrl@11400000 {
		compatible = "samsung,exynos4210-pinctrl";
		reg = <0x11400000 0x1000>;
+6 −0
Original line number Diff line number Diff line
@@ -109,6 +109,12 @@
		};
	};

	pmu {
		compatible = "arm,cortex-a15-pmu";
		interrupt-parent = <&combiner>;
		interrupts = <1 2>, <22 4>;
	};

	watchdog {
		compatible = "samsung,s3c2410-wdt";
		reg = <0x101D0000 0x100>;
+28 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@
#include <mach/regs-irq.h>
#include <mach/regs-pmu.h>
#include <mach/regs-gpio.h>
#include <mach/irqs.h>

#include <plat/cpu.h>
#include <plat/devs.h>
@@ -851,3 +852,30 @@ static int __init exynos_init_irq_eint(void)
	return 0;
}
arch_initcall(exynos_init_irq_eint);

static struct resource exynos4_pmu_resource[] = {
	DEFINE_RES_IRQ(EXYNOS4_IRQ_PMU),
	DEFINE_RES_IRQ(EXYNOS4_IRQ_PMU_CPU1),
#if defined(CONFIG_SOC_EXYNOS4412)
	DEFINE_RES_IRQ(EXYNOS4_IRQ_PMU_CPU2),
	DEFINE_RES_IRQ(EXYNOS4_IRQ_PMU_CPU3),
#endif
};

static struct platform_device exynos4_device_pmu = {
	.name		= "arm-pmu",
	.num_resources	= ARRAY_SIZE(exynos4_pmu_resource),
	.resource	= exynos4_pmu_resource,
};

static int __init exynos_armpmu_init(void)
{
	if (!of_have_populated_dt()) {
		if (soc_is_exynos4210() || soc_is_exynos4212())
			exynos4_device_pmu.num_resources = 2;
		platform_device_register(&exynos4_device_pmu);
	}

	return 0;
}
arch_initcall(exynos_armpmu_init);
+10 −3
Original line number Diff line number Diff line
@@ -126,7 +126,7 @@
#define EXYNOS4_IRQ_ADC1		IRQ_SPI(107)
#define EXYNOS4_IRQ_PEN1		IRQ_SPI(108)
#define EXYNOS4_IRQ_KEYPAD		IRQ_SPI(109)
#define EXYNOS4_IRQ_PMU			IRQ_SPI(110)
#define EXYNOS4_IRQ_POWER_PMU		IRQ_SPI(110)
#define EXYNOS4_IRQ_GPS			IRQ_SPI(111)
#define EXYNOS4_IRQ_INTFEEDCTRL_SSS	IRQ_SPI(112)
#define EXYNOS4_IRQ_SLIMBUS		IRQ_SPI(113)
@@ -134,6 +134,11 @@
#define EXYNOS4_IRQ_TSI			IRQ_SPI(115)
#define EXYNOS4_IRQ_SATA		IRQ_SPI(116)

#define EXYNOS4_IRQ_PMU			COMBINER_IRQ(2, 2)
#define EXYNOS4_IRQ_PMU_CPU1		COMBINER_IRQ(3, 2)
#define EXYNOS4_IRQ_PMU_CPU2		COMBINER_IRQ(18, 2)
#define EXYNOS4_IRQ_PMU_CPU3		COMBINER_IRQ(19, 2)

#define EXYNOS4_IRQ_TMU_TRIG0		COMBINER_IRQ(2, 4)
#define EXYNOS4_IRQ_TMU_TRIG1		COMBINER_IRQ(3, 4)

@@ -166,7 +171,10 @@
#define EXYNOS4_IRQ_FIMD0_VSYNC		COMBINER_IRQ(11, 1)
#define EXYNOS4_IRQ_FIMD0_SYSTEM	COMBINER_IRQ(11, 2)

#define EXYNOS4_MAX_COMBINER_NR		16
#define EXYNOS4210_MAX_COMBINER_NR	16
#define EXYNOS4212_MAX_COMBINER_NR	18
#define EXYNOS4412_MAX_COMBINER_NR	20
#define EXYNOS4_MAX_COMBINER_NR		EXYNOS4412_MAX_COMBINER_NR

#define EXYNOS4_IRQ_GPIO1_NR_GROUPS	16
#define EXYNOS4_IRQ_GPIO2_NR_GROUPS	9
@@ -231,7 +239,6 @@
#define IRQ_TC				EXYNOS4_IRQ_PEN0

#define IRQ_KEYPAD			EXYNOS4_IRQ_KEYPAD
#define IRQ_PMU				EXYNOS4_IRQ_PMU

#define IRQ_FIMD0_FIFO			EXYNOS4_IRQ_FIMD0_FIFO
#define IRQ_FIMD0_VSYNC			EXYNOS4_IRQ_FIMD0_VSYNC
+1 −1
Original line number Diff line number Diff line
@@ -1113,7 +1113,7 @@ struct platform_device s5p_device_onenand = {

/* PMU */

#ifdef CONFIG_PLAT_S5P
#if defined(CONFIG_PLAT_S5P) && !defined(CONFIG_ARCH_EXYNOS)
static struct resource s5p_pmu_resource[] = {
	DEFINE_RES_IRQ(IRQ_PMU)
};
Loading