diff options
Diffstat (limited to 'arch/arm/mach-s3c64xx')
-rw-r--r-- | arch/arm/mach-s3c64xx/clock.c | 19 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/dma.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/irq-eint.c | 37 |
3 files changed, 23 insertions, 34 deletions
diff --git a/arch/arm/mach-s3c64xx/clock.c b/arch/arm/mach-s3c64xx/clock.c index 1c98d2ff2ed6..dd3782064508 100644 --- a/arch/arm/mach-s3c64xx/clock.c +++ b/arch/arm/mach-s3c64xx/clock.c | |||
@@ -127,7 +127,7 @@ int s3c64xx_sclk_ctrl(struct clk *clk, int enable) | |||
127 | return s3c64xx_gate(S3C_SCLK_GATE, clk, enable); | 127 | return s3c64xx_gate(S3C_SCLK_GATE, clk, enable); |
128 | } | 128 | } |
129 | 129 | ||
130 | static struct clk init_clocks_disable[] = { | 130 | static struct clk init_clocks_off[] = { |
131 | { | 131 | { |
132 | .name = "nand", | 132 | .name = "nand", |
133 | .id = -1, | 133 | .id = -1, |
@@ -834,10 +834,6 @@ static struct clk *clks[] __initdata = { | |||
834 | void __init s3c64xx_register_clocks(unsigned long xtal, | 834 | void __init s3c64xx_register_clocks(unsigned long xtal, |
835 | unsigned armclk_divlimit) | 835 | unsigned armclk_divlimit) |
836 | { | 836 | { |
837 | struct clk *clkp; | ||
838 | int ret; | ||
839 | int ptr; | ||
840 | |||
841 | armclk_mask = armclk_divlimit; | 837 | armclk_mask = armclk_divlimit; |
842 | 838 | ||
843 | s3c24xx_register_baseclocks(xtal); | 839 | s3c24xx_register_baseclocks(xtal); |
@@ -845,17 +841,8 @@ void __init s3c64xx_register_clocks(unsigned long xtal, | |||
845 | 841 | ||
846 | s3c_register_clocks(init_clocks, ARRAY_SIZE(init_clocks)); | 842 | s3c_register_clocks(init_clocks, ARRAY_SIZE(init_clocks)); |
847 | 843 | ||
848 | clkp = init_clocks_disable; | 844 | s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); |
849 | for (ptr = 0; ptr < ARRAY_SIZE(init_clocks_disable); ptr++, clkp++) { | 845 | s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); |
850 | |||
851 | ret = s3c24xx_register_clock(clkp); | ||
852 | if (ret < 0) { | ||
853 | printk(KERN_ERR "Failed to register clock %s (%d)\n", | ||
854 | clkp->name, ret); | ||
855 | } | ||
856 | |||
857 | (clkp->enable)(clkp, 0); | ||
858 | } | ||
859 | 846 | ||
860 | s3c24xx_register_clocks(clks1, ARRAY_SIZE(clks1)); | 847 | s3c24xx_register_clocks(clks1, ARRAY_SIZE(clks1)); |
861 | s3c_register_clksrc(clksrcs, ARRAY_SIZE(clksrcs)); | 848 | s3c_register_clksrc(clksrcs, ARRAY_SIZE(clksrcs)); |
diff --git a/arch/arm/mach-s3c64xx/dma.c b/arch/arm/mach-s3c64xx/dma.c index 372ea6855454..135db1b41252 100644 --- a/arch/arm/mach-s3c64xx/dma.c +++ b/arch/arm/mach-s3c64xx/dma.c | |||
@@ -212,6 +212,7 @@ static int s3c64xx_dma_start(struct s3c2410_dma_chan *chan) | |||
212 | 212 | ||
213 | config = readl(chan->regs + PL080S_CH_CONFIG); | 213 | config = readl(chan->regs + PL080S_CH_CONFIG); |
214 | config |= PL080_CONFIG_ENABLE; | 214 | config |= PL080_CONFIG_ENABLE; |
215 | config &= ~PL080_CONFIG_HALT; | ||
215 | 216 | ||
216 | pr_debug("%s: writing config %08x\n", __func__, config); | 217 | pr_debug("%s: writing config %08x\n", __func__, config); |
217 | writel(config, chan->regs + PL080S_CH_CONFIG); | 218 | writel(config, chan->regs + PL080S_CH_CONFIG); |
diff --git a/arch/arm/mach-s3c64xx/irq-eint.c b/arch/arm/mach-s3c64xx/irq-eint.c index 5682d6a7f4af..2ead8189da74 100644 --- a/arch/arm/mach-s3c64xx/irq-eint.c +++ b/arch/arm/mach-s3c64xx/irq-eint.c | |||
@@ -30,41 +30,41 @@ | |||
30 | #include <plat/pm.h> | 30 | #include <plat/pm.h> |
31 | 31 | ||
32 | #define eint_offset(irq) ((irq) - IRQ_EINT(0)) | 32 | #define eint_offset(irq) ((irq) - IRQ_EINT(0)) |
33 | #define eint_irq_to_bit(irq) (1 << eint_offset(irq)) | 33 | #define eint_irq_to_bit(irq) ((u32)(1 << eint_offset(irq))) |
34 | 34 | ||
35 | static inline void s3c_irq_eint_mask(unsigned int irq) | 35 | static inline void s3c_irq_eint_mask(struct irq_data *data) |
36 | { | 36 | { |
37 | u32 mask; | 37 | u32 mask; |
38 | 38 | ||
39 | mask = __raw_readl(S3C64XX_EINT0MASK); | 39 | mask = __raw_readl(S3C64XX_EINT0MASK); |
40 | mask |= eint_irq_to_bit(irq); | 40 | mask |= (u32)data->chip_data; |
41 | __raw_writel(mask, S3C64XX_EINT0MASK); | 41 | __raw_writel(mask, S3C64XX_EINT0MASK); |
42 | } | 42 | } |
43 | 43 | ||
44 | static void s3c_irq_eint_unmask(unsigned int irq) | 44 | static void s3c_irq_eint_unmask(struct irq_data *data) |
45 | { | 45 | { |
46 | u32 mask; | 46 | u32 mask; |
47 | 47 | ||
48 | mask = __raw_readl(S3C64XX_EINT0MASK); | 48 | mask = __raw_readl(S3C64XX_EINT0MASK); |
49 | mask &= ~eint_irq_to_bit(irq); | 49 | mask &= ~((u32)data->chip_data); |
50 | __raw_writel(mask, S3C64XX_EINT0MASK); | 50 | __raw_writel(mask, S3C64XX_EINT0MASK); |
51 | } | 51 | } |
52 | 52 | ||
53 | static inline void s3c_irq_eint_ack(unsigned int irq) | 53 | static inline void s3c_irq_eint_ack(struct irq_data *data) |
54 | { | 54 | { |
55 | __raw_writel(eint_irq_to_bit(irq), S3C64XX_EINT0PEND); | 55 | __raw_writel((u32)data->chip_data, S3C64XX_EINT0PEND); |
56 | } | 56 | } |
57 | 57 | ||
58 | static void s3c_irq_eint_maskack(unsigned int irq) | 58 | static void s3c_irq_eint_maskack(struct irq_data *data) |
59 | { | 59 | { |
60 | /* compiler should in-line these */ | 60 | /* compiler should in-line these */ |
61 | s3c_irq_eint_mask(irq); | 61 | s3c_irq_eint_mask(data); |
62 | s3c_irq_eint_ack(irq); | 62 | s3c_irq_eint_ack(data); |
63 | } | 63 | } |
64 | 64 | ||
65 | static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type) | 65 | static int s3c_irq_eint_set_type(struct irq_data *data, unsigned int type) |
66 | { | 66 | { |
67 | int offs = eint_offset(irq); | 67 | int offs = eint_offset(data->irq); |
68 | int pin, pin_val; | 68 | int pin, pin_val; |
69 | int shift; | 69 | int shift; |
70 | u32 ctrl, mask; | 70 | u32 ctrl, mask; |
@@ -140,12 +140,12 @@ static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type) | |||
140 | 140 | ||
141 | static struct irq_chip s3c_irq_eint = { | 141 | static struct irq_chip s3c_irq_eint = { |
142 | .name = "s3c-eint", | 142 | .name = "s3c-eint", |
143 | .mask = s3c_irq_eint_mask, | 143 | .irq_mask = s3c_irq_eint_mask, |
144 | .unmask = s3c_irq_eint_unmask, | 144 | .irq_unmask = s3c_irq_eint_unmask, |
145 | .mask_ack = s3c_irq_eint_maskack, | 145 | .irq_mask_ack = s3c_irq_eint_maskack, |
146 | .ack = s3c_irq_eint_ack, | 146 | .irq_ack = s3c_irq_eint_ack, |
147 | .set_type = s3c_irq_eint_set_type, | 147 | .irq_set_type = s3c_irq_eint_set_type, |
148 | .set_wake = s3c_irqext_wake, | 148 | .irq_set_wake = s3c_irqext_wake, |
149 | }; | 149 | }; |
150 | 150 | ||
151 | /* s3c_irq_demux_eint | 151 | /* s3c_irq_demux_eint |
@@ -198,6 +198,7 @@ static int __init s3c64xx_init_irq_eint(void) | |||
198 | 198 | ||
199 | for (irq = IRQ_EINT(0); irq <= IRQ_EINT(27); irq++) { | 199 | for (irq = IRQ_EINT(0); irq <= IRQ_EINT(27); irq++) { |
200 | set_irq_chip(irq, &s3c_irq_eint); | 200 | set_irq_chip(irq, &s3c_irq_eint); |
201 | set_irq_chip_data(irq, (void *)eint_irq_to_bit(irq)); | ||
201 | set_irq_handler(irq, handle_level_irq); | 202 | set_irq_handler(irq, handle_level_irq); |
202 | set_irq_flags(irq, IRQF_VALID); | 203 | set_irq_flags(irq, IRQF_VALID); |
203 | } | 204 | } |