Skip to content

Commit 2380a22

Browse files
lkundrakMarc Zyngier
authored andcommitted
irqchip/mmp: Only touch the PJ4 IRQ & FIQ bits on enable/disable
Resetting bit 4 disables the interrupt delivery to the "secure processor" core. This breaks the keyboard on a OLPC XO 1.75 laptop, where the firmware running on the "secure processor" bit-bangs the PS/2 protocol over the GPIO lines. It is not clear what the rest of the bits are and Marvell was unhelpful when asked for documentation. Aside from the SP bit, there are probably priority bits. Leaving the unknown bits as the firmware set them up seems to be a wiser course of action compared to just turning them off. Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Acked-by: Pavel Machek <pavel@ucw.cz> [maz: fixed-up subject and commit message] Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
1 parent 45725e0 commit 2380a22

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

drivers/irqchip/irq-mmp.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
#define SEL_INT_PENDING (1 << 6)
3535
#define SEL_INT_NUM_MASK 0x3f
3636

37+
#define MMP2_ICU_INT_ROUTE_PJ4_IRQ (1 << 5)
38+
#define MMP2_ICU_INT_ROUTE_PJ4_FIQ (1 << 6)
39+
3740
struct icu_chip_data {
3841
int nr_irqs;
3942
unsigned int virq_base;
@@ -190,7 +193,8 @@ static const struct mmp_intc_conf mmp_conf = {
190193
static const struct mmp_intc_conf mmp2_conf = {
191194
.conf_enable = 0x20,
192195
.conf_disable = 0x0,
193-
.conf_mask = 0x7f,
196+
.conf_mask = MMP2_ICU_INT_ROUTE_PJ4_IRQ |
197+
MMP2_ICU_INT_ROUTE_PJ4_FIQ,
194198
};
195199

196200
static void __exception_irq_entry mmp_handle_irq(struct pt_regs *regs)

0 commit comments

Comments
 (0)