diff options
-rw-r--r-- | arch/m68k/mac/config.c | 2 | ||||
-rw-r--r-- | arch/m68k/mac/macints.c | 12 | ||||
-rw-r--r-- | arch/m68k/mac/via.c | 43 |
3 files changed, 24 insertions, 33 deletions
diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c index 55db101dd36d..12e564c62957 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 6c9ad9bbcc96..41dd164aac27 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 974c3e9ac7f3..642b44615f78 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; |