tmp_suning_uos_patched/arch/m68k
Finn Thain cd713ddc93 m68k: Mac nubus IRQ fixes (plan E)
Some Macs lack a slot interrupt enable register. So the existing code makes
disabled and unregistered slot IRQ lines outputs set high. This seems to work
on quadras, but does not work on genuine VIAs (perhaps the card still succeeds
in pulling the line low, or perhaps because this increases the settle time on
the port A input, meaning that the CA1 IRQ could fire before the slot line
reads active).

Because of this, the nubus_active flags were used to mask IRQs, which is
actually worse than the problem it tries to solve. Any interrupt masked by
nubus_active will remain asserted and prevent further transitions on CA1. And
so the nubus gets wedged regardless of hardware (emulated VIA ASIC, real VIA
chip or RBV).

The best solution to this hardware limitation of genuine VIAs is to disable the
umbrella SLOTS IRQ when disabling a slot on those machines. Unfortunately, this
means all slot IRQs get disabled when any slot IRQ is disabled. But it is only
a problem when there's more than 1 device using nubus interrupts.

Another potential problem for genuine VIAs is an unregistered nubus IRQ.
Eventually it will be possible to enable the CA1 interrupt by installing its
handler only _after_ all nubus drivers have loaded but _before_ the kernel
needs them, at which time this last problem can be fixed. For now it can be
worked around:

  - disable MacOS extensions
  - don't boot MacOS (use the Emile bootloader instead)
  - get the bootloaders to disable ROM drivers (Penguin does this for video
    cards already, don't know about Emile)
  - physically remove unsupported cards

Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-04 17:59:07 -07:00
..
amiga m68k: early parameter support 2007-05-04 17:59:06 -07:00
apollo [PATCH] m68k/Apollo: Remove obsolete arch/m68k/apollo/dma.c 2006-10-09 14:54:46 -07:00
atari m68k: early parameter support 2007-05-04 17:59:06 -07:00
bvme6000 [PATCH] mark struct file_operations const 2 2007-02-12 09:48:44 -08:00
configs [PATCH] M68k: Mark Sun-3 NCR5380 SCSI broken 2005-06-12 20:43:22 -07:00
fpsp040 [PATCH] Add wording to m68k .S files to help clarify license info 2006-02-11 21:41:11 -08:00
hp300 IRQ: Use the new typedef for interrupt handler function pointers 2006-10-09 12:19:47 +01:00
ifpsp060 [PATCH] m68k: convert thread flags to use bit fields 2005-11-13 18:14:14 -08:00
kernel m68k: early parameter support 2007-05-04 17:59:06 -07:00
lib [NET]: M68K checksum annotations and cleanups. 2006-12-02 21:23:07 -08:00
mac m68k: Mac nubus IRQ fixes (plan E) 2007-05-04 17:59:07 -07:00
math-emu Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
mm [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
mvme16x [PATCH] mark struct file_operations const 2 2007-02-12 09:48:44 -08:00
mvme147 IRQ: Use the new typedef for interrupt handler function pointers 2006-10-09 12:19:47 +01:00
q40 m68k: early parameter support 2007-05-04 17:59:06 -07:00
sun3 m68k: Correct number of interrupts for Sun3 2007-05-04 17:59:06 -07:00
sun3x m68k: early parameter support 2007-05-04 17:59:06 -07:00
tools/amiga Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
defconfig [PATCH] M68k: Update defconfigs 2005-06-12 20:43:21 -07:00
Kconfig m68k: Atari keyboard and mouse support. 2007-05-04 17:59:05 -07:00
Kconfig.debug Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile m68k: CROSS_COMPILE = m68k-linux-gnu- 2007-05-04 17:59:05 -07:00