aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k/mac
diff options
context:
space:
mode:
authorFinn Thain <fthain@telegraphics.com.au>2011-10-23 10:11:16 -0400
committerGeert Uytterhoeven <geert@linux-m68k.org>2011-12-10 13:52:46 -0500
commit8d9f014ad16711d79c8a575f2d3d009d2a16c7b7 (patch)
tree6bd8602d0fcada17b5e75af3b16c1be01e55f191 /arch/m68k/mac
parented04c97d5187c2d606a8fee0ec9ba172942ee508 (diff)
m68k/mac: enable via_alt_mapping on performa 580
Enable via_alt_mapping on the Performa 588 and tidy up related documentation. I'm betting that remapped IRQs work just fine on the Performa 580 series since it works on the LC 630 and the logic board part numbers are reputedly the same. And the consensus seems to be that the Mac TV is essentially a Performa 550, not dissimilar to the Performa 520, so set the via_type accordingly. Signed-off-by: Finn Thain <fthain@telegraphics.com.au> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Diffstat (limited to 'arch/m68k/mac')
-rw-r--r--arch/m68k/mac/config.c2
-rw-r--r--arch/m68k/mac/macints.c12
-rw-r--r--arch/m68k/mac/via.c43
3 files changed, 24 insertions, 33 deletions
diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c
index 55db101dd36..12e564c6295 100644
--- a/arch/m68k/mac/config.c
+++ b/arch/m68k/mac/config.c
@@ -594,7 +594,7 @@ static struct mac_model mac_data_table[] = {
594 .ident = MAC_MODEL_TV, 594 .ident = MAC_MODEL_TV,
595 .name = "TV", 595 .name = "TV",
596 .adb_type = MAC_ADB_CUDA, 596 .adb_type = MAC_ADB_CUDA,
597 .via_type = MAC_VIA_QUADRA, 597 .via_type = MAC_VIA_IIci,
598 .scsi_type = MAC_SCSI_OLD, 598 .scsi_type = MAC_SCSI_OLD,
599 .scc_type = MAC_SCC_II, 599 .scc_type = MAC_SCC_II,
600 .nubus_type = MAC_NUBUS, 600 .nubus_type = MAC_NUBUS,
diff --git a/arch/m68k/mac/macints.c b/arch/m68k/mac/macints.c
index 6c9ad9bbcc9..41dd164aac2 100644
--- a/arch/m68k/mac/macints.c
+++ b/arch/m68k/mac/macints.c
@@ -42,6 +42,18 @@
42 * 42 *
43 * 6 - off switch (?) 43 * 6 - off switch (?)
44 * 44 *
45 * Machines with Quadra-like VIA hardware, except PSC and PMU machines, support
46 * an alternate interrupt mapping, as used by A/UX. It spreads ethernet and
47 * sound out to their own autovector IRQs and gives VIA1 a higher priority:
48 *
49 * 1 - unused (?)
50 *
51 * 3 - on-board SONIC
52 *
53 * 5 - Apple Sound Chip (ASC)
54 *
55 * 6 - VIA1
56 *
45 * For OSS Macintoshes (IIfx only at this point): 57 * For OSS Macintoshes (IIfx only at this point):
46 * 58 *
47 * 3 - Nubus interrupt 59 * 3 - Nubus interrupt
diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c
index 974c3e9ac7f..642b44615f7 100644
--- a/arch/m68k/mac/via.c
+++ b/arch/m68k/mac/via.c
@@ -194,38 +194,17 @@ void __init via_init(void)
194 if (oss_present) 194 if (oss_present)
195 return; 195 return;
196 196
197 /* Some machines support an alternate IRQ mapping that spreads */ 197 if ((macintosh_config->via_type == MAC_VIA_QUADRA) &&
198 /* Ethernet and Sound out to their own autolevel IRQs and moves */ 198 (macintosh_config->adb_type != MAC_ADB_PB1) &&
199 /* VIA1 to level 6. A/UX uses this mapping and we do too. Note */ 199 (macintosh_config->adb_type != MAC_ADB_PB2) &&
200 /* that the IIfx emulates this alternate mapping using the OSS. */ 200 (macintosh_config->ident != MAC_MODEL_C660) &&
201 201 (macintosh_config->ident != MAC_MODEL_Q840)) {
202 via_alt_mapping = 0; 202 via_alt_mapping = 1;
203 if (macintosh_config->via_type == MAC_VIA_QUADRA) 203 via1[vDirB] |= 0x40;
204 switch (macintosh_config->ident) { 204 via1[vBufB] &= ~0x40;
205 case MAC_MODEL_C660: 205 } else {
206 case MAC_MODEL_Q840: 206 via_alt_mapping = 0;
207 /* not applicable */ 207 }
208 break;
209 case MAC_MODEL_P588:
210 case MAC_MODEL_TV:
211 case MAC_MODEL_PB140:
212 case MAC_MODEL_PB145:
213 case MAC_MODEL_PB160:
214 case MAC_MODEL_PB165:
215 case MAC_MODEL_PB165C:
216 case MAC_MODEL_PB170:
217 case MAC_MODEL_PB180:
218 case MAC_MODEL_PB180C:
219 case MAC_MODEL_PB190:
220 case MAC_MODEL_PB520:
221 /* not yet tested */
222 break;
223 default:
224 via_alt_mapping = 1;
225 via1[vDirB] |= 0x40;
226 via1[vBufB] &= ~0x40;
227 break;
228 }
229 208
230 /* 209 /*
231 * Now initialize VIA2. For RBV we just kill all interrupts; 210 * Now initialize VIA2. For RBV we just kill all interrupts;