diff options
author | Olof Johansson <olof@lixom.net> | 2013-10-28 00:42:44 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2013-10-28 00:42:44 -0400 |
commit | 3316dee245ef297155fa45b8d14263dfd6a9164b (patch) | |
tree | 7adbf9875893ce0405f771d92d266d70df1aedbb /drivers/clocksource/exynos_mct.c | |
parent | f2c4e82e350dab489ae0d8fcd84b780de508ab64 (diff) | |
parent | 1fecf8958eb7f90791f2c7e99afac393b64fa976 (diff) |
Merge tag 's3c24xx-dma' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/drivers
From Kukjin Kim, this branch adds device-tree support to the DMA controller
on the older Samsung SoCs. It also adds support for one of the missing SoCs
in the family (2410).
The driver has been Ack:ed by Vinod Koul, but is merged through here due
to dependencies with platform code.
* tag 's3c24xx-dma' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
ARM: S3C24XX: add dma pdata for s3c2410, s3c2440 and s3c2442
dmaengine: s3c24xx-dma: add support for the s3c2410 type of controller
ARM: S3C24XX: Fix possible dma selection warning
ARM: SAMSUNG: set s3c24xx_dma_filter for s3c64xx-spi0 device
ARM: S3C24XX: add platform-devices for new dma driver for s3c2412 and s3c2443
dmaengine: add driver for Samsung s3c24xx SoCs
ARM: S3C24XX: number the dma clocks
+ Linux 3.12-rc3
Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'drivers/clocksource/exynos_mct.c')
-rw-r--r-- | drivers/clocksource/exynos_mct.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c index 5b34768f4d7c..62b0de6a1837 100644 --- a/drivers/clocksource/exynos_mct.c +++ b/drivers/clocksource/exynos_mct.c | |||
@@ -428,7 +428,6 @@ static int exynos4_local_timer_setup(struct clock_event_device *evt) | |||
428 | evt->irq); | 428 | evt->irq); |
429 | return -EIO; | 429 | return -EIO; |
430 | } | 430 | } |
431 | irq_set_affinity(evt->irq, cpumask_of(cpu)); | ||
432 | } else { | 431 | } else { |
433 | enable_percpu_irq(mct_irqs[MCT_L0_IRQ], 0); | 432 | enable_percpu_irq(mct_irqs[MCT_L0_IRQ], 0); |
434 | } | 433 | } |
@@ -449,6 +448,7 @@ static int exynos4_mct_cpu_notify(struct notifier_block *self, | |||
449 | unsigned long action, void *hcpu) | 448 | unsigned long action, void *hcpu) |
450 | { | 449 | { |
451 | struct mct_clock_event_device *mevt; | 450 | struct mct_clock_event_device *mevt; |
451 | unsigned int cpu; | ||
452 | 452 | ||
453 | /* | 453 | /* |
454 | * Grab cpu pointer in each case to avoid spurious | 454 | * Grab cpu pointer in each case to avoid spurious |
@@ -459,6 +459,12 @@ static int exynos4_mct_cpu_notify(struct notifier_block *self, | |||
459 | mevt = this_cpu_ptr(&percpu_mct_tick); | 459 | mevt = this_cpu_ptr(&percpu_mct_tick); |
460 | exynos4_local_timer_setup(&mevt->evt); | 460 | exynos4_local_timer_setup(&mevt->evt); |
461 | break; | 461 | break; |
462 | case CPU_ONLINE: | ||
463 | cpu = (unsigned long)hcpu; | ||
464 | if (mct_int_type == MCT_INT_SPI) | ||
465 | irq_set_affinity(mct_irqs[MCT_L0_IRQ + cpu], | ||
466 | cpumask_of(cpu)); | ||
467 | break; | ||
462 | case CPU_DYING: | 468 | case CPU_DYING: |
463 | mevt = this_cpu_ptr(&percpu_mct_tick); | 469 | mevt = this_cpu_ptr(&percpu_mct_tick); |
464 | exynos4_local_timer_stop(&mevt->evt); | 470 | exynos4_local_timer_stop(&mevt->evt); |
@@ -500,6 +506,8 @@ static void __init exynos4_timer_resources(struct device_node *np, void __iomem | |||
500 | &percpu_mct_tick); | 506 | &percpu_mct_tick); |
501 | WARN(err, "MCT: can't request IRQ %d (%d)\n", | 507 | WARN(err, "MCT: can't request IRQ %d (%d)\n", |
502 | mct_irqs[MCT_L0_IRQ], err); | 508 | mct_irqs[MCT_L0_IRQ], err); |
509 | } else { | ||
510 | irq_set_affinity(mct_irqs[MCT_L0_IRQ], cpumask_of(0)); | ||
503 | } | 511 | } |
504 | 512 | ||
505 | err = register_cpu_notifier(&exynos4_mct_cpu_nb); | 513 | err = register_cpu_notifier(&exynos4_mct_cpu_nb); |