From 4656ad4861dd7703778118b0a2abfb9baf5a81ba Mon Sep 17 00:00:00 2001 From: Finn Thain Date: Mon, 24 Oct 2011 01:11:16 +1100 Subject: [PATCH] --- yaml --- r: 280007 b: refs/heads/master c: 8d9f014ad16711d79c8a575f2d3d009d2a16c7b7 h: refs/heads/master i: 280005: 70c49b9f12123e19a9d6d4e30aa123901dbbace0 280003: 5f0070a6e89f436260789d9f4e591fd9c21e3a96 279999: fa2f501c55915e7858882258b9759be5663e9913 v: v3 --- [refs] | 2 +- trunk/arch/m68k/mac/config.c | 2 +- trunk/arch/m68k/mac/macints.c | 12 ++++++++++ trunk/arch/m68k/mac/via.c | 43 +++++++++-------------------------- 4 files changed, 25 insertions(+), 34 deletions(-) diff --git a/[refs] b/[refs] index 0090c295fbec..3fa772b04fe6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ed04c97d5187c2d606a8fee0ec9ba172942ee508 +refs/heads/master: 8d9f014ad16711d79c8a575f2d3d009d2a16c7b7 diff --git a/trunk/arch/m68k/mac/config.c b/trunk/arch/m68k/mac/config.c index 55db101dd36d..12e564c62957 100644 --- a/trunk/arch/m68k/mac/config.c +++ b/trunk/arch/m68k/mac/config.c @@ -594,7 +594,7 @@ static struct mac_model mac_data_table[] = { .ident = MAC_MODEL_TV, .name = "TV", .adb_type = MAC_ADB_CUDA, - .via_type = MAC_VIA_QUADRA, + .via_type = MAC_VIA_IIci, .scsi_type = MAC_SCSI_OLD, .scc_type = MAC_SCC_II, .nubus_type = MAC_NUBUS, diff --git a/trunk/arch/m68k/mac/macints.c b/trunk/arch/m68k/mac/macints.c index 6c9ad9bbcc96..41dd164aac27 100644 --- a/trunk/arch/m68k/mac/macints.c +++ b/trunk/arch/m68k/mac/macints.c @@ -42,6 +42,18 @@ * * 6 - off switch (?) * + * Machines with Quadra-like VIA hardware, except PSC and PMU machines, support + * an alternate interrupt mapping, as used by A/UX. It spreads ethernet and + * sound out to their own autovector IRQs and gives VIA1 a higher priority: + * + * 1 - unused (?) + * + * 3 - on-board SONIC + * + * 5 - Apple Sound Chip (ASC) + * + * 6 - VIA1 + * * For OSS Macintoshes (IIfx only at this point): * * 3 - Nubus interrupt diff --git a/trunk/arch/m68k/mac/via.c b/trunk/arch/m68k/mac/via.c index 974c3e9ac7f3..642b44615f78 100644 --- a/trunk/arch/m68k/mac/via.c +++ b/trunk/arch/m68k/mac/via.c @@ -194,38 +194,17 @@ void __init via_init(void) if (oss_present) return; - /* Some machines support an alternate IRQ mapping that spreads */ - /* Ethernet and Sound out to their own autolevel IRQs and moves */ - /* VIA1 to level 6. A/UX uses this mapping and we do too. Note */ - /* that the IIfx emulates this alternate mapping using the OSS. */ - - via_alt_mapping = 0; - if (macintosh_config->via_type == MAC_VIA_QUADRA) - switch (macintosh_config->ident) { - case MAC_MODEL_C660: - case MAC_MODEL_Q840: - /* not applicable */ - break; - case MAC_MODEL_P588: - case MAC_MODEL_TV: - case MAC_MODEL_PB140: - case MAC_MODEL_PB145: - case MAC_MODEL_PB160: - case MAC_MODEL_PB165: - case MAC_MODEL_PB165C: - case MAC_MODEL_PB170: - case MAC_MODEL_PB180: - case MAC_MODEL_PB180C: - case MAC_MODEL_PB190: - case MAC_MODEL_PB520: - /* not yet tested */ - break; - default: - via_alt_mapping = 1; - via1[vDirB] |= 0x40; - via1[vBufB] &= ~0x40; - break; - } + if ((macintosh_config->via_type == MAC_VIA_QUADRA) && + (macintosh_config->adb_type != MAC_ADB_PB1) && + (macintosh_config->adb_type != MAC_ADB_PB2) && + (macintosh_config->ident != MAC_MODEL_C660) && + (macintosh_config->ident != MAC_MODEL_Q840)) { + via_alt_mapping = 1; + via1[vDirB] |= 0x40; + via1[vBufB] &= ~0x40; + } else { + via_alt_mapping = 0; + } /* * Now initialize VIA2. For RBV we just kill all interrupts;