Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/mips/sni/eisa.c
26424 views
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
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
18
static struct platform_device eisa_root_dev = {
19
.name = "eisa",
20
.id = 0,
21
};
22
23
static 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
32
int __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
51