Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/mips/sni/eisa.c
10818 views
1
/*
2
* Virtual EISA root driver.
3
* Acts as a placeholder if we don't have a proper EISA bridge.
4
*
5
* (C) 2003 Marc Zyngier <[email protected]>
6
* modified for SNI usage by Thomas Bogendoerfer
7
*
8
* This code is released under the GPL version 2.
9
*/
10
11
#include <linux/kernel.h>
12
#include <linux/platform_device.h>
13
#include <linux/eisa.h>
14
#include <linux/init.h>
15
16
/* The default EISA device parent (virtual root device).
17
* Now use a platform device, since that's the obvious choice. */
18
19
static struct platform_device eisa_root_dev = {
20
.name = "eisa",
21
.id = 0,
22
};
23
24
static struct eisa_root_device eisa_bus_root = {
25
.dev = &eisa_root_dev.dev,
26
.bus_base_addr = 0,
27
.res = &ioport_resource,
28
.slots = EISA_MAX_SLOTS,
29
.dma_mask = 0xffffffff,
30
.force_probe = 1,
31
};
32
33
int __init sni_eisa_root_init(void)
34
{
35
int r;
36
37
r = platform_device_register(&eisa_root_dev);
38
if (!r)
39
return r;
40
41
dev_set_drvdata(&eisa_root_dev.dev, &eisa_bus_root);
42
43
if (eisa_root_register(&eisa_bus_root)) {
44
/* A real bridge may have been registered before
45
* us. So quietly unregister. */
46
platform_device_unregister(&eisa_root_dev);
47
return -1;
48
}
49
return 0;
50
}
51
52