2 * linux/arch/m68k/mac/config.c
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file COPYING in the main directory of this archive
10 * Miscellaneous linux stuff
13 #include <linux/module.h>
14 #include <linux/types.h>
16 #include <linux/tty.h>
17 #include <linux/console.h>
18 #include <linux/interrupt.h>
20 #include <linux/random.h>
21 #include <linux/delay.h>
23 #include <linux/init.h>
24 #include <linux/vt_kern.h>
26 #define BOOTINFO_COMPAT_1_0
27 #include <asm/setup.h>
28 #include <asm/bootinfo.h>
30 #include <asm/system.h>
33 #include <asm/pgtable.h>
35 #include <asm/machdep.h>
37 #include <asm/macintosh.h>
38 #include <asm/macints.h>
39 #include <asm/machw.h>
41 #include <asm/mac_iop.h>
42 #include <asm/mac_via.h>
43 #include <asm/mac_oss.h>
44 #include <asm/mac_psc.h>
46 /* Mac bootinfo struct */
48 struct mac_booter_data mac_bi_data
;
49 int mac_bisize
= sizeof mac_bi_data
;
51 struct mac_hw_present mac_hw_present
;
53 /* New m68k bootinfo stuff and videobase */
55 extern int m68k_num_memory
;
56 extern struct mem_info m68k_memory
[NUM_MEMINFO
];
58 extern struct mem_info m68k_ramdisk
;
60 extern char m68k_command_line
[CL_SIZE
];
62 void *mac_env
; /* Loaded by the boot asm */
64 /* The phys. video addr. - might be bogus on some machines */
65 unsigned long mac_orig_videoaddr
;
67 /* Mac specific timer functions */
68 extern unsigned long mac_gettimeoffset (void);
69 extern int mac_hwclk (int, struct rtc_time
*);
70 extern int mac_set_clock_mmss (unsigned long);
71 extern int show_mac_interrupts(struct seq_file
*, void *);
72 extern void iop_preinit(void);
73 extern void iop_init(void);
74 extern void via_init(void);
75 extern void via_init_clock(irq_handler_t func
);
76 extern void via_flush_cache(void);
77 extern void oss_init(void);
78 extern void psc_init(void);
79 extern void baboon_init(void);
81 extern void mac_mksound(unsigned int, unsigned int);
83 extern void nubus_sweep_video(void);
85 /* Mac specific debug functions (in debug.c) */
86 extern void mac_debug_init(void);
87 extern void mac_debugging_long(int, long);
89 static void mac_get_model(char *str
);
91 static void mac_sched_init(irq_handler_t vector
)
93 via_init_clock(vector
);
97 * Parse a Macintosh-specific record in the bootinfo
100 int __init
mac_parse_bootinfo(const struct bi_record
*record
)
103 const u_long
*data
= record
->data
;
105 switch (record
->tag
) {
107 mac_bi_data
.id
= *data
;
110 mac_bi_data
.videoaddr
= *data
;
113 mac_bi_data
.videodepth
= *data
;
116 mac_bi_data
.videorow
= *data
;
119 mac_bi_data
.dimensions
= *data
;
121 case BI_MAC_VLOGICAL
:
122 mac_bi_data
.videological
= VIDEOMEMBASE
+ (*data
& ~VIDEOMEMMASK
);
123 mac_orig_videoaddr
= *data
;
126 mac_bi_data
.sccbase
= *data
;
129 mac_bi_data
.boottime
= *data
;
132 mac_bi_data
.gmtbias
= *data
;
135 mac_bi_data
.memsize
= *data
;
138 mac_bi_data
.cpuid
= *data
;
141 mac_bi_data
.rombase
= *data
;
150 * Flip into 24bit mode for an instant - flushes the L2 cache card. We
151 * have to disable interrupts for this. Our IRQ handlers will crap
152 * themselves if they take an IRQ in 24bit mode!
155 static void mac_cache_card_flush(int writeback
)
158 local_irq_save(flags
);
160 local_irq_restore(flags
);
163 void __init
config_mac(void)
166 printk(KERN_ERR
"ERROR: no Mac, but config_mac() called!! \n");
169 mach_sched_init
= mac_sched_init
;
170 mach_init_IRQ
= mac_init_IRQ
;
171 mach_get_model
= mac_get_model
;
172 mach_gettimeoffset
= mac_gettimeoffset
;
173 #warning move to adb/via init
175 mach_hwclk
= mac_hwclk
;
177 mach_set_clock_mmss
= mac_set_clock_mmss
;
178 mach_reset
= mac_reset
;
179 mach_halt
= mac_poweroff
;
180 mach_power_off
= mac_poweroff
;
181 mach_max_dma_address
= 0xffffffff;
183 mach_debug_init
= mac_debug_init
;
185 #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE)
186 mach_beep
= mac_mksound
;
188 #ifdef CONFIG_HEARTBEAT
190 mach_heartbeat
= mac_heartbeat
;
191 mach_heartbeat_irq
= IRQ_MAC_TIMER
;
196 * Determine hardware present
200 mac_report_hardware();
202 /* AFAIK only the IIci takes a cache card. The IIfx has onboard
203 cache ... someone needs to figure out how to tell if it's on or
206 if (macintosh_config
->ident
== MAC_MODEL_IICI
207 || macintosh_config
->ident
== MAC_MODEL_IIFX
) {
208 mach_l2_flush
= mac_cache_card_flush
;
212 * Check for machine specific fixups.
215 #ifdef OLD_NUBUS_CODE
222 * Macintosh Table: hardcoded model configuration data.
224 * Much of this was defined by Alan, based on who knows what docs.
225 * I've added a lot more, and some of that was pure guesswork based
226 * on hardware pages present on the Mac web site. Possibly wildly
227 * inaccurate, so look here if a new Mac model won't run. Example: if
228 * a Mac crashes immediately after the VIA1 registers have been dumped
229 * to the screen, it probably died attempting to read DirB on a RBV.
230 * Meaning it should have MAC_VIA_IIci here :-)
233 struct mac_model
*macintosh_config
;
234 EXPORT_SYMBOL(macintosh_config
);
236 static struct mac_model mac_data_table
[]=
239 * We'll pretend to be a Macintosh II, that's pretty safe.
243 .ident
= MAC_MODEL_II
,
245 .adb_type
= MAC_ADB_II
,
246 .via_type
= MAC_VIA_II
,
247 .scsi_type
= MAC_SCSI_OLD
,
248 .scc_type
= MAC_SCC_II
,
249 .nubus_type
= MAC_NUBUS
253 * Original MacII hardware
258 .ident
= MAC_MODEL_II
,
260 .adb_type
= MAC_ADB_II
,
261 .via_type
= MAC_VIA_II
,
262 .scsi_type
= MAC_SCSI_OLD
,
263 .scc_type
= MAC_SCC_II
,
264 .nubus_type
= MAC_NUBUS
266 .ident
= MAC_MODEL_IIX
,
268 .adb_type
= MAC_ADB_II
,
269 .via_type
= MAC_VIA_II
,
270 .scsi_type
= MAC_SCSI_OLD
,
271 .scc_type
= MAC_SCC_II
,
272 .nubus_type
= MAC_NUBUS
274 .ident
= MAC_MODEL_IICX
,
276 .adb_type
= MAC_ADB_II
,
277 .via_type
= MAC_VIA_II
,
278 .scsi_type
= MAC_SCSI_OLD
,
279 .scc_type
= MAC_SCC_II
,
280 .nubus_type
= MAC_NUBUS
282 .ident
= MAC_MODEL_SE30
,
284 .adb_type
= MAC_ADB_II
,
285 .via_type
= MAC_VIA_II
,
286 .scsi_type
= MAC_SCSI_OLD
,
287 .scc_type
= MAC_SCC_II
,
288 .nubus_type
= MAC_NUBUS
292 * Weirdified MacII hardware - all subtley different. Gee thanks
293 * Apple. All these boxes seem to have VIA2 in a different place to
294 * the MacII (+1A000 rather than +4000)
295 * CSA: see http://developer.apple.com/technotes/hw/hw_09.html
299 .ident
= MAC_MODEL_IICI
,
301 .adb_type
= MAC_ADB_II
,
302 .via_type
= MAC_VIA_IIci
,
303 .scsi_type
= MAC_SCSI_OLD
,
304 .scc_type
= MAC_SCC_II
,
305 .nubus_type
= MAC_NUBUS
307 .ident
= MAC_MODEL_IIFX
,
309 .adb_type
= MAC_ADB_IOP
,
310 .via_type
= MAC_VIA_IIci
,
311 .scsi_type
= MAC_SCSI_OLD
,
312 .scc_type
= MAC_SCC_IOP
,
313 .nubus_type
= MAC_NUBUS
315 .ident
= MAC_MODEL_IISI
,
317 .adb_type
= MAC_ADB_IISI
,
318 .via_type
= MAC_VIA_IIci
,
319 .scsi_type
= MAC_SCSI_OLD
,
320 .scc_type
= MAC_SCC_II
,
321 .nubus_type
= MAC_NUBUS
323 .ident
= MAC_MODEL_IIVI
,
325 .adb_type
= MAC_ADB_IISI
,
326 .via_type
= MAC_VIA_IIci
,
327 .scsi_type
= MAC_SCSI_OLD
,
328 .scc_type
= MAC_SCC_II
,
329 .nubus_type
= MAC_NUBUS
331 .ident
= MAC_MODEL_IIVX
,
333 .adb_type
= MAC_ADB_IISI
,
334 .via_type
= MAC_VIA_IIci
,
335 .scsi_type
= MAC_SCSI_OLD
,
336 .scc_type
= MAC_SCC_II
,
337 .nubus_type
= MAC_NUBUS
341 * Classic models (guessing: similar to SE/30 ?? Nope, similar to LC ...)
345 .ident
= MAC_MODEL_CLII
,
346 .name
= "Classic II",
347 .adb_type
= MAC_ADB_IISI
,
348 .via_type
= MAC_VIA_IIci
,
349 .scsi_type
= MAC_SCSI_OLD
,
350 .scc_type
= MAC_SCC_II
,
351 .nubus_type
= MAC_NUBUS
353 .ident
= MAC_MODEL_CCL
,
354 .name
= "Color Classic",
355 .adb_type
= MAC_ADB_CUDA
,
356 .via_type
= MAC_VIA_IIci
,
357 .scsi_type
= MAC_SCSI_OLD
,
358 .scc_type
= MAC_SCC_II
,
359 .nubus_type
= MAC_NUBUS
},
362 * Some Mac LC machines. Basically the same as the IIci, ADB like IIsi
366 .ident
= MAC_MODEL_LC
,
368 .adb_type
= MAC_ADB_IISI
,
369 .via_type
= MAC_VIA_IIci
,
370 .scsi_type
= MAC_SCSI_OLD
,
371 .scc_type
= MAC_SCC_II
,
372 .nubus_type
= MAC_NUBUS
374 .ident
= MAC_MODEL_LCII
,
376 .adb_type
= MAC_ADB_IISI
,
377 .via_type
= MAC_VIA_IIci
,
378 .scsi_type
= MAC_SCSI_OLD
,
379 .scc_type
= MAC_SCC_II
,
380 .nubus_type
= MAC_NUBUS
382 .ident
= MAC_MODEL_LCIII
,
384 .adb_type
= MAC_ADB_IISI
,
385 .via_type
= MAC_VIA_IIci
,
386 .scsi_type
= MAC_SCSI_OLD
,
387 .scc_type
= MAC_SCC_II
,
388 .nubus_type
= MAC_NUBUS
392 * Quadra. Video is at 0xF9000000, via is like a MacII. We label it differently
393 * as some of the stuff connected to VIA2 seems different. Better SCSI chip and
394 * onboard ethernet using a NatSemi SONIC except the 660AV and 840AV which use an
396 * The 700, 900 and 950 have some I/O chips in the wrong place to
397 * confuse us. The 840AV has a SCSI location of its own (same as
402 .ident
= MAC_MODEL_Q605
,
403 .name
= "Quadra 605",
404 .adb_type
= MAC_ADB_CUDA
,
405 .via_type
= MAC_VIA_QUADRA
,
406 .scsi_type
= MAC_SCSI_QUADRA
,
407 .scc_type
= MAC_SCC_QUADRA
,
408 .nubus_type
= MAC_NUBUS
410 .ident
= MAC_MODEL_Q605_ACC
,
411 .name
= "Quadra 605",
412 .adb_type
= MAC_ADB_CUDA
,
413 .via_type
= MAC_VIA_QUADRA
,
414 .scsi_type
= MAC_SCSI_QUADRA
,
415 .scc_type
= MAC_SCC_QUADRA
,
416 .nubus_type
= MAC_NUBUS
418 .ident
= MAC_MODEL_Q610
,
419 .name
= "Quadra 610",
420 .adb_type
= MAC_ADB_II
,
421 .via_type
= MAC_VIA_QUADRA
,
422 .scsi_type
= MAC_SCSI_QUADRA
,
423 .scc_type
= MAC_SCC_QUADRA
,
424 .ether_type
= MAC_ETHER_SONIC
,
425 .nubus_type
= MAC_NUBUS
427 .ident
= MAC_MODEL_Q630
,
428 .name
= "Quadra 630",
429 .adb_type
= MAC_ADB_CUDA
,
430 .via_type
= MAC_VIA_QUADRA
,
431 .scsi_type
= MAC_SCSI_QUADRA
,
432 .ide_type
= MAC_IDE_QUADRA
,
433 .scc_type
= MAC_SCC_QUADRA
,
434 .ether_type
= MAC_ETHER_SONIC
,
435 .nubus_type
= MAC_NUBUS
437 .ident
= MAC_MODEL_Q650
,
438 .name
= "Quadra 650",
439 .adb_type
= MAC_ADB_II
,
440 .via_type
= MAC_VIA_QUADRA
,
441 .scsi_type
= MAC_SCSI_QUADRA
,
442 .scc_type
= MAC_SCC_QUADRA
,
443 .ether_type
= MAC_ETHER_SONIC
,
444 .nubus_type
= MAC_NUBUS
446 /* The Q700 does have a NS Sonic */
448 .ident
= MAC_MODEL_Q700
,
449 .name
= "Quadra 700",
450 .adb_type
= MAC_ADB_II
,
451 .via_type
= MAC_VIA_QUADRA
,
452 .scsi_type
= MAC_SCSI_QUADRA2
,
453 .scc_type
= MAC_SCC_QUADRA
,
454 .ether_type
= MAC_ETHER_SONIC
,
455 .nubus_type
= MAC_NUBUS
457 .ident
= MAC_MODEL_Q800
,
458 .name
= "Quadra 800",
459 .adb_type
= MAC_ADB_II
,
460 .via_type
= MAC_VIA_QUADRA
,
461 .scsi_type
= MAC_SCSI_QUADRA
,
462 .scc_type
= MAC_SCC_QUADRA
,
463 .ether_type
= MAC_ETHER_SONIC
,
464 .nubus_type
= MAC_NUBUS
466 .ident
= MAC_MODEL_Q840
,
467 .name
= "Quadra 840AV",
468 .adb_type
= MAC_ADB_CUDA
,
469 .via_type
= MAC_VIA_QUADRA
,
470 .scsi_type
= MAC_SCSI_QUADRA3
,
471 .scc_type
= MAC_SCC_PSC
,
472 .ether_type
= MAC_ETHER_MACE
,
473 .nubus_type
= MAC_NUBUS
475 .ident
= MAC_MODEL_Q900
,
476 .name
= "Quadra 900",
477 .adb_type
= MAC_ADB_IOP
,
478 .via_type
= MAC_VIA_QUADRA
,
479 .scsi_type
= MAC_SCSI_QUADRA2
,
480 .scc_type
= MAC_SCC_IOP
,
481 .ether_type
= MAC_ETHER_SONIC
,
482 .nubus_type
= MAC_NUBUS
484 .ident
= MAC_MODEL_Q950
,
485 .name
= "Quadra 950",
486 .adb_type
= MAC_ADB_IOP
,
487 .via_type
= MAC_VIA_QUADRA
,
488 .scsi_type
= MAC_SCSI_QUADRA2
,
489 .scc_type
= MAC_SCC_IOP
,
490 .ether_type
= MAC_ETHER_SONIC
,
491 .nubus_type
= MAC_NUBUS
495 * Performa - more LC type machines
499 .ident
= MAC_MODEL_P460
,
500 .name
= "Performa 460",
501 .adb_type
= MAC_ADB_IISI
,
502 .via_type
= MAC_VIA_IIci
,
503 .scsi_type
= MAC_SCSI_OLD
,
504 .scc_type
= MAC_SCC_II
,
505 .nubus_type
= MAC_NUBUS
507 .ident
= MAC_MODEL_P475
,
508 .name
= "Performa 475",
509 .adb_type
= MAC_ADB_CUDA
,
510 .via_type
= MAC_VIA_QUADRA
,
511 .scsi_type
= MAC_SCSI_QUADRA
,
512 .scc_type
= MAC_SCC_II
,
513 .nubus_type
= MAC_NUBUS
515 .ident
= MAC_MODEL_P475F
,
516 .name
= "Performa 475",
517 .adb_type
= MAC_ADB_CUDA
,
518 .via_type
= MAC_VIA_QUADRA
,
519 .scsi_type
= MAC_SCSI_QUADRA
,
520 .scc_type
= MAC_SCC_II
,
521 .nubus_type
= MAC_NUBUS
523 .ident
= MAC_MODEL_P520
,
524 .name
= "Performa 520",
525 .adb_type
= MAC_ADB_CUDA
,
526 .via_type
= MAC_VIA_IIci
,
527 .scsi_type
= MAC_SCSI_OLD
,
528 .scc_type
= MAC_SCC_II
,
529 .nubus_type
= MAC_NUBUS
531 .ident
= MAC_MODEL_P550
,
532 .name
= "Performa 550",
533 .adb_type
= MAC_ADB_CUDA
,
534 .via_type
= MAC_VIA_IIci
,
535 .scsi_type
= MAC_SCSI_OLD
,
536 .scc_type
= MAC_SCC_II
,
537 .nubus_type
= MAC_NUBUS
539 /* These have the comm slot, and therefore the possibility of SONIC ethernet */
541 .ident
= MAC_MODEL_P575
,
542 .name
= "Performa 575",
543 .adb_type
= MAC_ADB_CUDA
,
544 .via_type
= MAC_VIA_QUADRA
,
545 .scsi_type
= MAC_SCSI_QUADRA
,
546 .scc_type
= MAC_SCC_II
,
547 .ether_type
= MAC_ETHER_SONIC
,
548 .nubus_type
= MAC_NUBUS
550 .ident
= MAC_MODEL_P588
,
551 .name
= "Performa 588",
552 .adb_type
= MAC_ADB_CUDA
,
553 .via_type
= MAC_VIA_QUADRA
,
554 .scsi_type
= MAC_SCSI_QUADRA
,
555 .ide_type
= MAC_IDE_QUADRA
,
556 .scc_type
= MAC_SCC_II
,
557 .ether_type
= MAC_ETHER_SONIC
,
558 .nubus_type
= MAC_NUBUS
560 .ident
= MAC_MODEL_TV
,
562 .adb_type
= MAC_ADB_CUDA
,
563 .via_type
= MAC_VIA_QUADRA
,
564 .scsi_type
= MAC_SCSI_OLD
,
565 .scc_type
= MAC_SCC_II
,
566 .nubus_type
= MAC_NUBUS
568 .ident
= MAC_MODEL_P600
,
569 .name
= "Performa 600",
570 .adb_type
= MAC_ADB_IISI
,
571 .via_type
= MAC_VIA_IIci
,
572 .scsi_type
= MAC_SCSI_OLD
,
573 .scc_type
= MAC_SCC_II
,
574 .nubus_type
= MAC_NUBUS
578 * Centris - just guessing again; maybe like Quadra
581 /* The C610 may or may not have SONIC. We probe to make sure */
583 .ident
= MAC_MODEL_C610
,
584 .name
= "Centris 610",
585 .adb_type
= MAC_ADB_II
,
586 .via_type
= MAC_VIA_QUADRA
,
587 .scsi_type
= MAC_SCSI_QUADRA
,
588 .scc_type
= MAC_SCC_QUADRA
,
589 .ether_type
= MAC_ETHER_SONIC
,
590 .nubus_type
= MAC_NUBUS
592 .ident
= MAC_MODEL_C650
,
593 .name
= "Centris 650",
594 .adb_type
= MAC_ADB_II
,
595 .via_type
= MAC_VIA_QUADRA
,
596 .scsi_type
= MAC_SCSI_QUADRA
,
597 .scc_type
= MAC_SCC_QUADRA
,
598 .ether_type
= MAC_ETHER_SONIC
,
599 .nubus_type
= MAC_NUBUS
601 .ident
= MAC_MODEL_C660
,
602 .name
= "Centris 660AV",
603 .adb_type
= MAC_ADB_CUDA
,
604 .via_type
= MAC_VIA_QUADRA
,
605 .scsi_type
= MAC_SCSI_QUADRA3
,
606 .scc_type
= MAC_SCC_PSC
,
607 .ether_type
= MAC_ETHER_MACE
,
608 .nubus_type
= MAC_NUBUS
612 * The PowerBooks all the same "Combo" custom IC for SCSI and SCC
613 * and a PMU (in two variations?) for ADB. Most of them use the
614 * Quadra-style VIAs. A few models also have IDE from hell.
618 .ident
= MAC_MODEL_PB140
,
619 .name
= "PowerBook 140",
620 .adb_type
= MAC_ADB_PB1
,
621 .via_type
= MAC_VIA_QUADRA
,
622 .scsi_type
= MAC_SCSI_OLD
,
623 .scc_type
= MAC_SCC_QUADRA
,
624 .nubus_type
= MAC_NUBUS
626 .ident
= MAC_MODEL_PB145
,
627 .name
= "PowerBook 145",
628 .adb_type
= MAC_ADB_PB1
,
629 .via_type
= MAC_VIA_QUADRA
,
630 .scsi_type
= MAC_SCSI_OLD
,
631 .scc_type
= MAC_SCC_QUADRA
,
632 .nubus_type
= MAC_NUBUS
634 .ident
= MAC_MODEL_PB150
,
635 .name
= "PowerBook 150",
636 .adb_type
= MAC_ADB_PB1
,
637 .via_type
= MAC_VIA_IIci
,
638 .scsi_type
= MAC_SCSI_OLD
,
639 .ide_type
= MAC_IDE_PB
,
640 .scc_type
= MAC_SCC_QUADRA
,
641 .nubus_type
= MAC_NUBUS
643 .ident
= MAC_MODEL_PB160
,
644 .name
= "PowerBook 160",
645 .adb_type
= MAC_ADB_PB1
,
646 .via_type
= MAC_VIA_QUADRA
,
647 .scsi_type
= MAC_SCSI_OLD
,
648 .scc_type
= MAC_SCC_QUADRA
,
649 .nubus_type
= MAC_NUBUS
651 .ident
= MAC_MODEL_PB165
,
652 .name
= "PowerBook 165",
653 .adb_type
= MAC_ADB_PB1
,
654 .via_type
= MAC_VIA_QUADRA
,
655 .scsi_type
= MAC_SCSI_OLD
,
656 .scc_type
= MAC_SCC_QUADRA
,
657 .nubus_type
= MAC_NUBUS
659 .ident
= MAC_MODEL_PB165C
,
660 .name
= "PowerBook 165c",
661 .adb_type
= MAC_ADB_PB1
,
662 .via_type
= MAC_VIA_QUADRA
,
663 .scsi_type
= MAC_SCSI_OLD
,
664 .scc_type
= MAC_SCC_QUADRA
,
665 .nubus_type
= MAC_NUBUS
667 .ident
= MAC_MODEL_PB170
,
668 .name
= "PowerBook 170",
669 .adb_type
= MAC_ADB_PB1
,
670 .via_type
= MAC_VIA_QUADRA
,
671 .scsi_type
= MAC_SCSI_OLD
,
672 .scc_type
= MAC_SCC_QUADRA
,
673 .nubus_type
= MAC_NUBUS
675 .ident
= MAC_MODEL_PB180
,
676 .name
= "PowerBook 180",
677 .adb_type
= MAC_ADB_PB1
,
678 .via_type
= MAC_VIA_QUADRA
,
679 .scsi_type
= MAC_SCSI_OLD
,
680 .scc_type
= MAC_SCC_QUADRA
,
681 .nubus_type
= MAC_NUBUS
683 .ident
= MAC_MODEL_PB180C
,
684 .name
= "PowerBook 180c",
685 .adb_type
= MAC_ADB_PB1
,
686 .via_type
= MAC_VIA_QUADRA
,
687 .scsi_type
= MAC_SCSI_OLD
,
688 .scc_type
= MAC_SCC_QUADRA
,
689 .nubus_type
= MAC_NUBUS
691 .ident
= MAC_MODEL_PB190
,
692 .name
= "PowerBook 190",
693 .adb_type
= MAC_ADB_PB2
,
694 .via_type
= MAC_VIA_QUADRA
,
695 .scsi_type
= MAC_SCSI_OLD
,
696 .ide_type
= MAC_IDE_BABOON
,
697 .scc_type
= MAC_SCC_QUADRA
,
698 .nubus_type
= MAC_NUBUS
700 .ident
= MAC_MODEL_PB520
,
701 .name
= "PowerBook 520",
702 .adb_type
= MAC_ADB_PB2
,
703 .via_type
= MAC_VIA_QUADRA
,
704 .scsi_type
= MAC_SCSI_OLD
,
705 .scc_type
= MAC_SCC_QUADRA
,
706 .ether_type
= MAC_ETHER_SONIC
,
707 .nubus_type
= MAC_NUBUS
711 * PowerBook Duos are pretty much like normal PowerBooks
712 * All of these probably have onboard SONIC in the Dock which
713 * means we'll have to probe for it eventually.
715 * Are these reallly MAC_VIA_IIci? The developer notes for the
716 * Duos show pretty much the same custom parts as in most of
717 * the other PowerBooks which would imply MAC_VIA_QUADRA.
721 .ident
= MAC_MODEL_PB210
,
722 .name
= "PowerBook Duo 210",
723 .adb_type
= MAC_ADB_PB2
,
724 .via_type
= MAC_VIA_IIci
,
725 .scsi_type
= MAC_SCSI_OLD
,
726 .scc_type
= MAC_SCC_QUADRA
,
727 .nubus_type
= MAC_NUBUS
729 .ident
= MAC_MODEL_PB230
,
730 .name
= "PowerBook Duo 230",
731 .adb_type
= MAC_ADB_PB2
,
732 .via_type
= MAC_VIA_IIci
,
733 .scsi_type
= MAC_SCSI_OLD
,
734 .scc_type
= MAC_SCC_QUADRA
,
735 .nubus_type
= MAC_NUBUS
737 .ident
= MAC_MODEL_PB250
,
738 .name
= "PowerBook Duo 250",
739 .adb_type
= MAC_ADB_PB2
,
740 .via_type
= MAC_VIA_IIci
,
741 .scsi_type
= MAC_SCSI_OLD
,
742 .scc_type
= MAC_SCC_QUADRA
,
743 .nubus_type
= MAC_NUBUS
745 .ident
= MAC_MODEL_PB270C
,
746 .name
= "PowerBook Duo 270c",
747 .adb_type
= MAC_ADB_PB2
,
748 .via_type
= MAC_VIA_IIci
,
749 .scsi_type
= MAC_SCSI_OLD
,
750 .scc_type
= MAC_SCC_QUADRA
,
751 .nubus_type
= MAC_NUBUS
753 .ident
= MAC_MODEL_PB280
,
754 .name
= "PowerBook Duo 280",
755 .adb_type
= MAC_ADB_PB2
,
756 .via_type
= MAC_VIA_IIci
,
757 .scsi_type
= MAC_SCSI_OLD
,
758 .scc_type
= MAC_SCC_QUADRA
,
759 .nubus_type
= MAC_NUBUS
761 .ident
= MAC_MODEL_PB280C
,
762 .name
= "PowerBook Duo 280c",
763 .adb_type
= MAC_ADB_PB2
,
764 .via_type
= MAC_VIA_IIci
,
765 .scsi_type
= MAC_SCSI_OLD
,
766 .scc_type
= MAC_SCC_QUADRA
,
767 .nubus_type
= MAC_NUBUS
778 void mac_identify(void)
782 /* Penguin data useful? */
783 int model
= mac_bi_data
.id
;
785 /* no bootinfo model id -> NetBSD booter was used! */
786 /* XXX FIXME: breaks for model > 31 */
787 model
=(mac_bi_data
.cpuid
>>2)&63;
788 printk (KERN_WARNING
"No bootinfo model ID, using cpuid instead (hey, use Penguin!)\n");
791 macintosh_config
= mac_data_table
;
792 for (m
= macintosh_config
; m
->ident
!= -1 ; m
++) {
793 if (m
->ident
== model
) {
794 macintosh_config
= m
;
799 /* We need to pre-init the IOPs, if any. Otherwise */
800 /* the serial console won't work if the user had */
801 /* the serial ports set to "Faster" mode in MacOS. */
806 printk (KERN_INFO
"Detected Macintosh model: %d \n", model
);
809 * Report booter data:
811 printk (KERN_DEBUG
" Penguin bootinfo data:\n");
812 printk (KERN_DEBUG
" Video: addr 0x%lx row 0x%lx depth %lx dimensions %ld x %ld\n",
813 mac_bi_data
.videoaddr
, mac_bi_data
.videorow
,
814 mac_bi_data
.videodepth
, mac_bi_data
.dimensions
& 0xFFFF,
815 mac_bi_data
.dimensions
>> 16);
816 printk (KERN_DEBUG
" Videological 0x%lx phys. 0x%lx, SCC at 0x%lx \n",
817 mac_bi_data
.videological
, mac_orig_videoaddr
,
818 mac_bi_data
.sccbase
);
819 printk (KERN_DEBUG
" Boottime: 0x%lx GMTBias: 0x%lx \n",
820 mac_bi_data
.boottime
, mac_bi_data
.gmtbias
);
821 printk (KERN_DEBUG
" Machine ID: %ld CPUid: 0x%lx memory size: 0x%lx \n",
822 mac_bi_data
.id
, mac_bi_data
.cpuid
, mac_bi_data
.memsize
);
824 printk ("Ramdisk: addr 0x%lx size 0x%lx\n",
825 m68k_ramdisk
.addr
, m68k_ramdisk
.size
);
829 * TODO: set the various fields in macintosh_config->hw_present here!
831 switch (macintosh_config
->scsi_type
) {
833 MACHW_SET(MAC_SCSI_80
);
835 case MAC_SCSI_QUADRA
:
836 case MAC_SCSI_QUADRA2
:
837 case MAC_SCSI_QUADRA3
:
838 MACHW_SET(MAC_SCSI_96
);
839 if ((macintosh_config
->ident
== MAC_MODEL_Q900
) ||
840 (macintosh_config
->ident
== MAC_MODEL_Q950
))
841 MACHW_SET(MAC_SCSI_96_2
);
844 printk(KERN_WARNING
"config.c: wtf: unknown scsi, using 53c80\n");
845 MACHW_SET(MAC_SCSI_80
);
856 void mac_report_hardware(void)
858 printk(KERN_INFO
"Apple Macintosh %s\n", macintosh_config
->name
);
861 static void mac_get_model(char *str
)
863 strcpy(str
,"Macintosh ");
864 strcat(str
, macintosh_config
->name
);