linux/arch/mips/sni/eisa.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0-only
   2/*
   3 * Virtual EISA root driver.
   4 * Acts as a placeholder if we don't have a proper EISA bridge.
   5 *
   6 * (C) 2003 Marc Zyngier <maz@wild-wind.fr.eu.org>
   7 * modified for SNI usage by Thomas Bogendoerfer
   8 */
   9
  10#include <linux/kernel.h>
  11#include <linux/platform_device.h>
  12#include <linux/eisa.h>
  13#include <linux/init.h>
  14
  15/* The default EISA device parent (virtual root device).
  16 * Now use a platform device, since that's the obvious choice. */
  17
  18static struct platform_device eisa_root_dev = {
  19        .name = "eisa",
  20        .id   = 0,
  21};
  22
  23static struct eisa_root_device eisa_bus_root = {
  24        .dev           = &eisa_root_dev.dev,
  25        .bus_base_addr = 0,
  26        .res           = &ioport_resource,
  27        .slots         = EISA_MAX_SLOTS,
  28        .dma_mask      = 0xffffffff,
  29        .force_probe   = 1,
  30};
  31
  32int __init sni_eisa_root_init(void)
  33{
  34        int r;
  35
  36        r = platform_device_register(&eisa_root_dev);
  37        if (!r)
  38                return r;
  39
  40        dev_set_drvdata(&eisa_root_dev.dev, &eisa_bus_root);
  41
  42        if (eisa_root_register(&eisa_bus_root)) {
  43                /* A real bridge may have been registered before
  44                 * us. So quietly unregister. */
  45                platform_device_unregister(&eisa_root_dev);
  46                return -1;
  47        }
  48        return 0;
  49}
  50