18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Virtual EISA root driver. 48c2ecf20Sopenharmony_ci * Acts as a placeholder if we don't have a proper EISA bridge. 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * (C) 2003 Marc Zyngier <maz@wild-wind.fr.eu.org> 78c2ecf20Sopenharmony_ci * modified for SNI usage by Thomas Bogendoerfer 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <linux/kernel.h> 118c2ecf20Sopenharmony_ci#include <linux/platform_device.h> 128c2ecf20Sopenharmony_ci#include <linux/eisa.h> 138c2ecf20Sopenharmony_ci#include <linux/init.h> 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci/* The default EISA device parent (virtual root device). 168c2ecf20Sopenharmony_ci * Now use a platform device, since that's the obvious choice. */ 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_cistatic struct platform_device eisa_root_dev = { 198c2ecf20Sopenharmony_ci .name = "eisa", 208c2ecf20Sopenharmony_ci .id = 0, 218c2ecf20Sopenharmony_ci}; 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_cistatic struct eisa_root_device eisa_bus_root = { 248c2ecf20Sopenharmony_ci .dev = &eisa_root_dev.dev, 258c2ecf20Sopenharmony_ci .bus_base_addr = 0, 268c2ecf20Sopenharmony_ci .res = &ioport_resource, 278c2ecf20Sopenharmony_ci .slots = EISA_MAX_SLOTS, 288c2ecf20Sopenharmony_ci .dma_mask = 0xffffffff, 298c2ecf20Sopenharmony_ci .force_probe = 1, 308c2ecf20Sopenharmony_ci}; 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ciint __init sni_eisa_root_init(void) 338c2ecf20Sopenharmony_ci{ 348c2ecf20Sopenharmony_ci int r; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci r = platform_device_register(&eisa_root_dev); 378c2ecf20Sopenharmony_ci if (!r) 388c2ecf20Sopenharmony_ci return r; 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci dev_set_drvdata(&eisa_root_dev.dev, &eisa_bus_root); 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci if (eisa_root_register(&eisa_bus_root)) { 438c2ecf20Sopenharmony_ci /* A real bridge may have been registered before 448c2ecf20Sopenharmony_ci * us. So quietly unregister. */ 458c2ecf20Sopenharmony_ci platform_device_unregister(&eisa_root_dev); 468c2ecf20Sopenharmony_ci return -1; 478c2ecf20Sopenharmony_ci } 488c2ecf20Sopenharmony_ci return 0; 498c2ecf20Sopenharmony_ci} 50