diff options
Diffstat (limited to 'arch/arm/plat-samsung')
| -rw-r--r-- | arch/arm/plat-samsung/dma.c | 6 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/include/plat/devs.h | 6 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/include/plat/dma.h | 21 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/include/plat/pm.h | 5 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/include/plat/regs-serial.h | 2 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/include/plat/s3c64xx-spi.h | 2 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/irq-uart.c | 9 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/irq-vic-timer.c | 7 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/pm.c | 11 |
9 files changed, 45 insertions, 24 deletions
diff --git a/arch/arm/plat-samsung/dma.c b/arch/arm/plat-samsung/dma.c index cb459dd95459..6143aa147688 100644 --- a/arch/arm/plat-samsung/dma.c +++ b/arch/arm/plat-samsung/dma.c | |||
| @@ -41,7 +41,7 @@ struct s3c2410_dma_chan *s3c_dma_lookup_channel(unsigned int channel) | |||
| 41 | * irq? | 41 | * irq? |
| 42 | */ | 42 | */ |
| 43 | 43 | ||
| 44 | int s3c2410_dma_set_opfn(unsigned int channel, s3c2410_dma_opfn_t rtn) | 44 | int s3c2410_dma_set_opfn(enum dma_ch channel, s3c2410_dma_opfn_t rtn) |
| 45 | { | 45 | { |
| 46 | struct s3c2410_dma_chan *chan = s3c_dma_lookup_channel(channel); | 46 | struct s3c2410_dma_chan *chan = s3c_dma_lookup_channel(channel); |
| 47 | 47 | ||
| @@ -56,7 +56,7 @@ int s3c2410_dma_set_opfn(unsigned int channel, s3c2410_dma_opfn_t rtn) | |||
| 56 | } | 56 | } |
| 57 | EXPORT_SYMBOL(s3c2410_dma_set_opfn); | 57 | EXPORT_SYMBOL(s3c2410_dma_set_opfn); |
| 58 | 58 | ||
| 59 | int s3c2410_dma_set_buffdone_fn(unsigned int channel, s3c2410_dma_cbfn_t rtn) | 59 | int s3c2410_dma_set_buffdone_fn(enum dma_ch channel, s3c2410_dma_cbfn_t rtn) |
| 60 | { | 60 | { |
| 61 | struct s3c2410_dma_chan *chan = s3c_dma_lookup_channel(channel); | 61 | struct s3c2410_dma_chan *chan = s3c_dma_lookup_channel(channel); |
| 62 | 62 | ||
| @@ -71,7 +71,7 @@ int s3c2410_dma_set_buffdone_fn(unsigned int channel, s3c2410_dma_cbfn_t rtn) | |||
| 71 | } | 71 | } |
| 72 | EXPORT_SYMBOL(s3c2410_dma_set_buffdone_fn); | 72 | EXPORT_SYMBOL(s3c2410_dma_set_buffdone_fn); |
| 73 | 73 | ||
| 74 | int s3c2410_dma_setflags(unsigned int channel, unsigned int flags) | 74 | int s3c2410_dma_setflags(enum dma_ch channel, unsigned int flags) |
| 75 | { | 75 | { |
| 76 | struct s3c2410_dma_chan *chan = s3c_dma_lookup_channel(channel); | 76 | struct s3c2410_dma_chan *chan = s3c_dma_lookup_channel(channel); |
| 77 | 77 | ||
diff --git a/arch/arm/plat-samsung/include/plat/devs.h b/arch/arm/plat-samsung/include/plat/devs.h index 4af108ff4112..e3b31c26ac3e 100644 --- a/arch/arm/plat-samsung/include/plat/devs.h +++ b/arch/arm/plat-samsung/include/plat/devs.h | |||
| @@ -12,6 +12,10 @@ | |||
| 12 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
| 13 | * published by the Free Software Foundation. | 13 | * published by the Free Software Foundation. |
| 14 | */ | 14 | */ |
| 15 | |||
| 16 | #ifndef __PLAT_DEVS_H | ||
| 17 | #define __PLAT_DEVS_H __FILE__ | ||
| 18 | |||
| 15 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
| 16 | 20 | ||
| 17 | struct s3c24xx_uart_resources { | 21 | struct s3c24xx_uart_resources { |
| @@ -159,3 +163,5 @@ extern struct platform_device s3c_device_ac97; | |||
| 159 | */ | 163 | */ |
| 160 | extern void *s3c_set_platdata(void *pd, size_t pdsize, | 164 | extern void *s3c_set_platdata(void *pd, size_t pdsize, |
| 161 | struct platform_device *pdev); | 165 | struct platform_device *pdev); |
| 166 | |||
| 167 | #endif /* __PLAT_DEVS_H */ | ||
diff --git a/arch/arm/plat-samsung/include/plat/dma.h b/arch/arm/plat-samsung/include/plat/dma.h index 2e8f8c6560d7..8c273b7a6f56 100644 --- a/arch/arm/plat-samsung/include/plat/dma.h +++ b/arch/arm/plat-samsung/include/plat/dma.h | |||
| @@ -42,6 +42,7 @@ struct s3c2410_dma_client { | |||
| 42 | }; | 42 | }; |
| 43 | 43 | ||
| 44 | struct s3c2410_dma_chan; | 44 | struct s3c2410_dma_chan; |
| 45 | enum dma_ch; | ||
| 45 | 46 | ||
| 46 | /* s3c2410_dma_cbfn_t | 47 | /* s3c2410_dma_cbfn_t |
| 47 | * | 48 | * |
| @@ -62,7 +63,7 @@ typedef int (*s3c2410_dma_opfn_t)(struct s3c2410_dma_chan *, | |||
| 62 | * request a dma channel exclusivley | 63 | * request a dma channel exclusivley |
| 63 | */ | 64 | */ |
| 64 | 65 | ||
| 65 | extern int s3c2410_dma_request(unsigned int channel, | 66 | extern int s3c2410_dma_request(enum dma_ch channel, |
| 66 | struct s3c2410_dma_client *, void *dev); | 67 | struct s3c2410_dma_client *, void *dev); |
| 67 | 68 | ||
| 68 | 69 | ||
| @@ -71,14 +72,14 @@ extern int s3c2410_dma_request(unsigned int channel, | |||
| 71 | * change the state of the dma channel | 72 | * change the state of the dma channel |
| 72 | */ | 73 | */ |
| 73 | 74 | ||
| 74 | extern int s3c2410_dma_ctrl(unsigned int channel, enum s3c2410_chan_op op); | 75 | extern int s3c2410_dma_ctrl(enum dma_ch channel, enum s3c2410_chan_op op); |
| 75 | 76 | ||
| 76 | /* s3c2410_dma_setflags | 77 | /* s3c2410_dma_setflags |
| 77 | * | 78 | * |
| 78 | * set the channel's flags to a given state | 79 | * set the channel's flags to a given state |
| 79 | */ | 80 | */ |
| 80 | 81 | ||
| 81 | extern int s3c2410_dma_setflags(unsigned int channel, | 82 | extern int s3c2410_dma_setflags(enum dma_ch channel, |
| 82 | unsigned int flags); | 83 | unsigned int flags); |
| 83 | 84 | ||
| 84 | /* s3c2410_dma_free | 85 | /* s3c2410_dma_free |
| @@ -86,7 +87,7 @@ extern int s3c2410_dma_setflags(unsigned int channel, | |||
| 86 | * free the dma channel (will also abort any outstanding operations) | 87 | * free the dma channel (will also abort any outstanding operations) |
| 87 | */ | 88 | */ |
| 88 | 89 | ||
| 89 | extern int s3c2410_dma_free(unsigned int channel, struct s3c2410_dma_client *); | 90 | extern int s3c2410_dma_free(enum dma_ch channel, struct s3c2410_dma_client *); |
| 90 | 91 | ||
| 91 | /* s3c2410_dma_enqueue | 92 | /* s3c2410_dma_enqueue |
| 92 | * | 93 | * |
| @@ -95,7 +96,7 @@ extern int s3c2410_dma_free(unsigned int channel, struct s3c2410_dma_client *); | |||
| 95 | * drained before the buffer is given to the DMA system. | 96 | * drained before the buffer is given to the DMA system. |
| 96 | */ | 97 | */ |
| 97 | 98 | ||
| 98 | extern int s3c2410_dma_enqueue(unsigned int channel, void *id, | 99 | extern int s3c2410_dma_enqueue(enum dma_ch channel, void *id, |
| 99 | dma_addr_t data, int size); | 100 | dma_addr_t data, int size); |
| 100 | 101 | ||
| 101 | /* s3c2410_dma_config | 102 | /* s3c2410_dma_config |
| @@ -103,14 +104,14 @@ extern int s3c2410_dma_enqueue(unsigned int channel, void *id, | |||
| 103 | * configure the dma channel | 104 | * configure the dma channel |
| 104 | */ | 105 | */ |
| 105 | 106 | ||
| 106 | extern int s3c2410_dma_config(unsigned int channel, int xferunit); | 107 | extern int s3c2410_dma_config(enum dma_ch channel, int xferunit); |
| 107 | 108 | ||
| 108 | /* s3c2410_dma_devconfig | 109 | /* s3c2410_dma_devconfig |
| 109 | * | 110 | * |
| 110 | * configure the device we're talking to | 111 | * configure the device we're talking to |
| 111 | */ | 112 | */ |
| 112 | 113 | ||
| 113 | extern int s3c2410_dma_devconfig(unsigned int channel, | 114 | extern int s3c2410_dma_devconfig(enum dma_ch channel, |
| 114 | enum s3c2410_dmasrc source, unsigned long devaddr); | 115 | enum s3c2410_dmasrc source, unsigned long devaddr); |
| 115 | 116 | ||
| 116 | /* s3c2410_dma_getposition | 117 | /* s3c2410_dma_getposition |
| @@ -118,10 +119,10 @@ extern int s3c2410_dma_devconfig(unsigned int channel, | |||
| 118 | * get the position that the dma transfer is currently at | 119 | * get the position that the dma transfer is currently at |
| 119 | */ | 120 | */ |
| 120 | 121 | ||
| 121 | extern int s3c2410_dma_getposition(unsigned int channel, | 122 | extern int s3c2410_dma_getposition(enum dma_ch channel, |
| 122 | dma_addr_t *src, dma_addr_t *dest); | 123 | dma_addr_t *src, dma_addr_t *dest); |
| 123 | 124 | ||
| 124 | extern int s3c2410_dma_set_opfn(unsigned int, s3c2410_dma_opfn_t rtn); | 125 | extern int s3c2410_dma_set_opfn(enum dma_ch, s3c2410_dma_opfn_t rtn); |
| 125 | extern int s3c2410_dma_set_buffdone_fn(unsigned int, s3c2410_dma_cbfn_t rtn); | 126 | extern int s3c2410_dma_set_buffdone_fn(enum dma_ch, s3c2410_dma_cbfn_t rtn); |
| 126 | 127 | ||
| 127 | 128 | ||
diff --git a/arch/arm/plat-samsung/include/plat/pm.h b/arch/arm/plat-samsung/include/plat/pm.h index 7fb6f6be8c81..f6749916d194 100644 --- a/arch/arm/plat-samsung/include/plat/pm.h +++ b/arch/arm/plat-samsung/include/plat/pm.h | |||
| @@ -42,7 +42,7 @@ extern unsigned long s3c_irqwake_eintallow; | |||
| 42 | /* per-cpu sleep functions */ | 42 | /* per-cpu sleep functions */ |
| 43 | 43 | ||
| 44 | extern void (*pm_cpu_prep)(void); | 44 | extern void (*pm_cpu_prep)(void); |
| 45 | extern void (*pm_cpu_sleep)(void); | 45 | extern int (*pm_cpu_sleep)(unsigned long); |
| 46 | 46 | ||
| 47 | /* Flags for PM Control */ | 47 | /* Flags for PM Control */ |
| 48 | 48 | ||
| @@ -52,10 +52,9 @@ extern unsigned char pm_uart_udivslot; /* true to save UART UDIVSLOT */ | |||
| 52 | 52 | ||
| 53 | /* from sleep.S */ | 53 | /* from sleep.S */ |
| 54 | 54 | ||
| 55 | extern int s3c_cpu_save(unsigned long *saveblk, long); | ||
| 56 | extern void s3c_cpu_resume(void); | 55 | extern void s3c_cpu_resume(void); |
| 57 | 56 | ||
| 58 | extern void s3c2410_cpu_suspend(void); | 57 | extern int s3c2410_cpu_suspend(unsigned long); |
| 59 | 58 | ||
| 60 | /* sleep save info */ | 59 | /* sleep save info */ |
| 61 | 60 | ||
diff --git a/arch/arm/plat-samsung/include/plat/regs-serial.h b/arch/arm/plat-samsung/include/plat/regs-serial.h index c151c5f94a87..116edfe120b9 100644 --- a/arch/arm/plat-samsung/include/plat/regs-serial.h +++ b/arch/arm/plat-samsung/include/plat/regs-serial.h | |||
| @@ -224,6 +224,8 @@ | |||
| 224 | #define S5PV210_UFSTAT_RXMASK (255<<0) | 224 | #define S5PV210_UFSTAT_RXMASK (255<<0) |
| 225 | #define S5PV210_UFSTAT_RXSHIFT (0) | 225 | #define S5PV210_UFSTAT_RXSHIFT (0) |
| 226 | 226 | ||
| 227 | #define NO_NEED_CHECK_CLKSRC 1 | ||
| 228 | |||
| 227 | #ifndef __ASSEMBLY__ | 229 | #ifndef __ASSEMBLY__ |
| 228 | 230 | ||
| 229 | /* struct s3c24xx_uart_clksrc | 231 | /* struct s3c24xx_uart_clksrc |
diff --git a/arch/arm/plat-samsung/include/plat/s3c64xx-spi.h b/arch/arm/plat-samsung/include/plat/s3c64xx-spi.h index 0ffe34a21554..4c16fa3621bb 100644 --- a/arch/arm/plat-samsung/include/plat/s3c64xx-spi.h +++ b/arch/arm/plat-samsung/include/plat/s3c64xx-spi.h | |||
| @@ -39,6 +39,7 @@ struct s3c64xx_spi_csinfo { | |||
| 39 | * @fifo_lvl_mask: All tx fifo_lvl fields start at offset-6 | 39 | * @fifo_lvl_mask: All tx fifo_lvl fields start at offset-6 |
| 40 | * @rx_lvl_offset: Depends on tx fifo_lvl field and bus number | 40 | * @rx_lvl_offset: Depends on tx fifo_lvl field and bus number |
| 41 | * @high_speed: If the controller supports HIGH_SPEED_EN bit | 41 | * @high_speed: If the controller supports HIGH_SPEED_EN bit |
| 42 | * @tx_st_done: Depends on tx fifo_lvl field | ||
| 42 | */ | 43 | */ |
| 43 | struct s3c64xx_spi_info { | 44 | struct s3c64xx_spi_info { |
| 44 | int src_clk_nr; | 45 | int src_clk_nr; |
| @@ -53,6 +54,7 @@ struct s3c64xx_spi_info { | |||
| 53 | int fifo_lvl_mask; | 54 | int fifo_lvl_mask; |
| 54 | int rx_lvl_offset; | 55 | int rx_lvl_offset; |
| 55 | int high_speed; | 56 | int high_speed; |
| 57 | int tx_st_done; | ||
| 56 | }; | 58 | }; |
| 57 | 59 | ||
| 58 | /** | 60 | /** |
diff --git a/arch/arm/plat-samsung/irq-uart.c b/arch/arm/plat-samsung/irq-uart.c index 32582c0958e3..657405c481d0 100644 --- a/arch/arm/plat-samsung/irq-uart.c +++ b/arch/arm/plat-samsung/irq-uart.c | |||
| @@ -54,8 +54,15 @@ static void __init s3c_init_uart_irq(struct s3c_uart_irq *uirq) | |||
| 54 | 54 | ||
| 55 | gc = irq_alloc_generic_chip("s3c-uart", 1, uirq->base_irq, reg_base, | 55 | gc = irq_alloc_generic_chip("s3c-uart", 1, uirq->base_irq, reg_base, |
| 56 | handle_level_irq); | 56 | handle_level_irq); |
| 57 | |||
| 58 | if (!gc) { | ||
| 59 | pr_err("%s: irq_alloc_generic_chip for IRQ %u failed\n", | ||
| 60 | __func__, uirq->base_irq); | ||
| 61 | return; | ||
| 62 | } | ||
| 63 | |||
| 57 | ct = gc->chip_types; | 64 | ct = gc->chip_types; |
| 58 | ct->chip.irq_ack = irq_gc_ack; | 65 | ct->chip.irq_ack = irq_gc_ack_set_bit; |
| 59 | ct->chip.irq_mask = irq_gc_mask_set_bit; | 66 | ct->chip.irq_mask = irq_gc_mask_set_bit; |
| 60 | ct->chip.irq_unmask = irq_gc_mask_clr_bit; | 67 | ct->chip.irq_unmask = irq_gc_mask_clr_bit; |
| 61 | ct->regs.ack = S3C64XX_UINTP; | 68 | ct->regs.ack = S3C64XX_UINTP; |
diff --git a/arch/arm/plat-samsung/irq-vic-timer.c b/arch/arm/plat-samsung/irq-vic-timer.c index a607546ddbd0..f714d060370d 100644 --- a/arch/arm/plat-samsung/irq-vic-timer.c +++ b/arch/arm/plat-samsung/irq-vic-timer.c | |||
| @@ -54,6 +54,13 @@ void __init s3c_init_vic_timer_irq(unsigned int num, unsigned int timer_irq) | |||
| 54 | 54 | ||
| 55 | s3c_tgc = irq_alloc_generic_chip("s3c-timer", 1, timer_irq, | 55 | s3c_tgc = irq_alloc_generic_chip("s3c-timer", 1, timer_irq, |
| 56 | S3C64XX_TINT_CSTAT, handle_level_irq); | 56 | S3C64XX_TINT_CSTAT, handle_level_irq); |
| 57 | |||
| 58 | if (!s3c_tgc) { | ||
| 59 | pr_err("%s: irq_alloc_generic_chip for IRQ %d failed\n", | ||
| 60 | __func__, timer_irq); | ||
| 61 | return; | ||
| 62 | } | ||
| 63 | |||
| 57 | ct = s3c_tgc->chip_types; | 64 | ct = s3c_tgc->chip_types; |
| 58 | ct->chip.irq_mask = irq_gc_mask_clr_bit; | 65 | ct->chip.irq_mask = irq_gc_mask_clr_bit; |
| 59 | ct->chip.irq_unmask = irq_gc_mask_set_bit; | 66 | ct->chip.irq_unmask = irq_gc_mask_set_bit; |
diff --git a/arch/arm/plat-samsung/pm.c b/arch/arm/plat-samsung/pm.c index 5c0a440d6e16..5fa1742d019b 100644 --- a/arch/arm/plat-samsung/pm.c +++ b/arch/arm/plat-samsung/pm.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #include <linux/io.h> | 20 | #include <linux/io.h> |
| 21 | 21 | ||
| 22 | #include <asm/cacheflush.h> | 22 | #include <asm/cacheflush.h> |
| 23 | #include <asm/suspend.h> | ||
| 23 | #include <mach/hardware.h> | 24 | #include <mach/hardware.h> |
| 24 | #include <mach/map.h> | 25 | #include <mach/map.h> |
| 25 | 26 | ||
| @@ -231,7 +232,7 @@ static void __maybe_unused s3c_pm_show_resume_irqs(int start, | |||
| 231 | 232 | ||
| 232 | 233 | ||
| 233 | void (*pm_cpu_prep)(void); | 234 | void (*pm_cpu_prep)(void); |
| 234 | void (*pm_cpu_sleep)(void); | 235 | int (*pm_cpu_sleep)(unsigned long); |
| 235 | 236 | ||
| 236 | #define any_allowed(mask, allow) (((mask) & (allow)) != (allow)) | 237 | #define any_allowed(mask, allow) (((mask) & (allow)) != (allow)) |
| 237 | 238 | ||
| @@ -294,15 +295,11 @@ static int s3c_pm_enter(suspend_state_t state) | |||
| 294 | 295 | ||
| 295 | s3c_pm_arch_stop_clocks(); | 296 | s3c_pm_arch_stop_clocks(); |
| 296 | 297 | ||
| 297 | /* s3c_cpu_save will also act as our return point from when | 298 | /* this will also act as our return point from when |
| 298 | * we resume as it saves its own register state and restores it | 299 | * we resume as it saves its own register state and restores it |
| 299 | * during the resume. */ | 300 | * during the resume. */ |
| 300 | 301 | ||
| 301 | s3c_cpu_save(0, PLAT_PHYS_OFFSET - PAGE_OFFSET); | 302 | cpu_suspend(0, pm_cpu_sleep); |
| 302 | |||
| 303 | /* restore the cpu state using the kernel's cpu init code. */ | ||
| 304 | |||
| 305 | cpu_init(); | ||
| 306 | 303 | ||
| 307 | /* restore the system state */ | 304 | /* restore the system state */ |
| 308 | 305 | ||
