OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [m68k/] [mac/] [config.c] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
/*
2
 *  linux/arch/m68k/mac/config.c
3
 *
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
6
 * for more details.
7
 */
8
 
9
/*
10
 * Miscellaneous linux stuff
11
 */
12
 
13
#include <linux/module.h>
14
#include <linux/types.h>
15
#include <linux/mm.h>
16
#include <linux/tty.h>
17
#include <linux/console.h>
18
#include <linux/interrupt.h>
19
/* keyb */
20
#include <linux/random.h>
21
#include <linux/delay.h>
22
/* keyb */
23
#include <linux/init.h>
24
#include <linux/vt_kern.h>
25
 
26
#define BOOTINFO_COMPAT_1_0
27
#include <asm/setup.h>
28
#include <asm/bootinfo.h>
29
 
30
#include <asm/system.h>
31
#include <asm/io.h>
32
#include <asm/irq.h>
33
#include <asm/pgtable.h>
34
#include <asm/rtc.h>
35
#include <asm/machdep.h>
36
 
37
#include <asm/macintosh.h>
38
#include <asm/macints.h>
39
#include <asm/machw.h>
40
 
41
#include <asm/mac_iop.h>
42
#include <asm/mac_via.h>
43
#include <asm/mac_oss.h>
44
#include <asm/mac_psc.h>
45
 
46
/* Mac bootinfo struct */
47
 
48
struct mac_booter_data mac_bi_data;
49
int mac_bisize = sizeof mac_bi_data;
50
 
51
struct mac_hw_present mac_hw_present;
52
EXPORT_SYMBOL(mac_hw_present);
53
 
54
/* New m68k bootinfo stuff and videobase */
55
 
56
extern int m68k_num_memory;
57
extern struct mem_info m68k_memory[NUM_MEMINFO];
58
 
59
extern struct mem_info m68k_ramdisk;
60
 
61
extern char m68k_command_line[CL_SIZE];
62
 
63
void *mac_env;                                  /* Loaded by the boot asm */
64
 
65
/* The phys. video addr. - might be bogus on some machines */
66
unsigned long mac_orig_videoaddr;
67
 
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(irq_handler_t func);
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);
81
 
82
extern void mac_mksound(unsigned int, unsigned int);
83
 
84
extern void nubus_sweep_video(void);
85
 
86
static void mac_get_model(char *str);
87
 
88
static void __init mac_sched_init(irq_handler_t vector)
89
{
90
        via_init_clock(vector);
91
}
92
 
93
/*
94
 * Parse a Macintosh-specific record in the bootinfo
95
 */
96
 
97
int __init mac_parse_bootinfo(const struct bi_record *record)
98
{
99
        int unknown = 0;
100
        const u_long *data = record->data;
101
 
102
        switch (record->tag) {
103
        case BI_MAC_MODEL:
104
                mac_bi_data.id = *data;
105
                break;
106
        case BI_MAC_VADDR:
107
                mac_bi_data.videoaddr = *data;
108
                break;
109
        case BI_MAC_VDEPTH:
110
                mac_bi_data.videodepth = *data;
111
                break;
112
        case BI_MAC_VROW:
113
                mac_bi_data.videorow = *data;
114
                break;
115
        case BI_MAC_VDIM:
116
                mac_bi_data.dimensions = *data;
117
                break;
118
        case BI_MAC_VLOGICAL:
119
                mac_bi_data.videological = VIDEOMEMBASE + (*data & ~VIDEOMEMMASK);
120
                mac_orig_videoaddr = *data;
121
                break;
122
        case BI_MAC_SCCBASE:
123
                mac_bi_data.sccbase = *data;
124
                break;
125
        case BI_MAC_BTIME:
126
                mac_bi_data.boottime = *data;
127
                break;
128
        case BI_MAC_GMTBIAS:
129
                mac_bi_data.gmtbias = *data;
130
                break;
131
        case BI_MAC_MEMSIZE:
132
                mac_bi_data.memsize = *data;
133
                break;
134
        case BI_MAC_CPUID:
135
                mac_bi_data.cpuid = *data;
136
                break;
137
        case BI_MAC_ROMBASE:
138
                mac_bi_data.rombase = *data;
139
                break;
140
        default:
141
                unknown = 1;
142
                break;
143
        }
144
        return unknown;
145
}
146
 
147
/*
148
 * Flip into 24bit mode for an instant - flushes the L2 cache card. We
149
 * have to disable interrupts for this. Our IRQ handlers will crap
150
 * themselves if they take an IRQ in 24bit mode!
151
 */
152
 
153
static void mac_cache_card_flush(int writeback)
154
{
155
        unsigned long flags;
156
 
157
        local_irq_save(flags);
158
        via_flush_cache();
159
        local_irq_restore(flags);
160
}
161
 
162
void __init config_mac(void)
163
{
164
        if (!MACH_IS_MAC)
165
                printk(KERN_ERR "ERROR: no Mac, but config_mac() called!! \n");
166
 
167
        mach_sched_init = mac_sched_init;
168
        mach_init_IRQ = mac_init_IRQ;
169
        mach_get_model = mac_get_model;
170
        mach_gettimeoffset = mac_gettimeoffset;
171
#warning move to adb/via init
172
#if 0
173
        mach_hwclk = mac_hwclk;
174
#endif
175
        mach_set_clock_mmss = mac_set_clock_mmss;
176
        mach_reset = mac_reset;
177
        mach_halt = mac_poweroff;
178
        mach_power_off = mac_poweroff;
179
        mach_max_dma_address = 0xffffffff;
180
#if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE)
181
        mach_beep = mac_mksound;
182
#endif
183
#ifdef CONFIG_HEARTBEAT
184
#if 0
185
        mach_heartbeat = mac_heartbeat;
186
        mach_heartbeat_irq = IRQ_MAC_TIMER;
187
#endif
188
#endif
189
 
190
        /*
191
         * Determine hardware present
192
         */
193
 
194
        mac_identify();
195
        mac_report_hardware();
196
 
197
        /*
198
         * AFAIK only the IIci takes a cache card.  The IIfx has onboard
199
         * cache ... someone needs to figure out how to tell if it's on or
200
         * not.
201
         */
202
 
203
        if (macintosh_config->ident == MAC_MODEL_IICI
204
            || macintosh_config->ident == MAC_MODEL_IIFX)
205
                mach_l2_flush = mac_cache_card_flush;
206
 
207
        /*
208
         * Check for machine specific fixups.
209
         */
210
 
211
#ifdef OLD_NUBUS_CODE
212
        nubus_sweep_video();
213
#endif
214
}
215
 
216
 
217
/*
218
 *      Macintosh Table: hardcoded model configuration data.
219
 *
220
 *      Much of this was defined by Alan, based on who knows what docs.
221
 *      I've added a lot more, and some of that was pure guesswork based
222
 *      on hardware pages present on the Mac web site. Possibly wildly
223
 *      inaccurate, so look here if a new Mac model won't run. Example: if
224
 *      a Mac crashes immediately after the VIA1 registers have been dumped
225
 *      to the screen, it probably died attempting to read DirB on a RBV.
226
 *      Meaning it should have MAC_VIA_IIci here :-)
227
 */
228
 
229
struct mac_model *macintosh_config;
230
EXPORT_SYMBOL(macintosh_config);
231
 
232
static struct mac_model mac_data_table[] = {
233
        /*
234
         *      We'll pretend to be a Macintosh II, that's pretty safe.
235
         */
236
 
237
        {
238
                .ident          = MAC_MODEL_II,
239
                .name           = "Unknown",
240
                .adb_type       = MAC_ADB_II,
241
                .via_type       = MAC_VIA_II,
242
                .scsi_type      = MAC_SCSI_OLD,
243
                .scc_type       = MAC_SCC_II,
244
                .nubus_type     = MAC_NUBUS
245
        },
246
 
247
        /*
248
         *      Original MacII hardware
249
         *
250
         */
251
 
252
        {
253
                .ident          = MAC_MODEL_II,
254
                .name           = "II",
255
                .adb_type       = MAC_ADB_II,
256
                .via_type       = MAC_VIA_II,
257
                .scsi_type      = MAC_SCSI_OLD,
258
                .scc_type       = MAC_SCC_II,
259
                .nubus_type     = MAC_NUBUS
260
        }, {
261
                .ident          = MAC_MODEL_IIX,
262
                .name           = "IIx",
263
                .adb_type       = MAC_ADB_II,
264
                .via_type       = MAC_VIA_II,
265
                .scsi_type      = MAC_SCSI_OLD,
266
                .scc_type       = MAC_SCC_II,
267
                .nubus_type     = MAC_NUBUS
268
        }, {
269
                .ident          = MAC_MODEL_IICX,
270
                .name           = "IIcx",
271
                .adb_type       = MAC_ADB_II,
272
                .via_type       = MAC_VIA_II,
273
                .scsi_type      = MAC_SCSI_OLD,
274
                .scc_type       = MAC_SCC_II,
275
                .nubus_type     = MAC_NUBUS
276
        }, {
277
                .ident          = MAC_MODEL_SE30,
278
                .name           = "SE/30",
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
284
        },
285
 
286
        /*
287
         *      Weirdified MacII hardware - all subtly different. Gee thanks
288
         *      Apple. All these boxes seem to have VIA2 in a different place to
289
         *      the MacII (+1A000 rather than +4000)
290
         * CSA: see http://developer.apple.com/technotes/hw/hw_09.html
291
         */
292
 
293
        {
294
                .ident          = MAC_MODEL_IICI,
295
                .name           = "IIci",
296
                .adb_type       = MAC_ADB_II,
297
                .via_type       = MAC_VIA_IIci,
298
                .scsi_type      = MAC_SCSI_OLD,
299
                .scc_type       = MAC_SCC_II,
300
                .nubus_type     = MAC_NUBUS
301
        }, {
302
                .ident          = MAC_MODEL_IIFX,
303
                .name           = "IIfx",
304
                .adb_type       = MAC_ADB_IOP,
305
                .via_type       = MAC_VIA_IIci,
306
                .scsi_type      = MAC_SCSI_OLD,
307
                .scc_type       = MAC_SCC_IOP,
308
                .nubus_type     = MAC_NUBUS
309
        }, {
310
                .ident          = MAC_MODEL_IISI,
311
                .name           = "IIsi",
312
                .adb_type       = MAC_ADB_IISI,
313
                .via_type       = MAC_VIA_IIci,
314
                .scsi_type      = MAC_SCSI_OLD,
315
                .scc_type       = MAC_SCC_II,
316
                .nubus_type     = MAC_NUBUS
317
        }, {
318
                .ident          = MAC_MODEL_IIVI,
319
                .name           = "IIvi",
320
                .adb_type       = MAC_ADB_IISI,
321
                .via_type       = MAC_VIA_IIci,
322
                .scsi_type      = MAC_SCSI_OLD,
323
                .scc_type       = MAC_SCC_II,
324
                .nubus_type     = MAC_NUBUS
325
        }, {
326
                .ident          = MAC_MODEL_IIVX,
327
                .name           = "IIvx",
328
                .adb_type       = MAC_ADB_IISI,
329
                .via_type       = MAC_VIA_IIci,
330
                .scsi_type      = MAC_SCSI_OLD,
331
                .scc_type       = MAC_SCC_II,
332
                .nubus_type     = MAC_NUBUS
333
        },
334
 
335
        /*
336
         *      Classic models (guessing: similar to SE/30 ?? Nope, similar to LC ...)
337
         */
338
 
339
        {
340
                .ident          = MAC_MODEL_CLII,
341
                .name           = "Classic II",
342
                .adb_type       = MAC_ADB_IISI,
343
                .via_type       = MAC_VIA_IIci,
344
                .scsi_type      = MAC_SCSI_OLD,
345
                .scc_type       = MAC_SCC_II,
346
                .nubus_type     = MAC_NUBUS
347
        }, {
348
                .ident          = MAC_MODEL_CCL,
349
                .name           = "Color Classic",
350
                .adb_type       = MAC_ADB_CUDA,
351
                .via_type       = MAC_VIA_IIci,
352
                .scsi_type      = MAC_SCSI_OLD,
353
                .scc_type       = MAC_SCC_II,
354
                .nubus_type     = MAC_NUBUS},
355
 
356
        /*
357
         *      Some Mac LC machines. Basically the same as the IIci, ADB like IIsi
358
         */
359
 
360
        {
361
                .ident          = MAC_MODEL_LC,
362
                .name           = "LC",
363
                .adb_type       = MAC_ADB_IISI,
364
                .via_type       = MAC_VIA_IIci,
365
                .scsi_type      = MAC_SCSI_OLD,
366
                .scc_type       = MAC_SCC_II,
367
                .nubus_type     = MAC_NUBUS
368
        }, {
369
                .ident          = MAC_MODEL_LCII,
370
                .name           = "LC II",
371
                .adb_type       = MAC_ADB_IISI,
372
                .via_type       = MAC_VIA_IIci,
373
                .scsi_type      = MAC_SCSI_OLD,
374
                .scc_type       = MAC_SCC_II,
375
                .nubus_type     = MAC_NUBUS
376
        }, {
377
                .ident          = MAC_MODEL_LCIII,
378
                .name           = "LC III",
379
                .adb_type       = MAC_ADB_IISI,
380
                .via_type       = MAC_VIA_IIci,
381
                .scsi_type      = MAC_SCSI_OLD,
382
                .scc_type       = MAC_SCC_II,
383
                .nubus_type     = MAC_NUBUS
384
        },
385
 
386
        /*
387
         *      Quadra. Video is at 0xF9000000, via is like a MacII. We label it differently
388
         *      as some of the stuff connected to VIA2 seems different. Better SCSI chip and
389
         *      onboard ethernet using a NatSemi SONIC except the 660AV and 840AV which use an
390
         *      AMD 79C940 (MACE).
391
         *      The 700, 900 and 950 have some I/O chips in the wrong place to
392
         *      confuse us. The 840AV has a SCSI location of its own (same as
393
         *      the 660AV).
394
         */
395
 
396
        {
397
                .ident          = MAC_MODEL_Q605,
398
                .name           = "Quadra 605",
399
                .adb_type       = MAC_ADB_CUDA,
400
                .via_type       = MAC_VIA_QUADRA,
401
                .scsi_type      = MAC_SCSI_QUADRA,
402
                .scc_type       = MAC_SCC_QUADRA,
403
                .nubus_type     = MAC_NUBUS
404
        }, {
405
                .ident          = MAC_MODEL_Q605_ACC,
406
                .name           = "Quadra 605",
407
                .adb_type       = MAC_ADB_CUDA,
408
                .via_type       = MAC_VIA_QUADRA,
409
                .scsi_type      = MAC_SCSI_QUADRA,
410
                .scc_type       = MAC_SCC_QUADRA,
411
                .nubus_type     = MAC_NUBUS
412
        }, {
413
                .ident          = MAC_MODEL_Q610,
414
                .name           = "Quadra 610",
415
                .adb_type       = MAC_ADB_II,
416
                .via_type       = MAC_VIA_QUADRA,
417
                .scsi_type      = MAC_SCSI_QUADRA,
418
                .scc_type       = MAC_SCC_QUADRA,
419
                .ether_type     = MAC_ETHER_SONIC,
420
                .nubus_type     = MAC_NUBUS
421
        }, {
422
                .ident          = MAC_MODEL_Q630,
423
                .name           = "Quadra 630",
424
                .adb_type       = MAC_ADB_CUDA,
425
                .via_type       = MAC_VIA_QUADRA,
426
                .scsi_type      = MAC_SCSI_QUADRA,
427
                .ide_type       = MAC_IDE_QUADRA,
428
                .scc_type       = MAC_SCC_QUADRA,
429
                .ether_type     = MAC_ETHER_SONIC,
430
                .nubus_type     = MAC_NUBUS
431
        }, {
432
                .ident          = MAC_MODEL_Q650,
433
                .name           = "Quadra 650",
434
                .adb_type       = MAC_ADB_II,
435
                .via_type       = MAC_VIA_QUADRA,
436
                .scsi_type      = MAC_SCSI_QUADRA,
437
                .scc_type       = MAC_SCC_QUADRA,
438
                .ether_type     = MAC_ETHER_SONIC,
439
                .nubus_type     = MAC_NUBUS
440
        },
441
        /*      The Q700 does have a NS Sonic */
442
        {
443
                .ident          = MAC_MODEL_Q700,
444
                .name           = "Quadra 700",
445
                .adb_type       = MAC_ADB_II,
446
                .via_type       = MAC_VIA_QUADRA,
447
                .scsi_type      = MAC_SCSI_QUADRA2,
448
                .scc_type       = MAC_SCC_QUADRA,
449
                .ether_type     = MAC_ETHER_SONIC,
450
                .nubus_type     = MAC_NUBUS
451
        }, {
452
                .ident          = MAC_MODEL_Q800,
453
                .name           = "Quadra 800",
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
460
        }, {
461
                .ident          = MAC_MODEL_Q840,
462
                .name           = "Quadra 840AV",
463
                .adb_type       = MAC_ADB_CUDA,
464
                .via_type       = MAC_VIA_QUADRA,
465
                .scsi_type      = MAC_SCSI_QUADRA3,
466
                .scc_type       = MAC_SCC_PSC,
467
                .ether_type     = MAC_ETHER_MACE,
468
                .nubus_type     = MAC_NUBUS
469
        }, {
470
                .ident          = MAC_MODEL_Q900,
471
                .name           = "Quadra 900",
472
                .adb_type       = MAC_ADB_IOP,
473
                .via_type       = MAC_VIA_QUADRA,
474
                .scsi_type      = MAC_SCSI_QUADRA2,
475
                .scc_type       = MAC_SCC_IOP,
476
                .ether_type     = MAC_ETHER_SONIC,
477
                .nubus_type     = MAC_NUBUS
478
        }, {
479
                .ident          = MAC_MODEL_Q950,
480
                .name           = "Quadra 950",
481
                .adb_type       = MAC_ADB_IOP,
482
                .via_type       = MAC_VIA_QUADRA,
483
                .scsi_type      = MAC_SCSI_QUADRA2,
484
                .scc_type       = MAC_SCC_IOP,
485
                .ether_type     = MAC_ETHER_SONIC,
486
                .nubus_type     = MAC_NUBUS
487
        },
488
 
489
        /*
490
         *      Performa - more LC type machines
491
         */
492
 
493
        {
494
                .ident          = MAC_MODEL_P460,
495
                .name           =  "Performa 460",
496
                .adb_type       = MAC_ADB_IISI,
497
                .via_type       = MAC_VIA_IIci,
498
                .scsi_type      = MAC_SCSI_OLD,
499
                .scc_type       = MAC_SCC_II,
500
                .nubus_type     = MAC_NUBUS
501
        }, {
502
                .ident          = MAC_MODEL_P475,
503
                .name           =  "Performa 475",
504
                .adb_type       = MAC_ADB_CUDA,
505
                .via_type       = MAC_VIA_QUADRA,
506
                .scsi_type      = MAC_SCSI_QUADRA,
507
                .scc_type       = MAC_SCC_II,
508
                .nubus_type     = MAC_NUBUS
509
        }, {
510
                .ident          = MAC_MODEL_P475F,
511
                .name           =  "Performa 475",
512
                .adb_type       = MAC_ADB_CUDA,
513
                .via_type       = MAC_VIA_QUADRA,
514
                .scsi_type      = MAC_SCSI_QUADRA,
515
                .scc_type       = MAC_SCC_II,
516
                .nubus_type     = MAC_NUBUS
517
        }, {
518
                .ident          = MAC_MODEL_P520,
519
                .name           =  "Performa 520",
520
                .adb_type       = MAC_ADB_CUDA,
521
                .via_type       = MAC_VIA_IIci,
522
                .scsi_type      = MAC_SCSI_OLD,
523
                .scc_type       = MAC_SCC_II,
524
                .nubus_type     = MAC_NUBUS
525
        }, {
526
                .ident          = MAC_MODEL_P550,
527
                .name           =  "Performa 550",
528
                .adb_type       = MAC_ADB_CUDA,
529
                .via_type       = MAC_VIA_IIci,
530
                .scsi_type      = MAC_SCSI_OLD,
531
                .scc_type       = MAC_SCC_II,
532
                .nubus_type     = MAC_NUBUS
533
        },
534
        /* These have the comm slot, and therefore the possibility of SONIC ethernet */
535
        {
536
                .ident          = MAC_MODEL_P575,
537
                .name           = "Performa 575",
538
                .adb_type       = MAC_ADB_CUDA,
539
                .via_type       = MAC_VIA_QUADRA,
540
                .scsi_type      = MAC_SCSI_QUADRA,
541
                .scc_type       = MAC_SCC_II,
542
                .ether_type     = MAC_ETHER_SONIC,
543
                .nubus_type     = MAC_NUBUS
544
        }, {
545
                .ident          = MAC_MODEL_P588,
546
                .name           = "Performa 588",
547
                .adb_type       = MAC_ADB_CUDA,
548
                .via_type       = MAC_VIA_QUADRA,
549
                .scsi_type      = MAC_SCSI_QUADRA,
550
                .ide_type       = MAC_IDE_QUADRA,
551
                .scc_type       = MAC_SCC_II,
552
                .ether_type     = MAC_ETHER_SONIC,
553
                .nubus_type     = MAC_NUBUS
554
        }, {
555
                .ident          = MAC_MODEL_TV,
556
                .name           = "TV",
557
                .adb_type       = MAC_ADB_CUDA,
558
                .via_type       = MAC_VIA_QUADRA,
559
                .scsi_type      = MAC_SCSI_OLD,
560
                .scc_type       = MAC_SCC_II,
561
                .nubus_type     = MAC_NUBUS
562
        }, {
563
                .ident          = MAC_MODEL_P600,
564
                .name           = "Performa 600",
565
                .adb_type       = MAC_ADB_IISI,
566
                .via_type       = MAC_VIA_IIci,
567
                .scsi_type      = MAC_SCSI_OLD,
568
                .scc_type       = MAC_SCC_II,
569
                .nubus_type     = MAC_NUBUS
570
        },
571
 
572
        /*
573
         *      Centris - just guessing again; maybe like Quadra
574
         */
575
 
576
        /* The C610 may or may not have SONIC.  We probe to make sure */
577
        {
578
                .ident          = MAC_MODEL_C610,
579
                .name           = "Centris 610",
580
                .adb_type       = MAC_ADB_II,
581
                .via_type       = MAC_VIA_QUADRA,
582
                .scsi_type      = MAC_SCSI_QUADRA,
583
                .scc_type       = MAC_SCC_QUADRA,
584
                .ether_type     = MAC_ETHER_SONIC,
585
                .nubus_type     = MAC_NUBUS
586
        }, {
587
                .ident          = MAC_MODEL_C650,
588
                .name           = "Centris 650",
589
                .adb_type       = MAC_ADB_II,
590
                .via_type       = MAC_VIA_QUADRA,
591
                .scsi_type      = MAC_SCSI_QUADRA,
592
                .scc_type       = MAC_SCC_QUADRA,
593
                .ether_type     = MAC_ETHER_SONIC,
594
                .nubus_type     = MAC_NUBUS
595
        }, {
596
                .ident          = MAC_MODEL_C660,
597
                .name           = "Centris 660AV",
598
                .adb_type       = MAC_ADB_CUDA,
599
                .via_type       = MAC_VIA_QUADRA,
600
                .scsi_type      = MAC_SCSI_QUADRA3,
601
                .scc_type       = MAC_SCC_PSC,
602
                .ether_type     = MAC_ETHER_MACE,
603
                .nubus_type     = MAC_NUBUS
604
        },
605
 
606
        /*
607
         * The PowerBooks all the same "Combo" custom IC for SCSI and SCC
608
         * and a PMU (in two variations?) for ADB. Most of them use the
609
         * Quadra-style VIAs. A few models also have IDE from hell.
610
         */
611
 
612
        {
613
                .ident          = MAC_MODEL_PB140,
614
                .name           = "PowerBook 140",
615
                .adb_type       = MAC_ADB_PB1,
616
                .via_type       = MAC_VIA_QUADRA,
617
                .scsi_type      = MAC_SCSI_OLD,
618
                .scc_type       = MAC_SCC_QUADRA,
619
                .nubus_type     = MAC_NUBUS
620
        }, {
621
                .ident          = MAC_MODEL_PB145,
622
                .name           = "PowerBook 145",
623
                .adb_type       = MAC_ADB_PB1,
624
                .via_type       = MAC_VIA_QUADRA,
625
                .scsi_type      = MAC_SCSI_OLD,
626
                .scc_type       = MAC_SCC_QUADRA,
627
                .nubus_type     = MAC_NUBUS
628
        }, {
629
                .ident          = MAC_MODEL_PB150,
630
                .name           = "PowerBook 150",
631
                .adb_type       = MAC_ADB_PB1,
632
                .via_type       = MAC_VIA_IIci,
633
                .scsi_type      = MAC_SCSI_OLD,
634
                .ide_type       = MAC_IDE_PB,
635
                .scc_type       = MAC_SCC_QUADRA,
636
                .nubus_type     = MAC_NUBUS
637
        }, {
638
                .ident          = MAC_MODEL_PB160,
639
                .name           = "PowerBook 160",
640
                .adb_type       = MAC_ADB_PB1,
641
                .via_type       = MAC_VIA_QUADRA,
642
                .scsi_type      = MAC_SCSI_OLD,
643
                .scc_type       = MAC_SCC_QUADRA,
644
                .nubus_type     = MAC_NUBUS
645
        }, {
646
                .ident          = MAC_MODEL_PB165,
647
                .name           = "PowerBook 165",
648
                .adb_type       = MAC_ADB_PB1,
649
                .via_type       = MAC_VIA_QUADRA,
650
                .scsi_type      = MAC_SCSI_OLD,
651
                .scc_type       = MAC_SCC_QUADRA,
652
                .nubus_type     = MAC_NUBUS
653
        }, {
654
                .ident          = MAC_MODEL_PB165C,
655
                .name           = "PowerBook 165c",
656
                .adb_type       = MAC_ADB_PB1,
657
                .via_type       = MAC_VIA_QUADRA,
658
                .scsi_type      = MAC_SCSI_OLD,
659
                .scc_type       = MAC_SCC_QUADRA,
660
                .nubus_type     = MAC_NUBUS
661
        }, {
662
                .ident          = MAC_MODEL_PB170,
663
                .name           = "PowerBook 170",
664
                .adb_type       = MAC_ADB_PB1,
665
                .via_type       = MAC_VIA_QUADRA,
666
                .scsi_type      = MAC_SCSI_OLD,
667
                .scc_type       = MAC_SCC_QUADRA,
668
                .nubus_type     = MAC_NUBUS
669
        }, {
670
                .ident          = MAC_MODEL_PB180,
671
                .name           = "PowerBook 180",
672
                .adb_type       = MAC_ADB_PB1,
673
                .via_type       = MAC_VIA_QUADRA,
674
                .scsi_type      = MAC_SCSI_OLD,
675
                .scc_type       = MAC_SCC_QUADRA,
676
                .nubus_type     = MAC_NUBUS
677
        }, {
678
                .ident          = MAC_MODEL_PB180C,
679
                .name           = "PowerBook 180c",
680
                .adb_type       = MAC_ADB_PB1,
681
                .via_type       = MAC_VIA_QUADRA,
682
                .scsi_type      = MAC_SCSI_OLD,
683
                .scc_type       = MAC_SCC_QUADRA,
684
                .nubus_type     = MAC_NUBUS
685
        }, {
686
                .ident          = MAC_MODEL_PB190,
687
                .name           = "PowerBook 190",
688
                .adb_type       = MAC_ADB_PB2,
689
                .via_type       = MAC_VIA_QUADRA,
690
                .scsi_type      = MAC_SCSI_OLD,
691
                .ide_type       = MAC_IDE_BABOON,
692
                .scc_type       = MAC_SCC_QUADRA,
693
                .nubus_type     = MAC_NUBUS
694
        }, {
695
                .ident          = MAC_MODEL_PB520,
696
                .name           = "PowerBook 520",
697
                .adb_type       = MAC_ADB_PB2,
698
                .via_type       = MAC_VIA_QUADRA,
699
                .scsi_type      = MAC_SCSI_OLD,
700
                .scc_type       = MAC_SCC_QUADRA,
701
                .ether_type     = MAC_ETHER_SONIC,
702
                .nubus_type     = MAC_NUBUS
703
        },
704
 
705
        /*
706
         * PowerBook Duos are pretty much like normal PowerBooks
707
         * All of these probably have onboard SONIC in the Dock which
708
         * means we'll have to probe for it eventually.
709
         *
710
         * Are these really MAC_VIA_IIci? The developer notes for the
711
         * Duos show pretty much the same custom parts as in most of
712
         * the other PowerBooks which would imply MAC_VIA_QUADRA.
713
         */
714
 
715
        {
716
                .ident          = MAC_MODEL_PB210,
717
                .name           = "PowerBook Duo 210",
718
                .adb_type       = MAC_ADB_PB2,
719
                .via_type       = MAC_VIA_IIci,
720
                .scsi_type      = MAC_SCSI_OLD,
721
                .scc_type       = MAC_SCC_QUADRA,
722
                .nubus_type     = MAC_NUBUS
723
        }, {
724
                .ident          = MAC_MODEL_PB230,
725
                .name           = "PowerBook Duo 230",
726
                .adb_type       = MAC_ADB_PB2,
727
                .via_type       = MAC_VIA_IIci,
728
                .scsi_type      = MAC_SCSI_OLD,
729
                .scc_type       = MAC_SCC_QUADRA,
730
                .nubus_type     = MAC_NUBUS
731
        }, {
732
                .ident          = MAC_MODEL_PB250,
733
                .name           = "PowerBook Duo 250",
734
                .adb_type       = MAC_ADB_PB2,
735
                .via_type       = MAC_VIA_IIci,
736
                .scsi_type      = MAC_SCSI_OLD,
737
                .scc_type       = MAC_SCC_QUADRA,
738
                .nubus_type     = MAC_NUBUS
739
        }, {
740
                .ident          = MAC_MODEL_PB270C,
741
                .name           = "PowerBook Duo 270c",
742
                .adb_type       = MAC_ADB_PB2,
743
                .via_type       = MAC_VIA_IIci,
744
                .scsi_type      = MAC_SCSI_OLD,
745
                .scc_type       = MAC_SCC_QUADRA,
746
                .nubus_type     = MAC_NUBUS
747
        }, {
748
                .ident          = MAC_MODEL_PB280,
749
                .name           = "PowerBook Duo 280",
750
                .adb_type       = MAC_ADB_PB2,
751
                .via_type       = MAC_VIA_IIci,
752
                .scsi_type      = MAC_SCSI_OLD,
753
                .scc_type       = MAC_SCC_QUADRA,
754
                .nubus_type     = MAC_NUBUS
755
        }, {
756
                .ident          = MAC_MODEL_PB280C,
757
                .name           = "PowerBook Duo 280c",
758
                .adb_type       = MAC_ADB_PB2,
759
                .via_type       = MAC_VIA_IIci,
760
                .scsi_type      = MAC_SCSI_OLD,
761
                .scc_type       = MAC_SCC_QUADRA,
762
                .nubus_type     = MAC_NUBUS
763
        },
764
 
765
        /*
766
         *      Other stuff ??
767
         */
768
        {
769
                .ident          = -1
770
        }
771
};
772
 
773
void __init mac_identify(void)
774
{
775
        struct mac_model *m;
776
 
777
        /* Penguin data useful? */
778
        int model = mac_bi_data.id;
779
        if (!model) {
780
                /* no bootinfo model id -> NetBSD booter was used! */
781
                /* XXX FIXME: breaks for model > 31 */
782
                model = (mac_bi_data.cpuid >> 2) & 63;
783
                printk(KERN_WARNING "No bootinfo model ID, using cpuid instead (hey, use Penguin!)\n");
784
        }
785
 
786
        macintosh_config = mac_data_table;
787
        for (m = macintosh_config; m->ident != -1; m++) {
788
                if (m->ident == model) {
789
                        macintosh_config = m;
790
                        break;
791
                }
792
        }
793
 
794
        /* We need to pre-init the IOPs, if any. Otherwise */
795
        /* the serial console won't work if the user had   */
796
        /* the serial ports set to "Faster" mode in MacOS. */
797
 
798
        iop_preinit();
799
 
800
        printk(KERN_INFO "Detected Macintosh model: %d \n", model);
801
 
802
        /*
803
         * Report booter data:
804
         */
805
        printk(KERN_DEBUG " Penguin bootinfo data:\n");
806
        printk(KERN_DEBUG " Video: addr 0x%lx row 0x%lx depth %lx dimensions %ld x %ld\n",
807
                mac_bi_data.videoaddr, mac_bi_data.videorow,
808
                mac_bi_data.videodepth, mac_bi_data.dimensions & 0xFFFF,
809
                mac_bi_data.dimensions >> 16);
810
        printk(KERN_DEBUG " Videological 0x%lx phys. 0x%lx, SCC at 0x%lx \n",
811
                mac_bi_data.videological, mac_orig_videoaddr,
812
                mac_bi_data.sccbase);
813
        printk(KERN_DEBUG " Boottime: 0x%lx GMTBias: 0x%lx \n",
814
                mac_bi_data.boottime, mac_bi_data.gmtbias);
815
        printk(KERN_DEBUG " Machine ID: %ld CPUid: 0x%lx memory size: 0x%lx \n",
816
                mac_bi_data.id, mac_bi_data.cpuid, mac_bi_data.memsize);
817
#if 0
818
        printk("Ramdisk: addr 0x%lx size 0x%lx\n",
819
                m68k_ramdisk.addr, m68k_ramdisk.size);
820
#endif
821
 
822
        /*
823
         * TODO: set the various fields in macintosh_config->hw_present here!
824
         */
825
        switch (macintosh_config->scsi_type) {
826
        case MAC_SCSI_OLD:
827
                MACHW_SET(MAC_SCSI_80);
828
                break;
829
        case MAC_SCSI_QUADRA:
830
        case MAC_SCSI_QUADRA2:
831
        case MAC_SCSI_QUADRA3:
832
                MACHW_SET(MAC_SCSI_96);
833
                if ((macintosh_config->ident == MAC_MODEL_Q900) ||
834
                    (macintosh_config->ident == MAC_MODEL_Q950))
835
                        MACHW_SET(MAC_SCSI_96_2);
836
                break;
837
        default:
838
                printk(KERN_WARNING "config.c: wtf: unknown scsi, using 53c80\n");
839
                MACHW_SET(MAC_SCSI_80);
840
                break;
841
        }
842
 
843
        iop_init();
844
        via_init();
845
        oss_init();
846
        psc_init();
847
        baboon_init();
848
}
849
 
850
void __init mac_report_hardware(void)
851
{
852
        printk(KERN_INFO "Apple Macintosh %s\n", macintosh_config->name);
853
}
854
 
855
static void mac_get_model(char *str)
856
{
857
        strcpy(str, "Macintosh ");
858
        strcat(str, macintosh_config->name);
859
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.