eisa.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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 <[email protected]>
  7. * modified for SNI usage by Thomas Bogendoerfer
  8. */
  9. #include <linux/kernel.h>
  10. #include <linux/platform_device.h>
  11. #include <linux/eisa.h>
  12. #include <linux/init.h>
  13. /* The default EISA device parent (virtual root device).
  14. * Now use a platform device, since that's the obvious choice. */
  15. static struct platform_device eisa_root_dev = {
  16. .name = "eisa",
  17. .id = 0,
  18. };
  19. static struct eisa_root_device eisa_bus_root = {
  20. .dev = &eisa_root_dev.dev,
  21. .bus_base_addr = 0,
  22. .res = &ioport_resource,
  23. .slots = EISA_MAX_SLOTS,
  24. .dma_mask = 0xffffffff,
  25. .force_probe = 1,
  26. };
  27. int __init sni_eisa_root_init(void)
  28. {
  29. int r;
  30. r = platform_device_register(&eisa_root_dev);
  31. if (!r)
  32. return r;
  33. dev_set_drvdata(&eisa_root_dev.dev, &eisa_bus_root);
  34. if (eisa_root_register(&eisa_bus_root)) {
  35. /* A real bridge may have been registered before
  36. * us. So quietly unregister. */
  37. platform_device_unregister(&eisa_root_dev);
  38. return -1;
  39. }
  40. return 0;
  41. }