diff options
| author | Magnus Damm <damm@opensource.se> | 2011-01-19 03:16:29 -0500 |
|---|---|---|
| committer | Paul Mundt <lethal@linux-sh.org> | 2011-01-19 05:02:35 -0500 |
| commit | 8a5a778665efb3a5f16ebb6fbc13356907e45775 (patch) | |
| tree | d8a2978d4c1826b948667058d62c56931d880aab | |
| parent | 24ee7d79c5885275a531431c3b687b3a7919eee4 (diff) | |
sh: update INTC to clear IRQ sense valid flag
Clear the valid flag is in the INTC code.
Without this fix bit 7 of the sense register
is mistakenly set.
Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| -rw-r--r-- | drivers/sh/intc/chip.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/sh/intc/chip.c b/drivers/sh/intc/chip.c index de885a0f917a..f33e2dd97934 100644 --- a/drivers/sh/intc/chip.c +++ b/drivers/sh/intc/chip.c | |||
| @@ -173,7 +173,8 @@ int intc_set_priority(unsigned int irq, unsigned int prio) | |||
| 173 | return 0; | 173 | return 0; |
| 174 | } | 174 | } |
| 175 | 175 | ||
| 176 | #define VALID(x) (x | 0x80) | 176 | #define SENSE_VALID_FLAG 0x80 |
| 177 | #define VALID(x) (x | SENSE_VALID_FLAG) | ||
| 177 | 178 | ||
| 178 | static unsigned char intc_irq_sense_table[IRQ_TYPE_SENSE_MASK + 1] = { | 179 | static unsigned char intc_irq_sense_table[IRQ_TYPE_SENSE_MASK + 1] = { |
| 179 | [IRQ_TYPE_EDGE_FALLING] = VALID(0), | 180 | [IRQ_TYPE_EDGE_FALLING] = VALID(0), |
| @@ -201,7 +202,8 @@ static int intc_set_type(struct irq_data *data, unsigned int type) | |||
| 201 | ihp = intc_find_irq(d->sense, d->nr_sense, irq); | 202 | ihp = intc_find_irq(d->sense, d->nr_sense, irq); |
| 202 | if (ihp) { | 203 | if (ihp) { |
| 203 | addr = INTC_REG(d, _INTC_ADDR_E(ihp->handle), 0); | 204 | addr = INTC_REG(d, _INTC_ADDR_E(ihp->handle), 0); |
| 204 | intc_reg_fns[_INTC_FN(ihp->handle)](addr, ihp->handle, value); | 205 | intc_reg_fns[_INTC_FN(ihp->handle)](addr, ihp->handle, |
| 206 | value & ~SENSE_VALID_FLAG); | ||
| 205 | } | 207 | } |
| 206 | 208 | ||
| 207 | return 0; | 209 | return 0; |
