linux/arch/m68k
Finn Thain 8ee90c5c3f m68k/mac: Disentangle VIA/RBV and NuBus initialization
The Nubus subsystem should not be concerned with differences between VIA,
RBV and OSS platforms. It should be portable across Macs and PowerMacs.
This goal has implications for the initialization code relating to bus
locking and slot interrupts.

During Nubus initialization, bus transactions are "unlocked": on VIA2 and
RBV machines, via_nubus_init() sets a bit in the via2[gBufB] register to
allow bus-mastering Nubus cards to arbitrate for the bus. This happens
upon subsys_initcall(nubus_init). But because nubus_init() has no effect
on card state, this sequence is arbitrary.

Moreover, when Penguin is used to boot Linux, the bus is already unlocked
when Linux starts. On OSS machines there's no attempt to unlock Nubus
transactions at all. (Maybe there's no benefit on that platform or maybe
no-one knows how.)

All of this demonstrates that there's no benefit in locking out
bus-mastering cards, as yet. (If the need arises, we could lock the bus
for the duration of a timing-critical operation.) NetBSD unlocks the
Nubus early (at VIA initialization) and we can do the same.

via_nubus_init() is also responsible for some VIA interrupt setup that
should happen earlier than subsys_initcall(nubus_init). And actually, the
Nubus subsystem need not be involved with slot interrupts: SLOT2IRQ
works fine because Nubus slot IRQs are geographically assigned
(regardless of platform).

For certain platforms with PDS slots, some Nubus IRQs may be platform
IRQs and this is not something that the NuBus subsystem should worry
about. So let's invoke via_nubus_init() earlier and make the platform
responsible for bus unlocking and interrupt setup instead of the NuBus
subsystem.

Tested-by: Stan Johnson <userm57@yahoo.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2017-11-09 23:02:57 +01:00
..
68000 m68k: replace gcc specific macros with ones from compiler.h 2017-02-24 17:46:56 -08:00
amiga m68k/amiga: Use seq_puts() in amiga_get_hardware_list() 2016-12-09 08:52:29 +01:00
apollo char/genrtc: remove m68k support 2016-06-04 00:23:28 +02:00
atari m68k/atari: Modernize printing of kernel messages 2017-02-12 10:36:49 +01:00
bvme6000 m68k/bvme6000: Modernize printing of kernel messages 2017-02-12 10:36:50 +01:00
coldfire Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu 2017-09-10 21:07:39 -07:00
configs m68k/defconfig: Update defconfigs for v4.13-rc1 2017-08-21 11:52:20 +02:00
emu net: Remove usage of net_device last_rx member 2017-01-18 17:22:49 -05:00
fpsp040
hp300 char/genrtc: remove m68k support 2016-06-04 00:23:28 +02:00
ifpsp060 scripts/spelling.txt: add regsiter -> register spelling mistake 2017-05-08 17:15:13 -07:00
include m68k: Add braces to __pmd(x) initializer to kill compiler warning 2017-09-10 09:55:35 -07:00
kernel m68k updates for 4.13 2017-07-03 15:12:52 -07:00
lib m68k: get rid of zeroing 2017-03-28 18:23:40 -04:00
mac m68k/mac: Disentangle VIA/RBV and NuBus initialization 2017-11-09 23:02:57 +01:00
math-emu m68k: Assorted spelling fixes 2016-07-03 14:05:28 +02:00
mm m68k: switch to generic extable.h 2017-03-28 18:23:40 -04:00
mvme16x m68k/mvme16x: Modernize printing of kernel messages 2017-02-12 10:36:51 +01:00
mvme147 m68k/mvme147: Modernize printing of kernel messages 2017-02-12 10:36:50 +01:00
q40 m68k/q40: Modernize printing of kernel messages 2017-02-12 10:36:51 +01:00
sun3 sched/headers: Prepare for new header dependencies before moving code to <linux/sched/mm.h> 2017-03-02 08:42:28 +01:00
sun3x m68k/sun3x: Modernize printing of kernel messages 2017-02-12 10:36:52 +01:00
tools/amiga
install.sh
Kconfig arch: define CPU_BIG_ENDIAN for all fixed big endian archs 2017-09-08 18:26:48 -07:00
Kconfig.bus m68k/atari: ROM port ISA adapter support 2013-04-16 21:08:11 +02:00
Kconfig.cpu m68k: move CONFIG_FPU set to per-CPU configuration 2016-09-26 12:02:58 +10:00
Kconfig.debug m68knommu: remove obsolete 68360 support 2016-03-07 10:07:17 +10:00
Kconfig.devices Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k 2014-10-08 05:40:17 -04:00
Kconfig.machine m68k: add Sysam AMCORE open board support 2016-12-05 08:53:27 +10:00
Makefile m68knommu: remove obsolete 68360 support 2016-03-07 10:07:17 +10:00