diff options
Diffstat (limited to 'arch/sh/kernel')
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7724.c | 15 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7785.c | 14 | ||||
-rw-r--r-- | arch/sh/kernel/idle.c | 2 |
3 files changed, 31 insertions, 0 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c index a52f35117e8..d32f96c1cc1 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c | |||
@@ -23,9 +23,23 @@ | |||
23 | #include <linux/notifier.h> | 23 | #include <linux/notifier.h> |
24 | #include <asm/suspend.h> | 24 | #include <asm/suspend.h> |
25 | #include <asm/clock.h> | 25 | #include <asm/clock.h> |
26 | #include <asm/dma-sh.h> | ||
26 | #include <asm/mmzone.h> | 27 | #include <asm/mmzone.h> |
27 | #include <cpu/sh7724.h> | 28 | #include <cpu/sh7724.h> |
28 | 29 | ||
30 | /* DMA */ | ||
31 | static struct sh_dmae_pdata dma_platform_data = { | ||
32 | .mode = SHDMA_DMAOR1, | ||
33 | }; | ||
34 | |||
35 | static struct platform_device dma_device = { | ||
36 | .name = "sh-dma-engine", | ||
37 | .id = -1, | ||
38 | .dev = { | ||
39 | .platform_data = &dma_platform_data, | ||
40 | }, | ||
41 | }; | ||
42 | |||
29 | /* Serial */ | 43 | /* Serial */ |
30 | static struct plat_sci_port scif0_platform_data = { | 44 | static struct plat_sci_port scif0_platform_data = { |
31 | .mapbase = 0xffe00000, | 45 | .mapbase = 0xffe00000, |
@@ -649,6 +663,7 @@ static struct platform_device *sh7724_devices[] __initdata = { | |||
649 | &tmu3_device, | 663 | &tmu3_device, |
650 | &tmu4_device, | 664 | &tmu4_device, |
651 | &tmu5_device, | 665 | &tmu5_device, |
666 | &dma_device, | ||
652 | &rtc_device, | 667 | &rtc_device, |
653 | &iic0_device, | 668 | &iic0_device, |
654 | &iic1_device, | 669 | &iic1_device, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c index ef26ebda6e8..f685b9b2199 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <linux/mm.h> | 15 | #include <linux/mm.h> |
16 | #include <linux/sh_timer.h> | 16 | #include <linux/sh_timer.h> |
17 | #include <asm/dma-sh.h> | ||
17 | #include <asm/mmzone.h> | 18 | #include <asm/mmzone.h> |
18 | 19 | ||
19 | static struct plat_sci_port scif0_platform_data = { | 20 | static struct plat_sci_port scif0_platform_data = { |
@@ -294,6 +295,18 @@ static struct platform_device tmu5_device = { | |||
294 | .num_resources = ARRAY_SIZE(tmu5_resources), | 295 | .num_resources = ARRAY_SIZE(tmu5_resources), |
295 | }; | 296 | }; |
296 | 297 | ||
298 | static struct sh_dmae_pdata dma_platform_data = { | ||
299 | .mode = (SHDMA_MIX_IRQ | SHDMA_DMAOR1), | ||
300 | }; | ||
301 | |||
302 | static struct platform_device dma_device = { | ||
303 | .name = "sh-dma-engine", | ||
304 | .id = -1, | ||
305 | .dev = { | ||
306 | .platform_data = &dma_platform_data, | ||
307 | }, | ||
308 | }; | ||
309 | |||
297 | static struct platform_device *sh7785_devices[] __initdata = { | 310 | static struct platform_device *sh7785_devices[] __initdata = { |
298 | &scif0_device, | 311 | &scif0_device, |
299 | &scif1_device, | 312 | &scif1_device, |
@@ -307,6 +320,7 @@ static struct platform_device *sh7785_devices[] __initdata = { | |||
307 | &tmu3_device, | 320 | &tmu3_device, |
308 | &tmu4_device, | 321 | &tmu4_device, |
309 | &tmu5_device, | 322 | &tmu5_device, |
323 | &dma_device, | ||
310 | }; | 324 | }; |
311 | 325 | ||
312 | static int __init sh7785_devices_setup(void) | 326 | static int __init sh7785_devices_setup(void) |
diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c index aaff0037fcd..6b3d706deac 100644 --- a/arch/sh/kernel/idle.c +++ b/arch/sh/kernel/idle.c | |||
@@ -62,6 +62,7 @@ void default_idle(void) | |||
62 | clear_thread_flag(TIF_POLLING_NRFLAG); | 62 | clear_thread_flag(TIF_POLLING_NRFLAG); |
63 | smp_mb__after_clear_bit(); | 63 | smp_mb__after_clear_bit(); |
64 | 64 | ||
65 | set_bl_bit(); | ||
65 | if (!need_resched()) { | 66 | if (!need_resched()) { |
66 | local_irq_enable(); | 67 | local_irq_enable(); |
67 | cpu_sleep(); | 68 | cpu_sleep(); |
@@ -69,6 +70,7 @@ void default_idle(void) | |||
69 | local_irq_enable(); | 70 | local_irq_enable(); |
70 | 71 | ||
71 | set_thread_flag(TIF_POLLING_NRFLAG); | 72 | set_thread_flag(TIF_POLLING_NRFLAG); |
73 | clear_bl_bit(); | ||
72 | } else | 74 | } else |
73 | poll_idle(); | 75 | poll_idle(); |
74 | } | 76 | } |