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/config.h>
14 #include <linux/module.h>
15 #include <linux/types.h>
17 #include <linux/tty.h>
18 #include <linux/console.h>
19 #include <linux/interrupt.h>
21 #include <linux/random.h>
22 #include <linux/delay.h>
24 #include <linux/init.h>
25 #include <linux/vt_kern.h>
27 #define BOOTINFO_COMPAT_1_0
28 #include <asm/setup.h>
29 #include <asm/bootinfo.h>
31 #include <asm/system.h>
34 #include <asm/pgtable.h>
36 #include <asm/machdep.h>
38 #include <asm/macintosh.h>
39 #include <asm/macints.h>
40 #include <asm/machw.h>
42 #include <asm/mac_iop.h>
43 #include <asm/mac_via.h>
44 #include <asm/mac_oss.h>
45 #include <asm/mac_psc.h>
47 /* Mac bootinfo struct */
49 struct mac_booter_data mac_bi_data
;
50 int mac_bisize
= sizeof mac_bi_data
;
52 struct mac_hw_present mac_hw_present
;
54 /* New m68k bootinfo stuff and videobase */
56 extern int m68k_num_memory
;
57 extern struct mem_info m68k_memory
[NUM_MEMINFO
];
59 extern struct mem_info m68k_ramdisk
;
61 extern char m68k_command_line
[CL_SIZE
];
63 void *mac_env
; /* Loaded by the boot asm */
65 /* The phys. video addr. - might be bogus on some machines */
66 unsigned long mac_orig_videoaddr
;
68 /* Mac specific timer functions */
69 extern unsigned long mac_gettimeoffset (void);
70 extern int mac_hwclk (int, struct rtc_time
*);
71 extern int mac_set_clock_mmss (unsigned long);
72 extern int show_mac_interrupts(struct seq_file
*, void *);
73 extern void iop_preinit(void);
74 extern void iop_init(void);
75 extern void via_init(void);
76 extern void via_init_clock(irqreturn_t (*func
)(int, void *, struct pt_regs
*));
77 extern void via_flush_cache(void);
78 extern void oss_init(void);
79 extern void psc_init(void);
80 extern void baboon_init(void);
82 extern void mac_mksound(unsigned int, unsigned int);
84 extern void nubus_sweep_video(void);
86 /* Mac specific debug functions (in debug.c) */
87 extern void mac_debug_init(void);
88 extern void mac_debugging_long(int, long);
90 static void mac_get_model(char *str
);
92 void mac_bang(int irq
, void *vector
, struct pt_regs
*p
)
94 printk(KERN_INFO
"Resetting ...\n");
98 static void mac_sched_init(irqreturn_t (*vector
)(int, void *, struct pt_regs
*))
100 via_init_clock(vector
);
104 void mac_waitbut (void)
110 extern irqreturn_t
mac_default_handler(int, void *, struct pt_regs
*);
112 irqreturn_t (*mac_handlers
[8])(int, void *, struct pt_regs
*)=
125 * Parse a Macintosh-specific record in the bootinfo
128 int __init
mac_parse_bootinfo(const struct bi_record
*record
)
131 const u_long
*data
= record
->data
;
133 switch (record
->tag
) {
135 mac_bi_data
.id
= *data
;
138 mac_bi_data
.videoaddr
= *data
;
141 mac_bi_data
.videodepth
= *data
;
144 mac_bi_data
.videorow
= *data
;
147 mac_bi_data
.dimensions
= *data
;
149 case BI_MAC_VLOGICAL
:
150 mac_bi_data
.videological
= VIDEOMEMBASE
+ (*data
& ~VIDEOMEMMASK
);
151 mac_orig_videoaddr
= *data
;
154 mac_bi_data
.sccbase
= *data
;
157 mac_bi_data
.boottime
= *data
;
160 mac_bi_data
.gmtbias
= *data
;
163 mac_bi_data
.memsize
= *data
;
166 mac_bi_data
.cpuid
= *data
;
169 mac_bi_data
.rombase
= *data
;
178 * Flip into 24bit mode for an instant - flushes the L2 cache card. We
179 * have to disable interrupts for this. Our IRQ handlers will crap
180 * themselves if they take an IRQ in 24bit mode!
183 static void mac_cache_card_flush(int writeback
)
186 local_irq_save(flags
);
188 local_irq_restore(flags
);
191 void __init
config_mac(void)
194 printk(KERN_ERR
"ERROR: no Mac, but config_mac() called!! \n");
197 mach_sched_init
= mac_sched_init
;
198 mach_init_IRQ
= mac_init_IRQ
;
199 mach_request_irq
= mac_request_irq
;
200 mach_free_irq
= mac_free_irq
;
201 enable_irq
= mac_enable_irq
;
202 disable_irq
= mac_disable_irq
;
203 mach_get_model
= mac_get_model
;
204 mach_default_handler
= &mac_handlers
;
205 mach_get_irq_list
= show_mac_interrupts
;
206 mach_gettimeoffset
= mac_gettimeoffset
;
207 #warning move to adb/via init
209 mach_hwclk
= mac_hwclk
;
211 mach_set_clock_mmss
= mac_set_clock_mmss
;
212 mach_reset
= mac_reset
;
213 mach_halt
= mac_poweroff
;
214 mach_power_off
= mac_poweroff
;
215 mach_max_dma_address
= 0xffffffff;
217 mach_debug_init
= mac_debug_init
;
219 #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE)
220 mach_beep
= mac_mksound
;
222 #ifdef CONFIG_HEARTBEAT
224 mach_heartbeat
= mac_heartbeat
;
225 mach_heartbeat_irq
= IRQ_MAC_TIMER
;
230 * Determine hardware present
234 mac_report_hardware();
236 /* AFAIK only the IIci takes a cache card. The IIfx has onboard
237 cache ... someone needs to figure out how to tell if it's on or
240 if (macintosh_config
->ident
== MAC_MODEL_IICI
241 || macintosh_config
->ident
== MAC_MODEL_IIFX
) {
242 mach_l2_flush
= mac_cache_card_flush
;
246 * Check for machine specific fixups.
249 #ifdef OLD_NUBUS_CODE
256 * Macintosh Table: hardcoded model configuration data.
258 * Much of this was defined by Alan, based on who knows what docs.
259 * I've added a lot more, and some of that was pure guesswork based
260 * on hardware pages present on the Mac web site. Possibly wildly
261 * inaccurate, so look here if a new Mac model won't run. Example: if
262 * a Mac crashes immediately after the VIA1 registers have been dumped
263 * to the screen, it probably died attempting to read DirB on a RBV.
264 * Meaning it should have MAC_VIA_IIci here :-)
267 struct mac_model
*macintosh_config
;
268 EXPORT_SYMBOL(macintosh_config
);
270 static struct mac_model mac_data_table
[]=
273 * We'll pretend to be a Macintosh II, that's pretty safe.
277 .ident
= MAC_MODEL_II
,
279 .adb_type
= MAC_ADB_II
,
280 .via_type
= MAC_VIA_II
,
281 .scsi_type
= MAC_SCSI_OLD
,
282 .scc_type
= MAC_SCC_II
,
283 .nubus_type
= MAC_NUBUS
287 * Original MacII hardware
292 .ident
= MAC_MODEL_II
,
294 .adb_type
= MAC_ADB_II
,
295 .via_type
= MAC_VIA_II
,
296 .scsi_type
= MAC_SCSI_OLD
,
297 .scc_type
= MAC_SCC_II
,
298 .nubus_type
= MAC_NUBUS
300 .ident
= MAC_MODEL_IIX
,
302 .adb_type
= MAC_ADB_II
,
303 .via_type
= MAC_VIA_II
,
304 .scsi_type
= MAC_SCSI_OLD
,
305 .scc_type
= MAC_SCC_II
,
306 .nubus_type
= MAC_NUBUS
308 .ident
= MAC_MODEL_IICX
,
310 .adb_type
= MAC_ADB_II
,
311 .via_type
= MAC_VIA_II
,
312 .scsi_type
= MAC_SCSI_OLD
,
313 .scc_type
= MAC_SCC_II
,
314 .nubus_type
= MAC_NUBUS
316 .ident
= MAC_MODEL_SE30
,
318 .adb_type
= MAC_ADB_II
,
319 .via_type
= MAC_VIA_II
,
320 .scsi_type
= MAC_SCSI_OLD
,
321 .scc_type
= MAC_SCC_II
,
322 .nubus_type
= MAC_NUBUS
326 * Weirdified MacII hardware - all subtley different. Gee thanks
327 * Apple. All these boxes seem to have VIA2 in a different place to
328 * the MacII (+1A000 rather than +4000)
329 * CSA: see http://developer.apple.com/technotes/hw/hw_09.html
333 .ident
= MAC_MODEL_IICI
,
335 .adb_type
= MAC_ADB_II
,
336 .via_type
= MAC_VIA_IIci
,
337 .scsi_type
= MAC_SCSI_OLD
,
338 .scc_type
= MAC_SCC_II
,
339 .nubus_type
= MAC_NUBUS
341 .ident
= MAC_MODEL_IIFX
,
343 .adb_type
= MAC_ADB_IOP
,
344 .via_type
= MAC_VIA_IIci
,
345 .scsi_type
= MAC_SCSI_OLD
,
346 .scc_type
= MAC_SCC_IOP
,
347 .nubus_type
= MAC_NUBUS
349 .ident
= MAC_MODEL_IISI
,
351 .adb_type
= MAC_ADB_IISI
,
352 .via_type
= MAC_VIA_IIci
,
353 .scsi_type
= MAC_SCSI_OLD
,
354 .scc_type
= MAC_SCC_II
,
355 .nubus_type
= MAC_NUBUS
357 .ident
= MAC_MODEL_IIVI
,
359 .adb_type
= MAC_ADB_IISI
,
360 .via_type
= MAC_VIA_IIci
,
361 .scsi_type
= MAC_SCSI_OLD
,
362 .scc_type
= MAC_SCC_II
,
363 .nubus_type
= MAC_NUBUS
365 .ident
= MAC_MODEL_IIVX
,
367 .adb_type
= MAC_ADB_IISI
,
368 .via_type
= MAC_VIA_IIci
,
369 .scsi_type
= MAC_SCSI_OLD
,
370 .scc_type
= MAC_SCC_II
,
371 .nubus_type
= MAC_NUBUS
375 * Classic models (guessing: similar to SE/30 ?? Nope, similar to LC ...)
379 .ident
= MAC_MODEL_CLII
,
380 .name
= "Classic II",
381 .adb_type
= MAC_ADB_IISI
,
382 .via_type
= MAC_VIA_IIci
,
383 .scsi_type
= MAC_SCSI_OLD
,
384 .scc_type
= MAC_SCC_II
,
385 .nubus_type
= MAC_NUBUS
387 .ident
= MAC_MODEL_CCL
,
388 .name
= "Color Classic",
389 .adb_type
= MAC_ADB_CUDA
,
390 .via_type
= MAC_VIA_IIci
,
391 .scsi_type
= MAC_SCSI_OLD
,
392 .scc_type
= MAC_SCC_II
,
393 .nubus_type
= MAC_NUBUS
},
396 * Some Mac LC machines. Basically the same as the IIci, ADB like IIsi
400 .ident
= MAC_MODEL_LC
,
402 .adb_type
= MAC_ADB_IISI
,
403 .via_type
= MAC_VIA_IIci
,
404 .scsi_type
= MAC_SCSI_OLD
,
405 .scc_type
= MAC_SCC_II
,
406 .nubus_type
= MAC_NUBUS
408 .ident
= MAC_MODEL_LCII
,
410 .adb_type
= MAC_ADB_IISI
,
411 .via_type
= MAC_VIA_IIci
,
412 .scsi_type
= MAC_SCSI_OLD
,
413 .scc_type
= MAC_SCC_II
,
414 .nubus_type
= MAC_NUBUS
416 .ident
= MAC_MODEL_LCIII
,
418 .adb_type
= MAC_ADB_IISI
,
419 .via_type
= MAC_VIA_IIci
,
420 .scsi_type
= MAC_SCSI_OLD
,
421 .scc_type
= MAC_SCC_II
,
422 .nubus_type
= MAC_NUBUS
426 * Quadra. Video is at 0xF9000000, via is like a MacII. We label it differently
427 * as some of the stuff connected to VIA2 seems different. Better SCSI chip and
428 * onboard ethernet using a NatSemi SONIC except the 660AV and 840AV which use an
430 * The 700, 900 and 950 have some I/O chips in the wrong place to
431 * confuse us. The 840AV has a SCSI location of its own (same as
436 .ident
= MAC_MODEL_Q605
,
437 .name
= "Quadra 605",
438 .adb_type
= MAC_ADB_CUDA
,
439 .via_type
= MAC_VIA_QUADRA
,
440 .scsi_type
= MAC_SCSI_QUADRA
,
441 .scc_type
= MAC_SCC_QUADRA
,
442 .nubus_type
= MAC_NUBUS
444 .ident
= MAC_MODEL_Q605_ACC
,
445 .name
= "Quadra 605",
446 .adb_type
= MAC_ADB_CUDA
,
447 .via_type
= MAC_VIA_QUADRA
,
448 .scsi_type
= MAC_SCSI_QUADRA
,
449 .scc_type
= MAC_SCC_QUADRA
,
450 .nubus_type
= MAC_NUBUS
452 .ident
= MAC_MODEL_Q610
,
453 .name
= "Quadra 610",
454 .adb_type
= MAC_ADB_II
,
455 .via_type
= MAC_VIA_QUADRA
,
456 .scsi_type
= MAC_SCSI_QUADRA
,
457 .scc_type
= MAC_SCC_QUADRA
,
458 .ether_type
= MAC_ETHER_SONIC
,
459 .nubus_type
= MAC_NUBUS
461 .ident
= MAC_MODEL_Q630
,
462 .name
= "Quadra 630",
463 .adb_type
= MAC_ADB_CUDA
,
464 .via_type
= MAC_VIA_QUADRA
,
465 .scsi_type
= MAC_SCSI_QUADRA
,
466 .ide_type
= MAC_IDE_QUADRA
,
467 .scc_type
= MAC_SCC_QUADRA
,
468 .ether_type
= MAC_ETHER_SONIC
,
469 .nubus_type
= MAC_NUBUS
471 .ident
= MAC_MODEL_Q650
,
472 .name
= "Quadra 650",
473 .adb_type
= MAC_ADB_II
,
474 .via_type
= MAC_VIA_QUADRA
,
475 .scsi_type
= MAC_SCSI_QUADRA
,
476 .scc_type
= MAC_SCC_QUADRA
,
477 .ether_type
= MAC_ETHER_SONIC
,
478 .nubus_type
= MAC_NUBUS
480 /* The Q700 does have a NS Sonic */
482 .ident
= MAC_MODEL_Q700
,
483 .name
= "Quadra 700",
484 .adb_type
= MAC_ADB_II
,
485 .via_type
= MAC_VIA_QUADRA
,
486 .scsi_type
= MAC_SCSI_QUADRA2
,
487 .scc_type
= MAC_SCC_QUADRA
,
488 .ether_type
= MAC_ETHER_SONIC
,
489 .nubus_type
= MAC_NUBUS
491 .ident
= MAC_MODEL_Q800
,
492 .name
= "Quadra 800",
493 .adb_type
= MAC_ADB_II
,
494 .via_type
= MAC_VIA_QUADRA
,
495 .scsi_type
= MAC_SCSI_QUADRA
,
496 .scc_type
= MAC_SCC_QUADRA
,
497 .ether_type
= MAC_ETHER_SONIC
,
498 .nubus_type
= MAC_NUBUS
500 .ident
= MAC_MODEL_Q840
,
501 .name
= "Quadra 840AV",
502 .adb_type
= MAC_ADB_CUDA
,
503 .via_type
= MAC_VIA_QUADRA
,
504 .scsi_type
= MAC_SCSI_QUADRA3
,
505 .scc_type
= MAC_SCC_PSC
,
506 .ether_type
= MAC_ETHER_MACE
,
507 .nubus_type
= MAC_NUBUS
509 .ident
= MAC_MODEL_Q900
,
510 .name
= "Quadra 900",
511 .adb_type
= MAC_ADB_IOP
,
512 .via_type
= MAC_VIA_QUADRA
,
513 .scsi_type
= MAC_SCSI_QUADRA2
,
514 .scc_type
= MAC_SCC_IOP
,
515 .ether_type
= MAC_ETHER_SONIC
,
516 .nubus_type
= MAC_NUBUS
518 .ident
= MAC_MODEL_Q950
,
519 .name
= "Quadra 950",
520 .adb_type
= MAC_ADB_IOP
,
521 .via_type
= MAC_VIA_QUADRA
,
522 .scsi_type
= MAC_SCSI_QUADRA2
,
523 .scc_type
= MAC_SCC_IOP
,
524 .ether_type
= MAC_ETHER_SONIC
,
525 .nubus_type
= MAC_NUBUS
529 * Performa - more LC type machines
533 .ident
= MAC_MODEL_P460
,
534 .name
= "Performa 460",
535 .adb_type
= MAC_ADB_IISI
,
536 .via_type
= MAC_VIA_IIci
,
537 .scsi_type
= MAC_SCSI_OLD
,
538 .scc_type
= MAC_SCC_II
,
539 .nubus_type
= MAC_NUBUS
541 .ident
= MAC_MODEL_P475
,
542 .name
= "Performa 475",
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 .nubus_type
= MAC_NUBUS
549 .ident
= MAC_MODEL_P475F
,
550 .name
= "Performa 475",
551 .adb_type
= MAC_ADB_CUDA
,
552 .via_type
= MAC_VIA_QUADRA
,
553 .scsi_type
= MAC_SCSI_QUADRA
,
554 .scc_type
= MAC_SCC_II
,
555 .nubus_type
= MAC_NUBUS
557 .ident
= MAC_MODEL_P520
,
558 .name
= "Performa 520",
559 .adb_type
= MAC_ADB_CUDA
,
560 .via_type
= MAC_VIA_IIci
,
561 .scsi_type
= MAC_SCSI_OLD
,
562 .scc_type
= MAC_SCC_II
,
563 .nubus_type
= MAC_NUBUS
565 .ident
= MAC_MODEL_P550
,
566 .name
= "Performa 550",
567 .adb_type
= MAC_ADB_CUDA
,
568 .via_type
= MAC_VIA_IIci
,
569 .scsi_type
= MAC_SCSI_OLD
,
570 .scc_type
= MAC_SCC_II
,
571 .nubus_type
= MAC_NUBUS
573 /* These have the comm slot, and therefore the possibility of SONIC ethernet */
575 .ident
= MAC_MODEL_P575
,
576 .name
= "Performa 575",
577 .adb_type
= MAC_ADB_CUDA
,
578 .via_type
= MAC_VIA_QUADRA
,
579 .scsi_type
= MAC_SCSI_QUADRA
,
580 .scc_type
= MAC_SCC_II
,
581 .ether_type
= MAC_ETHER_SONIC
,
582 .nubus_type
= MAC_NUBUS
584 .ident
= MAC_MODEL_P588
,
585 .name
= "Performa 588",
586 .adb_type
= MAC_ADB_CUDA
,
587 .via_type
= MAC_VIA_QUADRA
,
588 .scsi_type
= MAC_SCSI_QUADRA
,
589 .ide_type
= MAC_IDE_QUADRA
,
590 .scc_type
= MAC_SCC_II
,
591 .ether_type
= MAC_ETHER_SONIC
,
592 .nubus_type
= MAC_NUBUS
594 .ident
= MAC_MODEL_TV
,
596 .adb_type
= MAC_ADB_CUDA
,
597 .via_type
= MAC_VIA_QUADRA
,
598 .scsi_type
= MAC_SCSI_OLD
,
599 .scc_type
= MAC_SCC_II
,
600 .nubus_type
= MAC_NUBUS
602 .ident
= MAC_MODEL_P600
,
603 .name
= "Performa 600",
604 .adb_type
= MAC_ADB_IISI
,
605 .via_type
= MAC_VIA_IIci
,
606 .scsi_type
= MAC_SCSI_OLD
,
607 .scc_type
= MAC_SCC_II
,
608 .nubus_type
= MAC_NUBUS
612 * Centris - just guessing again; maybe like Quadra
615 /* The C610 may or may not have SONIC. We probe to make sure */
617 .ident
= MAC_MODEL_C610
,
618 .name
= "Centris 610",
619 .adb_type
= MAC_ADB_II
,
620 .via_type
= MAC_VIA_QUADRA
,
621 .scsi_type
= MAC_SCSI_QUADRA
,
622 .scc_type
= MAC_SCC_QUADRA
,
623 .ether_type
= MAC_ETHER_SONIC
,
624 .nubus_type
= MAC_NUBUS
626 .ident
= MAC_MODEL_C650
,
627 .name
= "Centris 650",
628 .adb_type
= MAC_ADB_II
,
629 .via_type
= MAC_VIA_QUADRA
,
630 .scsi_type
= MAC_SCSI_QUADRA
,
631 .scc_type
= MAC_SCC_QUADRA
,
632 .ether_type
= MAC_ETHER_SONIC
,
633 .nubus_type
= MAC_NUBUS
635 .ident
= MAC_MODEL_C660
,
636 .name
= "Centris 660AV",
637 .adb_type
= MAC_ADB_CUDA
,
638 .via_type
= MAC_VIA_QUADRA
,
639 .scsi_type
= MAC_SCSI_QUADRA3
,
640 .scc_type
= MAC_SCC_PSC
,
641 .ether_type
= MAC_ETHER_MACE
,
642 .nubus_type
= MAC_NUBUS
646 * The PowerBooks all the same "Combo" custom IC for SCSI and SCC
647 * and a PMU (in two variations?) for ADB. Most of them use the
648 * Quadra-style VIAs. A few models also have IDE from hell.
652 .ident
= MAC_MODEL_PB140
,
653 .name
= "PowerBook 140",
654 .adb_type
= MAC_ADB_PB1
,
655 .via_type
= MAC_VIA_QUADRA
,
656 .scsi_type
= MAC_SCSI_OLD
,
657 .scc_type
= MAC_SCC_QUADRA
,
658 .nubus_type
= MAC_NUBUS
660 .ident
= MAC_MODEL_PB145
,
661 .name
= "PowerBook 145",
662 .adb_type
= MAC_ADB_PB1
,
663 .via_type
= MAC_VIA_QUADRA
,
664 .scsi_type
= MAC_SCSI_OLD
,
665 .scc_type
= MAC_SCC_QUADRA
,
666 .nubus_type
= MAC_NUBUS
668 .ident
= MAC_MODEL_PB150
,
669 .name
= "PowerBook 150",
670 .adb_type
= MAC_ADB_PB1
,
671 .via_type
= MAC_VIA_IIci
,
672 .scsi_type
= MAC_SCSI_OLD
,
673 .ide_type
= MAC_IDE_PB
,
674 .scc_type
= MAC_SCC_QUADRA
,
675 .nubus_type
= MAC_NUBUS
677 .ident
= MAC_MODEL_PB160
,
678 .name
= "PowerBook 160",
679 .adb_type
= MAC_ADB_PB1
,
680 .via_type
= MAC_VIA_QUADRA
,
681 .scsi_type
= MAC_SCSI_OLD
,
682 .scc_type
= MAC_SCC_QUADRA
,
683 .nubus_type
= MAC_NUBUS
685 .ident
= MAC_MODEL_PB165
,
686 .name
= "PowerBook 165",
687 .adb_type
= MAC_ADB_PB1
,
688 .via_type
= MAC_VIA_QUADRA
,
689 .scsi_type
= MAC_SCSI_OLD
,
690 .scc_type
= MAC_SCC_QUADRA
,
691 .nubus_type
= MAC_NUBUS
693 .ident
= MAC_MODEL_PB165C
,
694 .name
= "PowerBook 165c",
695 .adb_type
= MAC_ADB_PB1
,
696 .via_type
= MAC_VIA_QUADRA
,
697 .scsi_type
= MAC_SCSI_OLD
,
698 .scc_type
= MAC_SCC_QUADRA
,
699 .nubus_type
= MAC_NUBUS
701 .ident
= MAC_MODEL_PB170
,
702 .name
= "PowerBook 170",
703 .adb_type
= MAC_ADB_PB1
,
704 .via_type
= MAC_VIA_QUADRA
,
705 .scsi_type
= MAC_SCSI_OLD
,
706 .scc_type
= MAC_SCC_QUADRA
,
707 .nubus_type
= MAC_NUBUS
709 .ident
= MAC_MODEL_PB180
,
710 .name
= "PowerBook 180",
711 .adb_type
= MAC_ADB_PB1
,
712 .via_type
= MAC_VIA_QUADRA
,
713 .scsi_type
= MAC_SCSI_OLD
,
714 .scc_type
= MAC_SCC_QUADRA
,
715 .nubus_type
= MAC_NUBUS
717 .ident
= MAC_MODEL_PB180C
,
718 .name
= "PowerBook 180c",
719 .adb_type
= MAC_ADB_PB1
,
720 .via_type
= MAC_VIA_QUADRA
,
721 .scsi_type
= MAC_SCSI_OLD
,
722 .scc_type
= MAC_SCC_QUADRA
,
723 .nubus_type
= MAC_NUBUS
725 .ident
= MAC_MODEL_PB190
,
726 .name
= "PowerBook 190",
727 .adb_type
= MAC_ADB_PB2
,
728 .via_type
= MAC_VIA_QUADRA
,
729 .scsi_type
= MAC_SCSI_OLD
,
730 .ide_type
= MAC_IDE_BABOON
,
731 .scc_type
= MAC_SCC_QUADRA
,
732 .nubus_type
= MAC_NUBUS
734 .ident
= MAC_MODEL_PB520
,
735 .name
= "PowerBook 520",
736 .adb_type
= MAC_ADB_PB2
,
737 .via_type
= MAC_VIA_QUADRA
,
738 .scsi_type
= MAC_SCSI_OLD
,
739 .scc_type
= MAC_SCC_QUADRA
,
740 .ether_type
= MAC_ETHER_SONIC
,
741 .nubus_type
= MAC_NUBUS
745 * PowerBook Duos are pretty much like normal PowerBooks
746 * All of these probably have onboard SONIC in the Dock which
747 * means we'll have to probe for it eventually.
749 * Are these reallly MAC_VIA_IIci? The developer notes for the
750 * Duos show pretty much the same custom parts as in most of
751 * the other PowerBooks which would imply MAC_VIA_QUADRA.
755 .ident
= MAC_MODEL_PB210
,
756 .name
= "PowerBook Duo 210",
757 .adb_type
= MAC_ADB_PB2
,
758 .via_type
= MAC_VIA_IIci
,
759 .scsi_type
= MAC_SCSI_OLD
,
760 .scc_type
= MAC_SCC_QUADRA
,
761 .nubus_type
= MAC_NUBUS
763 .ident
= MAC_MODEL_PB230
,
764 .name
= "PowerBook Duo 230",
765 .adb_type
= MAC_ADB_PB2
,
766 .via_type
= MAC_VIA_IIci
,
767 .scsi_type
= MAC_SCSI_OLD
,
768 .scc_type
= MAC_SCC_QUADRA
,
769 .nubus_type
= MAC_NUBUS
771 .ident
= MAC_MODEL_PB250
,
772 .name
= "PowerBook Duo 250",
773 .adb_type
= MAC_ADB_PB2
,
774 .via_type
= MAC_VIA_IIci
,
775 .scsi_type
= MAC_SCSI_OLD
,
776 .scc_type
= MAC_SCC_QUADRA
,
777 .nubus_type
= MAC_NUBUS
779 .ident
= MAC_MODEL_PB270C
,
780 .name
= "PowerBook Duo 270c",
781 .adb_type
= MAC_ADB_PB2
,
782 .via_type
= MAC_VIA_IIci
,
783 .scsi_type
= MAC_SCSI_OLD
,
784 .scc_type
= MAC_SCC_QUADRA
,
785 .nubus_type
= MAC_NUBUS
787 .ident
= MAC_MODEL_PB280
,
788 .name
= "PowerBook Duo 280",
789 .adb_type
= MAC_ADB_PB2
,
790 .via_type
= MAC_VIA_IIci
,
791 .scsi_type
= MAC_SCSI_OLD
,
792 .scc_type
= MAC_SCC_QUADRA
,
793 .nubus_type
= MAC_NUBUS
795 .ident
= MAC_MODEL_PB280C
,
796 .name
= "PowerBook Duo 280c",
797 .adb_type
= MAC_ADB_PB2
,
798 .via_type
= MAC_VIA_IIci
,
799 .scsi_type
= MAC_SCSI_OLD
,
800 .scc_type
= MAC_SCC_QUADRA
,
801 .nubus_type
= MAC_NUBUS
812 void mac_identify(void)
816 /* Penguin data useful? */
817 int model
= mac_bi_data
.id
;
819 /* no bootinfo model id -> NetBSD booter was used! */
820 /* XXX FIXME: breaks for model > 31 */
821 model
=(mac_bi_data
.cpuid
>>2)&63;
822 printk (KERN_WARNING
"No bootinfo model ID, using cpuid instead (hey, use Penguin!)\n");
825 macintosh_config
= mac_data_table
;
826 for (m
= macintosh_config
; m
->ident
!= -1 ; m
++) {
827 if (m
->ident
== model
) {
828 macintosh_config
= m
;
833 /* We need to pre-init the IOPs, if any. Otherwise */
834 /* the serial console won't work if the user had */
835 /* the serial ports set to "Faster" mode in MacOS. */
840 printk (KERN_INFO
"Detected Macintosh model: %d \n", model
);
843 * Report booter data:
845 printk (KERN_DEBUG
" Penguin bootinfo data:\n");
846 printk (KERN_DEBUG
" Video: addr 0x%lx row 0x%lx depth %lx dimensions %ld x %ld\n",
847 mac_bi_data
.videoaddr
, mac_bi_data
.videorow
,
848 mac_bi_data
.videodepth
, mac_bi_data
.dimensions
& 0xFFFF,
849 mac_bi_data
.dimensions
>> 16);
850 printk (KERN_DEBUG
" Videological 0x%lx phys. 0x%lx, SCC at 0x%lx \n",
851 mac_bi_data
.videological
, mac_orig_videoaddr
,
852 mac_bi_data
.sccbase
);
853 printk (KERN_DEBUG
" Boottime: 0x%lx GMTBias: 0x%lx \n",
854 mac_bi_data
.boottime
, mac_bi_data
.gmtbias
);
855 printk (KERN_DEBUG
" Machine ID: %ld CPUid: 0x%lx memory size: 0x%lx \n",
856 mac_bi_data
.id
, mac_bi_data
.cpuid
, mac_bi_data
.memsize
);
858 printk ("Ramdisk: addr 0x%lx size 0x%lx\n",
859 m68k_ramdisk
.addr
, m68k_ramdisk
.size
);
863 * TODO: set the various fields in macintosh_config->hw_present here!
865 switch (macintosh_config
->scsi_type
) {
867 MACHW_SET(MAC_SCSI_80
);
869 case MAC_SCSI_QUADRA
:
870 case MAC_SCSI_QUADRA2
:
871 case MAC_SCSI_QUADRA3
:
872 MACHW_SET(MAC_SCSI_96
);
873 if ((macintosh_config
->ident
== MAC_MODEL_Q900
) ||
874 (macintosh_config
->ident
== MAC_MODEL_Q950
))
875 MACHW_SET(MAC_SCSI_96_2
);
878 printk(KERN_WARNING
"config.c: wtf: unknown scsi, using 53c80\n");
879 MACHW_SET(MAC_SCSI_80
);
890 void mac_report_hardware(void)
892 printk(KERN_INFO
"Apple Macintosh %s\n", macintosh_config
->name
);
895 static void mac_get_model(char *str
)
897 strcpy(str
,"Macintosh ");
898 strcat(str
, macintosh_config
->name
);