Commit 4cbffc46 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'mips_fixes_5.9_2' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux

Pull MIPS fixes from Thomas Bogendoerfer:
 "Two small fixes for SNI machines"

* tag 'mips_fixes_5.9_2' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
  MIPS: SNI: Fix spurious interrupts
  MIPS: SNI: Fix MIPS_L1_CACHE_SHIFT
parents 5ef64cc8 b959b978
...@@ -877,6 +877,7 @@ config SNI_RM ...@@ -877,6 +877,7 @@ config SNI_RM
select I8253 select I8253
select I8259 select I8259
select ISA select ISA
select MIPS_L1_CACHE_SHIFT_6
select SWAP_IO_SPACE if CPU_BIG_ENDIAN select SWAP_IO_SPACE if CPU_BIG_ENDIAN
select SYS_HAS_CPU_R4X00 select SYS_HAS_CPU_R4X00
select SYS_HAS_CPU_R5000 select SYS_HAS_CPU_R5000
......
...@@ -143,7 +143,10 @@ static struct platform_device sc26xx_pdev = { ...@@ -143,7 +143,10 @@ static struct platform_device sc26xx_pdev = {
}, },
}; };
static u32 a20r_ack_hwint(void) /*
* Trigger chipset to update CPU's CAUSE IP field
*/
static u32 a20r_update_cause_ip(void)
{ {
u32 status = read_c0_status(); u32 status = read_c0_status();
...@@ -205,12 +208,14 @@ static void a20r_hwint(void) ...@@ -205,12 +208,14 @@ static void a20r_hwint(void)
int irq; int irq;
clear_c0_status(IE_IRQ0); clear_c0_status(IE_IRQ0);
status = a20r_ack_hwint(); status = a20r_update_cause_ip();
cause = read_c0_cause(); cause = read_c0_cause();
irq = ffs(((cause & status) >> 8) & 0xf8); irq = ffs(((cause & status) >> 8) & 0xf8);
if (likely(irq > 0)) if (likely(irq > 0))
do_IRQ(SNI_A20R_IRQ_BASE + irq - 1); do_IRQ(SNI_A20R_IRQ_BASE + irq - 1);
a20r_update_cause_ip();
set_c0_status(IE_IRQ0); set_c0_status(IE_IRQ0);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment