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

Commit a93216c9 authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'devel-samsung-for-v3.10' of...

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

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

including various development for samsung for v3.10

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

:
  ARM: EXYNOS: replace cpumask by the corresponding macro
  ARM: EXYNOS: handle properly the return values
  ARM: EXYNOS: factor out the idle states
  ARM: SAMSUNG: check processor type before cache restoration in resume
  ARM: S3C64XX: Slow down mic detection rate for wm5102
  ARM: S3C64XX: Clear DMA flags on channel request
  ARM: EXYNOS: Clear ENABLE_WAKEUP_SW bit when entering suspend
  ARM: EXYNOS: Remove hardcode wakeup unmask for EINT_0
  ARM: EXYNOS: Add support for rtc wakeup
  ARM: SAMSUNG: Export MIPI CSIS/DSIM PHY control functions

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents 518fbd02 329afd26
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -463,6 +463,8 @@ void __init exynos4_init_irq(void)
	 * uses GIC instead of VIC.
	 */
	s5p_init_irq(NULL, 0);

	gic_arch_extn.irq_set_wake = s3c_irq_wake;
}

void __init exynos5_init_irq(void)
+26 −32
Original line number Diff line number Diff line
@@ -41,7 +41,13 @@ static int exynos4_enter_lowpower(struct cpuidle_device *dev,
				struct cpuidle_driver *drv,
				int index);

static struct cpuidle_state exynos4_cpuidle_set[] __initdata = {
static DEFINE_PER_CPU(struct cpuidle_device, exynos4_cpuidle_device);

static struct cpuidle_driver exynos4_idle_driver = {
	.name			= "exynos4_idle",
	.owner			= THIS_MODULE,
	.en_core_tk_irqen	= 1,
	.states = {
		[0] = ARM_CPUIDLE_WFI_STATE,
		[1] = {
			.enter			= exynos4_enter_lowpower,
@@ -51,14 +57,9 @@ static struct cpuidle_state exynos4_cpuidle_set[] __initdata = {
			.name			= "C1",
			.desc			= "ARM power down",
		},
};

static DEFINE_PER_CPU(struct cpuidle_device, exynos4_cpuidle_device);

static struct cpuidle_driver exynos4_idle_driver = {
	.name			= "exynos4_idle",
	.owner			= THIS_MODULE,
	.en_core_tk_irqen	= 1,
	},
	.state_count = 2,
	.safe_state_index = 0,
};

/* Ext-GIC nIRQ/nFIQ is the only wakeup source in AFTR */
@@ -193,37 +194,30 @@ static void __init exynos5_core_down_clk(void)

static int __init exynos4_init_cpuidle(void)
{
	int i, max_cpuidle_state, cpu_id;
	int cpu_id, ret;
	struct cpuidle_device *device;
	struct cpuidle_driver *drv = &exynos4_idle_driver;

	if (soc_is_exynos5250())
		exynos5_core_down_clk();

	/* Setup cpuidle driver */
	drv->state_count = (sizeof(exynos4_cpuidle_set) /
				       sizeof(struct cpuidle_state));
	max_cpuidle_state = drv->state_count;
	for (i = 0; i < max_cpuidle_state; i++) {
		memcpy(&drv->states[i], &exynos4_cpuidle_set[i],
				sizeof(struct cpuidle_state));
	ret = cpuidle_register_driver(&exynos4_idle_driver);
	if (ret) {
		printk(KERN_ERR "CPUidle failed to register driver\n");
		return ret;
	}
	drv->safe_state_index = 0;
	cpuidle_register_driver(&exynos4_idle_driver);

	for_each_cpu(cpu_id, cpu_online_mask) {
	for_each_online_cpu(cpu_id) {
		device = &per_cpu(exynos4_cpuidle_device, cpu_id);
		device->cpu = cpu_id;

		if (cpu_id == 0)
			device->state_count = (sizeof(exynos4_cpuidle_set) /
					       sizeof(struct cpuidle_state));
		else
			device->state_count = 1;	/* Support IDLE only */
		/* Support IDLE only */
		if (cpu_id != 0)
			device->state_count = 1;

		if (cpuidle_register_device(device)) {
			printk(KERN_ERR "CPUidle register device failed\n,");
			return -EIO;
		ret = cpuidle_register_device(device);
		if (ret) {
			printk(KERN_ERR "CPUidle register device failed\n");
			return ret;
		}
	}

+2 −7
Original line number Diff line number Diff line
@@ -27,13 +27,8 @@ static inline void s3c_pm_debug_init_uart(void)

static inline void s3c_pm_arch_prepare_irqs(void)
{
	unsigned int tmp;
	tmp = __raw_readl(S5P_WAKEUP_MASK);
	tmp &= ~(1 << 31);
	__raw_writel(tmp, S5P_WAKEUP_MASK);

	__raw_writel(s3c_irqwake_intmask, S5P_WAKEUP_MASK);
	__raw_writel(s3c_irqwake_eintmask & 0xFFFFFFFE, S5P_EINT_WAKEUP_MASK);
	__raw_writel(s3c_irqwake_eintmask, S5P_EINT_WAKEUP_MASK);
	__raw_writel(s3c_irqwake_intmask & ~(1 << 31), S5P_WAKEUP_MASK);
}

static inline void s3c_pm_arch_stop_clocks(void)
+1 −0
Original line number Diff line number Diff line
@@ -509,6 +509,7 @@ int s3c2410_dma_request(enum dma_ch channel,
	chan->client = client;
	chan->in_use = 1;
	chan->peripheral = channel;
	chan->flags = 0;

	local_irq_restore(flags);

+1 −0
Original line number Diff line number Diff line
@@ -210,6 +210,7 @@ static struct arizona_pdata wm5102_reva_pdata = {
	.gpio_base = CODEC_GPIO_BASE,
	.irq_active_high = true,
	.micd_pol_gpio = CODEC_GPIO_BASE + 4,
	.micd_rate = 6,
	.gpio_defaults = {
		[2] = 0x10000, /* AIF3TXLRCLK */
		[3] = 0x4,     /* OPCLK */
Loading