|
32 | 32 | #define LIOINTC_REG_INTC_EN_STATUS (LIOINTC_INTC_CHIP_START + 0x04)
|
33 | 33 | #define LIOINTC_REG_INTC_ENABLE (LIOINTC_INTC_CHIP_START + 0x08)
|
34 | 34 | #define LIOINTC_REG_INTC_DISABLE (LIOINTC_INTC_CHIP_START + 0x0c)
|
| 35 | +/* |
| 36 | + * LIOINTC_REG_INTC_POL register is only valid for Loongson-2K series, and |
| 37 | + * Loongson-3 series behave as noops. |
| 38 | + */ |
35 | 39 | #define LIOINTC_REG_INTC_POL (LIOINTC_INTC_CHIP_START + 0x10)
|
36 | 40 | #define LIOINTC_REG_INTC_EDGE (LIOINTC_INTC_CHIP_START + 0x14)
|
37 | 41 |
|
@@ -116,19 +120,19 @@ static int liointc_set_type(struct irq_data *data, unsigned int type)
|
116 | 120 | switch (type) {
|
117 | 121 | case IRQ_TYPE_LEVEL_HIGH:
|
118 | 122 | liointc_set_bit(gc, LIOINTC_REG_INTC_EDGE, mask, false);
|
119 |
| - liointc_set_bit(gc, LIOINTC_REG_INTC_POL, mask, true); |
| 123 | + liointc_set_bit(gc, LIOINTC_REG_INTC_POL, mask, false); |
120 | 124 | break;
|
121 | 125 | case IRQ_TYPE_LEVEL_LOW:
|
122 | 126 | liointc_set_bit(gc, LIOINTC_REG_INTC_EDGE, mask, false);
|
123 |
| - liointc_set_bit(gc, LIOINTC_REG_INTC_POL, mask, false); |
| 127 | + liointc_set_bit(gc, LIOINTC_REG_INTC_POL, mask, true); |
124 | 128 | break;
|
125 | 129 | case IRQ_TYPE_EDGE_RISING:
|
126 | 130 | liointc_set_bit(gc, LIOINTC_REG_INTC_EDGE, mask, true);
|
127 |
| - liointc_set_bit(gc, LIOINTC_REG_INTC_POL, mask, true); |
| 131 | + liointc_set_bit(gc, LIOINTC_REG_INTC_POL, mask, false); |
128 | 132 | break;
|
129 | 133 | case IRQ_TYPE_EDGE_FALLING:
|
130 | 134 | liointc_set_bit(gc, LIOINTC_REG_INTC_EDGE, mask, true);
|
131 |
| - liointc_set_bit(gc, LIOINTC_REG_INTC_POL, mask, false); |
| 135 | + liointc_set_bit(gc, LIOINTC_REG_INTC_POL, mask, true); |
132 | 136 | break;
|
133 | 137 | default:
|
134 | 138 | irq_gc_unlock_irqrestore(gc, flags);
|
|
0 commit comments