linux/arch/m68k/mac/config.c
<<
>>
Prefs
   1/*
   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/errno.h>
  14#include <linux/module.h>
  15#include <linux/reboot.h>
  16#include <linux/types.h>
  17#include <linux/mm.h>
  18#include <linux/tty.h>
  19#include <linux/console.h>
  20#include <linux/interrupt.h>
  21/* keyb */
  22#include <linux/random.h>
  23#include <linux/delay.h>
  24/* keyb */
  25#include <linux/init.h>
  26#include <linux/vt_kern.h>
  27#include <linux/platform_device.h>
  28#include <linux/ata_platform.h>
  29#include <linux/adb.h>
  30#include <linux/cuda.h>
  31#include <linux/pmu.h>
  32#include <linux/rtc.h>
  33
  34#include <asm/setup.h>
  35#include <asm/bootinfo.h>
  36#include <asm/bootinfo-mac.h>
  37#include <asm/byteorder.h>
  38
  39#include <asm/io.h>
  40#include <asm/irq.h>
  41#include <asm/machdep.h>
  42
  43#include <asm/macintosh.h>
  44#include <asm/macints.h>
  45#include <asm/machw.h>
  46
  47#include <asm/mac_iop.h>
  48#include <asm/mac_via.h>
  49#include <asm/mac_oss.h>
  50#include <asm/mac_psc.h>
  51#include <asm/config.h>
  52
  53/* Mac bootinfo struct */
  54struct mac_booter_data mac_bi_data;
  55
  56/* The phys. video addr. - might be bogus on some machines */
  57static unsigned long mac_orig_videoaddr;
  58
  59extern int mac_hwclk(int, struct rtc_time *);
  60extern void iop_init(void);
  61extern void via_init(void);
  62extern void via_init_clock(void);
  63extern void oss_init(void);
  64extern void psc_init(void);
  65extern void baboon_init(void);
  66
  67extern void mac_mksound(unsigned int, unsigned int);
  68
  69static void mac_get_model(char *str);
  70static void mac_identify(void);
  71static void mac_report_hardware(void);
  72
  73static void __init mac_sched_init(void)
  74{
  75        via_init_clock();
  76}
  77
  78/*
  79 * Parse a Macintosh-specific record in the bootinfo
  80 */
  81
  82int __init mac_parse_bootinfo(const struct bi_record *record)
  83{
  84        int unknown = 0;
  85        const void *data = record->data;
  86
  87        switch (be16_to_cpu(record->tag)) {
  88        case BI_MAC_MODEL:
  89                mac_bi_data.id = be32_to_cpup(data);
  90                break;
  91        case BI_MAC_VADDR:
  92                mac_bi_data.videoaddr = be32_to_cpup(data);
  93                break;
  94        case BI_MAC_VDEPTH:
  95                mac_bi_data.videodepth = be32_to_cpup(data);
  96                break;
  97        case BI_MAC_VROW:
  98                mac_bi_data.videorow = be32_to_cpup(data);
  99                break;
 100        case BI_MAC_VDIM:
 101                mac_bi_data.dimensions = be32_to_cpup(data);
 102                break;
 103        case BI_MAC_VLOGICAL:
 104                mac_orig_videoaddr = be32_to_cpup(data);
 105                mac_bi_data.videological =
 106                        VIDEOMEMBASE + (mac_orig_videoaddr & ~VIDEOMEMMASK);
 107                break;
 108        case BI_MAC_SCCBASE:
 109                mac_bi_data.sccbase = be32_to_cpup(data);
 110                break;
 111        case BI_MAC_BTIME:
 112                mac_bi_data.boottime = be32_to_cpup(data);
 113                break;
 114        case BI_MAC_GMTBIAS:
 115                mac_bi_data.gmtbias = be32_to_cpup(data);
 116                break;
 117        case BI_MAC_MEMSIZE:
 118                mac_bi_data.memsize = be32_to_cpup(data);
 119                break;
 120        case BI_MAC_CPUID:
 121                mac_bi_data.cpuid = be32_to_cpup(data);
 122                break;
 123        case BI_MAC_ROMBASE:
 124                mac_bi_data.rombase = be32_to_cpup(data);
 125                break;
 126        default:
 127                unknown = 1;
 128                break;
 129        }
 130        return unknown;
 131}
 132
 133void __init config_mac(void)
 134{
 135        if (!MACH_IS_MAC)
 136                pr_err("ERROR: no Mac, but config_mac() called!!\n");
 137
 138        mach_sched_init = mac_sched_init;
 139        mach_init_IRQ = mac_init_IRQ;
 140        mach_get_model = mac_get_model;
 141        mach_hwclk = mac_hwclk;
 142        mach_reset = mac_reset;
 143        mach_halt = mac_poweroff;
 144#if IS_ENABLED(CONFIG_INPUT_M68K_BEEP)
 145        mach_beep = mac_mksound;
 146#endif
 147
 148        /*
 149         * Determine hardware present
 150         */
 151
 152        mac_identify();
 153        mac_report_hardware();
 154
 155        /*
 156         * AFAIK only the IIci takes a cache card.  The IIfx has onboard
 157         * cache ... someone needs to figure out how to tell if it's on or
 158         * not.
 159         */
 160
 161        if (macintosh_config->ident == MAC_MODEL_IICI)
 162                mach_l2_flush = via_l2_flush;
 163
 164        register_platform_power_off(mac_poweroff);
 165}
 166
 167
 168/*
 169 * Macintosh Table: hardcoded model configuration data.
 170 *
 171 * Much of this was defined by Alan, based on who knows what docs.
 172 * I've added a lot more, and some of that was pure guesswork based
 173 * on hardware pages present on the Mac web site. Possibly wildly
 174 * inaccurate, so look here if a new Mac model won't run. Example: if
 175 * a Mac crashes immediately after the VIA1 registers have been dumped
 176 * to the screen, it probably died attempting to read DirB on a RBV.
 177 * Meaning it should have MAC_VIA_IICI here :-)
 178 */
 179
 180struct mac_model *macintosh_config;
 181EXPORT_SYMBOL(macintosh_config);
 182
 183static struct mac_model mac_data_table[] = {
 184        /*
 185         * We'll pretend to be a Macintosh II, that's pretty safe.
 186         */
 187
 188        {
 189                .ident          = MAC_MODEL_II,
 190                .name           = "Unknown",
 191                .adb_type       = MAC_ADB_II,
 192                .via_type       = MAC_VIA_II,
 193                .scsi_type      = MAC_SCSI_OLD,
 194                .scc_type       = MAC_SCC_II,
 195                .expansion_type = MAC_EXP_NUBUS,
 196                .floppy_type    = MAC_FLOPPY_UNSUPPORTED, /* IWM */
 197        },
 198
 199        /*
 200         * Original Mac II hardware
 201         */
 202
 203        {
 204                .ident          = MAC_MODEL_II,
 205                .name           = "II",
 206                .adb_type       = MAC_ADB_II,
 207                .via_type       = MAC_VIA_II,
 208                .scsi_type      = MAC_SCSI_OLD,
 209                .scc_type       = MAC_SCC_II,
 210                .expansion_type = MAC_EXP_NUBUS,
 211                .floppy_type    = MAC_FLOPPY_UNSUPPORTED, /* IWM */
 212        }, {
 213                .ident          = MAC_MODEL_IIX,
 214                .name           = "IIx",
 215                .adb_type       = MAC_ADB_II,
 216                .via_type       = MAC_VIA_II,
 217                .scsi_type      = MAC_SCSI_OLD,
 218                .scc_type       = MAC_SCC_II,
 219                .expansion_type = MAC_EXP_NUBUS,
 220                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 221        }, {
 222                .ident          = MAC_MODEL_IICX,
 223                .name           = "IIcx",
 224                .adb_type       = MAC_ADB_II,
 225                .via_type       = MAC_VIA_II,
 226                .scsi_type      = MAC_SCSI_OLD,
 227                .scc_type       = MAC_SCC_II,
 228                .expansion_type = MAC_EXP_NUBUS,
 229                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 230        }, {
 231                .ident          = MAC_MODEL_SE30,
 232                .name           = "SE/30",
 233                .adb_type       = MAC_ADB_II,
 234                .via_type       = MAC_VIA_II,
 235                .scsi_type      = MAC_SCSI_OLD,
 236                .scc_type       = MAC_SCC_II,
 237                .expansion_type = MAC_EXP_PDS,
 238                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 239        },
 240
 241        /*
 242         * Weirdified Mac II hardware - all subtly different. Gee thanks
 243         * Apple. All these boxes seem to have VIA2 in a different place to
 244         * the Mac II (+1A000 rather than +4000)
 245         * CSA: see http://developer.apple.com/technotes/hw/hw_09.html
 246         */
 247
 248        {
 249                .ident          = MAC_MODEL_IICI,
 250                .name           = "IIci",
 251                .adb_type       = MAC_ADB_II,
 252                .via_type       = MAC_VIA_IICI,
 253                .scsi_type      = MAC_SCSI_OLD,
 254                .scc_type       = MAC_SCC_II,
 255                .expansion_type = MAC_EXP_NUBUS,
 256                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 257        }, {
 258                .ident          = MAC_MODEL_IIFX,
 259                .name           = "IIfx",
 260                .adb_type       = MAC_ADB_IOP,
 261                .via_type       = MAC_VIA_IICI,
 262                .scsi_type      = MAC_SCSI_IIFX,
 263                .scc_type       = MAC_SCC_IOP,
 264                .expansion_type = MAC_EXP_PDS_NUBUS,
 265                .floppy_type    = MAC_FLOPPY_SWIM_IOP, /* SWIM */
 266        }, {
 267                .ident          = MAC_MODEL_IISI,
 268                .name           = "IIsi",
 269                .adb_type       = MAC_ADB_EGRET,
 270                .via_type       = MAC_VIA_IICI,
 271                .scsi_type      = MAC_SCSI_OLD,
 272                .scc_type       = MAC_SCC_II,
 273                .expansion_type = MAC_EXP_PDS_NUBUS,
 274                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 275        }, {
 276                .ident          = MAC_MODEL_IIVI,
 277                .name           = "IIvi",
 278                .adb_type       = MAC_ADB_EGRET,
 279                .via_type       = MAC_VIA_IICI,
 280                .scsi_type      = MAC_SCSI_LC,
 281                .scc_type       = MAC_SCC_II,
 282                .expansion_type = MAC_EXP_NUBUS,
 283                .floppy_type    = MAC_FLOPPY_LC, /* SWIM */
 284        }, {
 285                .ident          = MAC_MODEL_IIVX,
 286                .name           = "IIvx",
 287                .adb_type       = MAC_ADB_EGRET,
 288                .via_type       = MAC_VIA_IICI,
 289                .scsi_type      = MAC_SCSI_LC,
 290                .scc_type       = MAC_SCC_II,
 291                .expansion_type = MAC_EXP_NUBUS,
 292                .floppy_type    = MAC_FLOPPY_LC, /* SWIM */
 293        },
 294
 295        /*
 296         * Classic models (guessing: similar to SE/30? Nope, similar to LC...)
 297         */
 298
 299        {
 300                .ident          = MAC_MODEL_CLII,
 301                .name           = "Classic II",
 302                .adb_type       = MAC_ADB_EGRET,
 303                .via_type       = MAC_VIA_IICI,
 304                .scsi_type      = MAC_SCSI_LC,
 305                .scc_type       = MAC_SCC_II,
 306                .floppy_type    = MAC_FLOPPY_LC, /* SWIM */
 307        }, {
 308                .ident          = MAC_MODEL_CCL,
 309                .name           = "Color Classic",
 310                .adb_type       = MAC_ADB_CUDA,
 311                .via_type       = MAC_VIA_IICI,
 312                .scsi_type      = MAC_SCSI_LC,
 313                .scc_type       = MAC_SCC_II,
 314                .expansion_type = MAC_EXP_PDS,
 315                .floppy_type    = MAC_FLOPPY_LC, /* SWIM 2 */
 316        }, {
 317                .ident          = MAC_MODEL_CCLII,
 318                .name           = "Color Classic II",
 319                .adb_type       = MAC_ADB_CUDA,
 320                .via_type       = MAC_VIA_IICI,
 321                .scsi_type      = MAC_SCSI_LC,
 322                .scc_type       = MAC_SCC_II,
 323                .expansion_type = MAC_EXP_PDS,
 324                .floppy_type    = MAC_FLOPPY_LC, /* SWIM 2 */
 325        },
 326
 327        /*
 328         * Some Mac LC machines. Basically the same as the IIci, ADB like IIsi
 329         */
 330
 331        {
 332                .ident          = MAC_MODEL_LC,
 333                .name           = "LC",
 334                .adb_type       = MAC_ADB_EGRET,
 335                .via_type       = MAC_VIA_IICI,
 336                .scsi_type      = MAC_SCSI_LC,
 337                .scc_type       = MAC_SCC_II,
 338                .expansion_type = MAC_EXP_PDS,
 339                .floppy_type    = MAC_FLOPPY_LC, /* SWIM */
 340        }, {
 341                .ident          = MAC_MODEL_LCII,
 342                .name           = "LC II",
 343                .adb_type       = MAC_ADB_EGRET,
 344                .via_type       = MAC_VIA_IICI,
 345                .scsi_type      = MAC_SCSI_LC,
 346                .scc_type       = MAC_SCC_II,
 347                .expansion_type = MAC_EXP_PDS,
 348                .floppy_type    = MAC_FLOPPY_LC, /* SWIM */
 349        }, {
 350                .ident          = MAC_MODEL_LCIII,
 351                .name           = "LC III",
 352                .adb_type       = MAC_ADB_EGRET,
 353                .via_type       = MAC_VIA_IICI,
 354                .scsi_type      = MAC_SCSI_LC,
 355                .scc_type       = MAC_SCC_II,
 356                .expansion_type = MAC_EXP_PDS,
 357                .floppy_type    = MAC_FLOPPY_LC, /* SWIM 2 */
 358        },
 359
 360        /*
 361         * Quadra. Video is at 0xF9000000, via is like a MacII. We label it
 362         * differently as some of the stuff connected to VIA2 seems different.
 363         * Better SCSI chip and onboard ethernet using a NatSemi SONIC except
 364         * the 660AV and 840AV which use an AMD 79C940 (MACE).
 365         * The 700, 900 and 950 have some I/O chips in the wrong place to
 366         * confuse us. The 840AV has a SCSI location of its own (same as
 367         * the 660AV).
 368         */
 369
 370        {
 371                .ident          = MAC_MODEL_Q605,
 372                .name           = "Quadra 605",
 373                .adb_type       = MAC_ADB_CUDA,
 374                .via_type       = MAC_VIA_QUADRA,
 375                .scsi_type      = MAC_SCSI_QUADRA,
 376                .scc_type       = MAC_SCC_QUADRA,
 377                .expansion_type = MAC_EXP_PDS,
 378                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM 2 */
 379        }, {
 380                .ident          = MAC_MODEL_Q605_ACC,
 381                .name           = "Quadra 605",
 382                .adb_type       = MAC_ADB_CUDA,
 383                .via_type       = MAC_VIA_QUADRA,
 384                .scsi_type      = MAC_SCSI_QUADRA,
 385                .scc_type       = MAC_SCC_QUADRA,
 386                .expansion_type = MAC_EXP_PDS,
 387                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM 2 */
 388        }, {
 389                .ident          = MAC_MODEL_Q610,
 390                .name           = "Quadra 610",
 391                .adb_type       = MAC_ADB_II,
 392                .via_type       = MAC_VIA_QUADRA,
 393                .scsi_type      = MAC_SCSI_QUADRA,
 394                .scc_type       = MAC_SCC_QUADRA,
 395                .ether_type     = MAC_ETHER_SONIC,
 396                .expansion_type = MAC_EXP_PDS_NUBUS,
 397                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM 2 */
 398        }, {
 399                .ident          = MAC_MODEL_Q630,
 400                .name           = "Quadra 630",
 401                .adb_type       = MAC_ADB_CUDA,
 402                .via_type       = MAC_VIA_QUADRA,
 403                .scsi_type      = MAC_SCSI_QUADRA,
 404                .ide_type       = MAC_IDE_QUADRA,
 405                .scc_type       = MAC_SCC_QUADRA,
 406                .expansion_type = MAC_EXP_PDS_COMM,
 407                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM 2 */
 408        }, {
 409                .ident          = MAC_MODEL_Q650,
 410                .name           = "Quadra 650",
 411                .adb_type       = MAC_ADB_II,
 412                .via_type       = MAC_VIA_QUADRA,
 413                .scsi_type      = MAC_SCSI_QUADRA,
 414                .scc_type       = MAC_SCC_QUADRA,
 415                .ether_type     = MAC_ETHER_SONIC,
 416                .expansion_type = MAC_EXP_PDS_NUBUS,
 417                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM 2 */
 418        },
 419        /* The Q700 does have a NS Sonic */
 420        {
 421                .ident          = MAC_MODEL_Q700,
 422                .name           = "Quadra 700",
 423                .adb_type       = MAC_ADB_II,
 424                .via_type       = MAC_VIA_QUADRA,
 425                .scsi_type      = MAC_SCSI_QUADRA2,
 426                .scc_type       = MAC_SCC_QUADRA,
 427                .ether_type     = MAC_ETHER_SONIC,
 428                .expansion_type = MAC_EXP_PDS_NUBUS,
 429                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM */
 430        }, {
 431                .ident          = MAC_MODEL_Q800,
 432                .name           = "Quadra 800",
 433                .adb_type       = MAC_ADB_II,
 434                .via_type       = MAC_VIA_QUADRA,
 435                .scsi_type      = MAC_SCSI_QUADRA,
 436                .scc_type       = MAC_SCC_QUADRA,
 437                .ether_type     = MAC_ETHER_SONIC,
 438                .expansion_type = MAC_EXP_PDS_NUBUS,
 439                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM 2 */
 440        }, {
 441                .ident          = MAC_MODEL_Q840,
 442                .name           = "Quadra 840AV",
 443                .adb_type       = MAC_ADB_CUDA,
 444                .via_type       = MAC_VIA_QUADRA,
 445                .scsi_type      = MAC_SCSI_QUADRA3,
 446                .scc_type       = MAC_SCC_PSC,
 447                .ether_type     = MAC_ETHER_MACE,
 448                .expansion_type = MAC_EXP_NUBUS,
 449                .floppy_type    = MAC_FLOPPY_UNSUPPORTED, /* New Age */
 450        }, {
 451                .ident          = MAC_MODEL_Q900,
 452                .name           = "Quadra 900",
 453                .adb_type       = MAC_ADB_IOP,
 454                .via_type       = MAC_VIA_QUADRA,
 455                .scsi_type      = MAC_SCSI_QUADRA2,
 456                .scc_type       = MAC_SCC_IOP,
 457                .ether_type     = MAC_ETHER_SONIC,
 458                .expansion_type = MAC_EXP_PDS_NUBUS,
 459                .floppy_type    = MAC_FLOPPY_SWIM_IOP, /* SWIM */
 460        }, {
 461                .ident          = MAC_MODEL_Q950,
 462                .name           = "Quadra 950",
 463                .adb_type       = MAC_ADB_IOP,
 464                .via_type       = MAC_VIA_QUADRA,
 465                .scsi_type      = MAC_SCSI_QUADRA2,
 466                .scc_type       = MAC_SCC_IOP,
 467                .ether_type     = MAC_ETHER_SONIC,
 468                .expansion_type = MAC_EXP_PDS_NUBUS,
 469                .floppy_type    = MAC_FLOPPY_SWIM_IOP, /* SWIM */
 470        },
 471
 472        /*
 473         * Performa - more LC type machines
 474         */
 475
 476        {
 477                .ident          = MAC_MODEL_P460,
 478                .name           = "Performa 460",
 479                .adb_type       = MAC_ADB_EGRET,
 480                .via_type       = MAC_VIA_IICI,
 481                .scsi_type      = MAC_SCSI_LC,
 482                .scc_type       = MAC_SCC_II,
 483                .expansion_type = MAC_EXP_PDS,
 484                .floppy_type    = MAC_FLOPPY_LC, /* SWIM 2 */
 485        }, {
 486                .ident          = MAC_MODEL_P475,
 487                .name           = "Performa 475",
 488                .adb_type       = MAC_ADB_CUDA,
 489                .via_type       = MAC_VIA_QUADRA,
 490                .scsi_type      = MAC_SCSI_QUADRA,
 491                .scc_type       = MAC_SCC_II,
 492                .expansion_type = MAC_EXP_PDS,
 493                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM 2 */
 494        }, {
 495                .ident          = MAC_MODEL_P475F,
 496                .name           = "Performa 475",
 497                .adb_type       = MAC_ADB_CUDA,
 498                .via_type       = MAC_VIA_QUADRA,
 499                .scsi_type      = MAC_SCSI_QUADRA,
 500                .scc_type       = MAC_SCC_II,
 501                .expansion_type = MAC_EXP_PDS,
 502                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM 2 */
 503        }, {
 504                .ident          = MAC_MODEL_P520,
 505                .name           = "Performa 520",
 506                .adb_type       = MAC_ADB_CUDA,
 507                .via_type       = MAC_VIA_IICI,
 508                .scsi_type      = MAC_SCSI_LC,
 509                .scc_type       = MAC_SCC_II,
 510                .expansion_type = MAC_EXP_PDS,
 511                .floppy_type    = MAC_FLOPPY_LC, /* SWIM 2 */
 512        }, {
 513                .ident          = MAC_MODEL_P550,
 514                .name           = "Performa 550",
 515                .adb_type       = MAC_ADB_CUDA,
 516                .via_type       = MAC_VIA_IICI,
 517                .scsi_type      = MAC_SCSI_LC,
 518                .scc_type       = MAC_SCC_II,
 519                .expansion_type = MAC_EXP_PDS,
 520                .floppy_type    = MAC_FLOPPY_LC, /* SWIM 2 */
 521        },
 522        /* These have the comm slot, and therefore possibly SONIC ethernet */
 523        {
 524                .ident          = MAC_MODEL_P575,
 525                .name           = "Performa 575",
 526                .adb_type       = MAC_ADB_CUDA,
 527                .via_type       = MAC_VIA_QUADRA,
 528                .scsi_type      = MAC_SCSI_QUADRA,
 529                .scc_type       = MAC_SCC_II,
 530                .expansion_type = MAC_EXP_PDS_COMM,
 531                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM 2 */
 532        }, {
 533                .ident          = MAC_MODEL_P588,
 534                .name           = "Performa 588",
 535                .adb_type       = MAC_ADB_CUDA,
 536                .via_type       = MAC_VIA_QUADRA,
 537                .scsi_type      = MAC_SCSI_QUADRA,
 538                .ide_type       = MAC_IDE_QUADRA,
 539                .scc_type       = MAC_SCC_II,
 540                .expansion_type = MAC_EXP_PDS_COMM,
 541                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM 2 */
 542        }, {
 543                .ident          = MAC_MODEL_TV,
 544                .name           = "TV",
 545                .adb_type       = MAC_ADB_CUDA,
 546                .via_type       = MAC_VIA_IICI,
 547                .scsi_type      = MAC_SCSI_LC,
 548                .scc_type       = MAC_SCC_II,
 549                .floppy_type    = MAC_FLOPPY_LC, /* SWIM 2 */
 550        }, {
 551                .ident          = MAC_MODEL_P600,
 552                .name           = "Performa 600",
 553                .adb_type       = MAC_ADB_EGRET,
 554                .via_type       = MAC_VIA_IICI,
 555                .scsi_type      = MAC_SCSI_LC,
 556                .scc_type       = MAC_SCC_II,
 557                .expansion_type = MAC_EXP_NUBUS,
 558                .floppy_type    = MAC_FLOPPY_LC, /* SWIM */
 559        },
 560
 561        /*
 562         * Centris - just guessing again; maybe like Quadra.
 563         * The C610 may or may not have SONIC. We probe to make sure.
 564         */
 565
 566        {
 567                .ident          = MAC_MODEL_C610,
 568                .name           = "Centris 610",
 569                .adb_type       = MAC_ADB_II,
 570                .via_type       = MAC_VIA_QUADRA,
 571                .scsi_type      = MAC_SCSI_QUADRA,
 572                .scc_type       = MAC_SCC_QUADRA,
 573                .ether_type     = MAC_ETHER_SONIC,
 574                .expansion_type = MAC_EXP_PDS_NUBUS,
 575                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM 2 */
 576        }, {
 577                .ident          = MAC_MODEL_C650,
 578                .name           = "Centris 650",
 579                .adb_type       = MAC_ADB_II,
 580                .via_type       = MAC_VIA_QUADRA,
 581                .scsi_type      = MAC_SCSI_QUADRA,
 582                .scc_type       = MAC_SCC_QUADRA,
 583                .ether_type     = MAC_ETHER_SONIC,
 584                .expansion_type = MAC_EXP_PDS_NUBUS,
 585                .floppy_type    = MAC_FLOPPY_QUADRA, /* SWIM 2 */
 586        }, {
 587                .ident          = MAC_MODEL_C660,
 588                .name           = "Centris 660AV",
 589                .adb_type       = MAC_ADB_CUDA,
 590                .via_type       = MAC_VIA_QUADRA,
 591                .scsi_type      = MAC_SCSI_QUADRA3,
 592                .scc_type       = MAC_SCC_PSC,
 593                .ether_type     = MAC_ETHER_MACE,
 594                .expansion_type = MAC_EXP_PDS_NUBUS,
 595                .floppy_type    = MAC_FLOPPY_UNSUPPORTED, /* New Age */
 596        },
 597
 598        /*
 599         * The PowerBooks all the same "Combo" custom IC for SCSI and SCC
 600         * and a PMU (in two variations?) for ADB. Most of them use the
 601         * Quadra-style VIAs. A few models also have IDE from hell.
 602         */
 603
 604        {
 605                .ident          = MAC_MODEL_PB140,
 606                .name           = "PowerBook 140",
 607                .adb_type       = MAC_ADB_PB1,
 608                .via_type       = MAC_VIA_QUADRA,
 609                .scsi_type      = MAC_SCSI_OLD,
 610                .scc_type       = MAC_SCC_QUADRA,
 611                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 612        }, {
 613                .ident          = MAC_MODEL_PB145,
 614                .name           = "PowerBook 145",
 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                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 620        }, {
 621                .ident          = MAC_MODEL_PB150,
 622                .name           = "PowerBook 150",
 623                .adb_type       = MAC_ADB_PB2,
 624                .via_type       = MAC_VIA_IICI,
 625                .scsi_type      = MAC_SCSI_OLD,
 626                .ide_type       = MAC_IDE_PB,
 627                .scc_type       = MAC_SCC_QUADRA,
 628                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 629        }, {
 630                .ident          = MAC_MODEL_PB160,
 631                .name           = "PowerBook 160",
 632                .adb_type       = MAC_ADB_PB1,
 633                .via_type       = MAC_VIA_QUADRA,
 634                .scsi_type      = MAC_SCSI_OLD,
 635                .scc_type       = MAC_SCC_QUADRA,
 636                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 637        }, {
 638                .ident          = MAC_MODEL_PB165,
 639                .name           = "PowerBook 165",
 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                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 645        }, {
 646                .ident          = MAC_MODEL_PB165C,
 647                .name           = "PowerBook 165c",
 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                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 653        }, {
 654                .ident          = MAC_MODEL_PB170,
 655                .name           = "PowerBook 170",
 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                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 661        }, {
 662                .ident          = MAC_MODEL_PB180,
 663                .name           = "PowerBook 180",
 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                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 669        }, {
 670                .ident          = MAC_MODEL_PB180C,
 671                .name           = "PowerBook 180c",
 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                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 677        }, {
 678                .ident          = MAC_MODEL_PB190,
 679                .name           = "PowerBook 190",
 680                .adb_type       = MAC_ADB_PB2,
 681                .via_type       = MAC_VIA_QUADRA,
 682                .scsi_type      = MAC_SCSI_OLD,
 683                .ide_type       = MAC_IDE_BABOON,
 684                .scc_type       = MAC_SCC_QUADRA,
 685                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM 2 */
 686        }, {
 687                .ident          = MAC_MODEL_PB520,
 688                .name           = "PowerBook 520",
 689                .adb_type       = MAC_ADB_PB2,
 690                .via_type       = MAC_VIA_QUADRA,
 691                .scsi_type      = MAC_SCSI_OLD,
 692                .scc_type       = MAC_SCC_QUADRA,
 693                .ether_type     = MAC_ETHER_SONIC,
 694                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM 2 */
 695        },
 696
 697        /*
 698         * PowerBook Duos are pretty much like normal PowerBooks
 699         * All of these probably have onboard SONIC in the Dock which
 700         * means we'll have to probe for it eventually.
 701         */
 702
 703        {
 704                .ident          = MAC_MODEL_PB210,
 705                .name           = "PowerBook Duo 210",
 706                .adb_type       = MAC_ADB_PB2,
 707                .via_type       = MAC_VIA_IICI,
 708                .scsi_type      = MAC_SCSI_DUO,
 709                .scc_type       = MAC_SCC_QUADRA,
 710                .expansion_type = MAC_EXP_NUBUS,
 711                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 712        }, {
 713                .ident          = MAC_MODEL_PB230,
 714                .name           = "PowerBook Duo 230",
 715                .adb_type       = MAC_ADB_PB2,
 716                .via_type       = MAC_VIA_IICI,
 717                .scsi_type      = MAC_SCSI_DUO,
 718                .scc_type       = MAC_SCC_QUADRA,
 719                .expansion_type = MAC_EXP_NUBUS,
 720                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 721        }, {
 722                .ident          = MAC_MODEL_PB250,
 723                .name           = "PowerBook Duo 250",
 724                .adb_type       = MAC_ADB_PB2,
 725                .via_type       = MAC_VIA_IICI,
 726                .scsi_type      = MAC_SCSI_DUO,
 727                .scc_type       = MAC_SCC_QUADRA,
 728                .expansion_type = MAC_EXP_NUBUS,
 729                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 730        }, {
 731                .ident          = MAC_MODEL_PB270C,
 732                .name           = "PowerBook Duo 270c",
 733                .adb_type       = MAC_ADB_PB2,
 734                .via_type       = MAC_VIA_IICI,
 735                .scsi_type      = MAC_SCSI_DUO,
 736                .scc_type       = MAC_SCC_QUADRA,
 737                .expansion_type = MAC_EXP_NUBUS,
 738                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 739        }, {
 740                .ident          = MAC_MODEL_PB280,
 741                .name           = "PowerBook Duo 280",
 742                .adb_type       = MAC_ADB_PB2,
 743                .via_type       = MAC_VIA_IICI,
 744                .scsi_type      = MAC_SCSI_DUO,
 745                .scc_type       = MAC_SCC_QUADRA,
 746                .expansion_type = MAC_EXP_NUBUS,
 747                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 748        }, {
 749                .ident          = MAC_MODEL_PB280C,
 750                .name           = "PowerBook Duo 280c",
 751                .adb_type       = MAC_ADB_PB2,
 752                .via_type       = MAC_VIA_IICI,
 753                .scsi_type      = MAC_SCSI_DUO,
 754                .scc_type       = MAC_SCC_QUADRA,
 755                .expansion_type = MAC_EXP_NUBUS,
 756                .floppy_type    = MAC_FLOPPY_OLD, /* SWIM */
 757        },
 758
 759        /*
 760         * Other stuff?
 761         */
 762
 763        {
 764                .ident          = -1
 765        }
 766};
 767
 768static struct resource scc_a_rsrcs[] = {
 769        { .flags = IORESOURCE_MEM },
 770        { .flags = IORESOURCE_IRQ },
 771};
 772
 773static struct resource scc_b_rsrcs[] = {
 774        { .flags = IORESOURCE_MEM },
 775        { .flags = IORESOURCE_IRQ },
 776};
 777
 778struct platform_device scc_a_pdev = {
 779        .name           = "scc",
 780        .id             = 0,
 781};
 782EXPORT_SYMBOL(scc_a_pdev);
 783
 784struct platform_device scc_b_pdev = {
 785        .name           = "scc",
 786        .id             = 1,
 787};
 788EXPORT_SYMBOL(scc_b_pdev);
 789
 790static void __init mac_identify(void)
 791{
 792        struct mac_model *m;
 793
 794        /* Penguin data useful? */
 795        int model = mac_bi_data.id;
 796        if (!model) {
 797                /* no bootinfo model id -> NetBSD booter was used! */
 798                /* XXX FIXME: breaks for model > 31 */
 799                model = (mac_bi_data.cpuid >> 2) & 63;
 800                pr_warn("No bootinfo model ID, using cpuid instead (obsolete bootloader?)\n");
 801        }
 802
 803        macintosh_config = mac_data_table;
 804        for (m = macintosh_config; m->ident != -1; m++) {
 805                if (m->ident == model) {
 806                        macintosh_config = m;
 807                        break;
 808                }
 809        }
 810
 811        /* Set up serial port resources for the console initcall. */
 812
 813        scc_a_rsrcs[0].start     = (resource_size_t)mac_bi_data.sccbase + 2;
 814        scc_a_rsrcs[0].end       = scc_a_rsrcs[0].start;
 815        scc_a_pdev.num_resources = ARRAY_SIZE(scc_a_rsrcs);
 816        scc_a_pdev.resource      = scc_a_rsrcs;
 817
 818        scc_b_rsrcs[0].start     = (resource_size_t)mac_bi_data.sccbase;
 819        scc_b_rsrcs[0].end       = scc_b_rsrcs[0].start;
 820        scc_b_pdev.num_resources = ARRAY_SIZE(scc_b_rsrcs);
 821        scc_b_pdev.resource      = scc_b_rsrcs;
 822
 823        switch (macintosh_config->scc_type) {
 824        case MAC_SCC_PSC:
 825                scc_a_rsrcs[1].start = scc_a_rsrcs[1].end = IRQ_MAC_SCC_A;
 826                scc_b_rsrcs[1].start = scc_b_rsrcs[1].end = IRQ_MAC_SCC_B;
 827                break;
 828        default:
 829                /* On non-PSC machines, the serial ports share an IRQ. */
 830                if (macintosh_config->ident == MAC_MODEL_IIFX) {
 831                        scc_a_rsrcs[1].start = scc_a_rsrcs[1].end = IRQ_MAC_SCC;
 832                        scc_b_rsrcs[1].start = scc_b_rsrcs[1].end = IRQ_MAC_SCC;
 833                } else {
 834                        scc_a_rsrcs[1].start = scc_a_rsrcs[1].end = IRQ_AUTO_4;
 835                        scc_b_rsrcs[1].start = scc_b_rsrcs[1].end = IRQ_AUTO_4;
 836                }
 837                break;
 838        }
 839
 840        pr_info("Detected Macintosh model: %d\n", model);
 841
 842        /*
 843         * Report booter data:
 844         */
 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);
 857
 858        iop_init();
 859        oss_init();
 860        via_init();
 861        psc_init();
 862        baboon_init();
 863
 864#ifdef CONFIG_ADB_CUDA
 865        find_via_cuda();
 866#endif
 867#ifdef CONFIG_ADB_PMU
 868        find_via_pmu();
 869#endif
 870}
 871
 872static void __init mac_report_hardware(void)
 873{
 874        pr_info("Apple Macintosh %s\n", macintosh_config->name);
 875}
 876
 877static void mac_get_model(char *str)
 878{
 879        strcpy(str, "Macintosh ");
 880        strcat(str, macintosh_config->name);
 881}
 882
 883static const struct resource mac_scsi_iifx_rsrc[] __initconst = {
 884        {
 885                .flags = IORESOURCE_IRQ,
 886                .start = IRQ_MAC_SCSI,
 887                .end   = IRQ_MAC_SCSI,
 888        }, {
 889                .flags = IORESOURCE_MEM,
 890                .start = 0x50008000,
 891                .end   = 0x50009FFF,
 892        }, {
 893                .flags = IORESOURCE_MEM,
 894                .start = 0x50008000,
 895                .end   = 0x50009FFF,
 896        },
 897};
 898
 899static const struct resource mac_scsi_duo_rsrc[] __initconst = {
 900        {
 901                .flags = IORESOURCE_MEM,
 902                .start = 0xFEE02000,
 903                .end   = 0xFEE03FFF,
 904        },
 905};
 906
 907static const struct resource mac_scsi_old_rsrc[] __initconst = {
 908        {
 909                .flags = IORESOURCE_IRQ,
 910                .start = IRQ_MAC_SCSI,
 911                .end   = IRQ_MAC_SCSI,
 912        }, {
 913                .flags = IORESOURCE_MEM,
 914                .start = 0x50010000,
 915                .end   = 0x50011FFF,
 916        }, {
 917                .flags = IORESOURCE_MEM,
 918                .start = 0x50006000,
 919                .end   = 0x50007FFF,
 920        },
 921};
 922
 923static const struct resource mac_scsi_ccl_rsrc[] __initconst = {
 924        {
 925                .flags = IORESOURCE_IRQ,
 926                .start = IRQ_MAC_SCSI,
 927                .end   = IRQ_MAC_SCSI,
 928        }, {
 929                .flags = IORESOURCE_MEM,
 930                .start = 0x50F10000,
 931                .end   = 0x50F11FFF,
 932        }, {
 933                .flags = IORESOURCE_MEM,
 934                .start = 0x50F06000,
 935                .end   = 0x50F07FFF,
 936        },
 937};
 938
 939static const struct resource mac_pata_quadra_rsrc[] __initconst = {
 940        DEFINE_RES_MEM(0x50F1A000, 0x38),
 941        DEFINE_RES_MEM(0x50F1A038, 0x04),
 942        DEFINE_RES_IRQ(IRQ_NUBUS_F),
 943};
 944
 945static const struct resource mac_pata_pb_rsrc[] __initconst = {
 946        DEFINE_RES_MEM(0x50F1A000, 0x38),
 947        DEFINE_RES_MEM(0x50F1A038, 0x04),
 948        DEFINE_RES_IRQ(IRQ_NUBUS_C),
 949};
 950
 951static const struct resource mac_pata_baboon_rsrc[] __initconst = {
 952        DEFINE_RES_MEM(0x50F1A000, 0x38),
 953        DEFINE_RES_MEM(0x50F1A038, 0x04),
 954        DEFINE_RES_IRQ(IRQ_BABOON_1),
 955};
 956
 957static const struct pata_platform_info mac_pata_data __initconst = {
 958        .ioport_shift = 2,
 959};
 960
 961int __init mac_platform_init(void)
 962{
 963        phys_addr_t swim_base = 0;
 964
 965        if (!MACH_IS_MAC)
 966                return -ENODEV;
 967
 968        /*
 969         * Serial devices
 970         */
 971
 972        platform_device_register(&scc_a_pdev);
 973        platform_device_register(&scc_b_pdev);
 974
 975        /*
 976         * Floppy device
 977         */
 978
 979        switch (macintosh_config->floppy_type) {
 980        case MAC_FLOPPY_QUADRA:
 981                swim_base = 0x5001E000;
 982                break;
 983        case MAC_FLOPPY_OLD:
 984                swim_base = 0x50016000;
 985                break;
 986        case MAC_FLOPPY_LC:
 987                swim_base = 0x50F16000;
 988                break;
 989        }
 990
 991        if (swim_base) {
 992                struct resource swim_rsrc = {
 993                        .flags = IORESOURCE_MEM,
 994                        .start = swim_base,
 995                        .end   = swim_base + 0x1FFF,
 996                };
 997
 998                platform_device_register_simple("swim", -1, &swim_rsrc, 1);
 999        }
1000
1001        /*
1002         * SCSI device(s)
1003         */
1004
1005        switch (macintosh_config->scsi_type) {
1006        case MAC_SCSI_QUADRA:
1007        case MAC_SCSI_QUADRA3:
1008                platform_device_register_simple("mac_esp", 0, NULL, 0);
1009                break;
1010        case MAC_SCSI_QUADRA2:
1011                platform_device_register_simple("mac_esp", 0, NULL, 0);
1012                if ((macintosh_config->ident == MAC_MODEL_Q900) ||
1013                    (macintosh_config->ident == MAC_MODEL_Q950))
1014                        platform_device_register_simple("mac_esp", 1, NULL, 0);
1015                break;
1016        case MAC_SCSI_IIFX:
1017                /* Addresses from The Guide to Mac Family Hardware.
1018                 * $5000 8000 - $5000 9FFF: SCSI DMA
1019                 * $5000 A000 - $5000 BFFF: Alternate SCSI
1020                 * $5000 C000 - $5000 DFFF: Alternate SCSI (DMA)
1021                 * $5000 E000 - $5000 FFFF: Alternate SCSI (Hsk)
1022                 * The A/UX header file sys/uconfig.h says $50F0 8000.
1023                 * The "SCSI DMA" custom IC embeds the 53C80 core and
1024                 * supports Programmed IO, DMA and PDMA (hardware handshake).
1025                 */
1026                platform_device_register_simple("mac_scsi", 0,
1027                        mac_scsi_iifx_rsrc, ARRAY_SIZE(mac_scsi_iifx_rsrc));
1028                break;
1029        case MAC_SCSI_DUO:
1030                /* Addresses from the Duo Dock II Developer Note.
1031                 * $FEE0 2000 - $FEE0 3FFF: normal mode
1032                 * $FEE0 4000 - $FEE0 5FFF: pseudo DMA without /DRQ
1033                 * $FEE0 6000 - $FEE0 7FFF: pseudo DMA with /DRQ
1034                 * The NetBSD code indicates that both 5380 chips share
1035                 * an IRQ (?) which would need careful handling (see mac_esp).
1036                 */
1037                platform_device_register_simple("mac_scsi", 1,
1038                        mac_scsi_duo_rsrc, ARRAY_SIZE(mac_scsi_duo_rsrc));
1039                fallthrough;
1040        case MAC_SCSI_OLD:
1041                /* Addresses from Developer Notes for Duo System,
1042                 * PowerBook 180 & 160, 140 & 170, Macintosh IIsi
1043                 * and also from The Guide to Mac Family Hardware for
1044                 * SE/30, II, IIx, IIcx, IIci.
1045                 * $5000 6000 - $5000 7FFF: pseudo-DMA with /DRQ
1046                 * $5001 0000 - $5001 1FFF: normal mode
1047                 * $5001 2000 - $5001 3FFF: pseudo-DMA without /DRQ
1048                 * GMFH says that $5000 0000 - $50FF FFFF "wraps
1049                 * $5000 0000 - $5001 FFFF eight times" (!)
1050                 * mess.org says IIci and Color Classic do not alias
1051                 * I/O address space.
1052                 */
1053                platform_device_register_simple("mac_scsi", 0,
1054                        mac_scsi_old_rsrc, ARRAY_SIZE(mac_scsi_old_rsrc));
1055                break;
1056        case MAC_SCSI_LC:
1057                /* Addresses from Mac LC data in Designing Cards & Drivers 3ed.
1058                 * Also from the Developer Notes for Classic II, LC III,
1059                 * Color Classic and IIvx.
1060                 * $50F0 6000 - $50F0 7FFF: SCSI handshake
1061                 * $50F1 0000 - $50F1 1FFF: SCSI
1062                 * $50F1 2000 - $50F1 3FFF: SCSI DMA
1063                 */
1064                platform_device_register_simple("mac_scsi", 0,
1065                        mac_scsi_ccl_rsrc, ARRAY_SIZE(mac_scsi_ccl_rsrc));
1066                break;
1067        }
1068
1069        /*
1070         * IDE device
1071         */
1072
1073        switch (macintosh_config->ide_type) {
1074        case MAC_IDE_QUADRA:
1075                platform_device_register_resndata(NULL, "pata_platform", -1,
1076                        mac_pata_quadra_rsrc, ARRAY_SIZE(mac_pata_quadra_rsrc),
1077                        &mac_pata_data, sizeof(mac_pata_data));
1078                break;
1079        case MAC_IDE_PB:
1080                platform_device_register_resndata(NULL, "pata_platform", -1,
1081                        mac_pata_pb_rsrc, ARRAY_SIZE(mac_pata_pb_rsrc),
1082                        &mac_pata_data, sizeof(mac_pata_data));
1083                break;
1084        case MAC_IDE_BABOON:
1085                platform_device_register_resndata(NULL, "pata_platform", -1,
1086                        mac_pata_baboon_rsrc, ARRAY_SIZE(mac_pata_baboon_rsrc),
1087                        &mac_pata_data, sizeof(mac_pata_data));
1088                break;
1089        }
1090
1091        /*
1092         * Ethernet device
1093         */
1094
1095        if (macintosh_config->ether_type == MAC_ETHER_SONIC ||
1096            macintosh_config->expansion_type == MAC_EXP_PDS_COMM)
1097                platform_device_register_simple("macsonic", -1, NULL, 0);
1098
1099        if (macintosh_config->expansion_type == MAC_EXP_PDS ||
1100            macintosh_config->expansion_type == MAC_EXP_PDS_COMM)
1101                platform_device_register_simple("mac89x0", -1, NULL, 0);
1102
1103        if (macintosh_config->ether_type == MAC_ETHER_MACE)
1104                platform_device_register_simple("macmace", -1, NULL, 0);
1105
1106        return 0;
1107}
1108
1109arch_initcall(mac_platform_init);
1110