diff options
Diffstat (limited to 'include/asm-sparc/of_device.h')
-rw-r--r-- | include/asm-sparc/of_device.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/include/asm-sparc/of_device.h b/include/asm-sparc/of_device.h new file mode 100644 index 000000000000..80ea31f6e17f --- /dev/null +++ b/include/asm-sparc/of_device.h | |||
@@ -0,0 +1,79 @@ | |||
1 | #ifndef _ASM_SPARC_OF_DEVICE_H | ||
2 | #define _ASM_SPARC_OF_DEVICE_H | ||
3 | #ifdef __KERNEL__ | ||
4 | |||
5 | #include <linux/device.h> | ||
6 | #include <linux/mod_devicetable.h> | ||
7 | #include <asm/openprom.h> | ||
8 | #include <asm/prom.h> | ||
9 | |||
10 | extern struct bus_type ebus_bus_type; | ||
11 | extern struct bus_type sbus_bus_type; | ||
12 | extern struct bus_type of_bus_type; | ||
13 | |||
14 | /* | ||
15 | * The of_device is a kind of "base class" that is a superset of | ||
16 | * struct device for use by devices attached to an OF node and | ||
17 | * probed using OF properties. | ||
18 | */ | ||
19 | struct of_device | ||
20 | { | ||
21 | struct device_node *node; | ||
22 | struct device dev; | ||
23 | struct resource resource[PROMREG_MAX]; | ||
24 | unsigned int irqs[PROMINTR_MAX]; | ||
25 | int num_irqs; | ||
26 | |||
27 | void *sysdata; | ||
28 | |||
29 | int slot; | ||
30 | int portid; | ||
31 | int clock_freq; | ||
32 | }; | ||
33 | #define to_of_device(d) container_of(d, struct of_device, dev) | ||
34 | |||
35 | extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name); | ||
36 | extern void of_iounmap(void __iomem *base, unsigned long size); | ||
37 | |||
38 | extern struct of_device *of_find_device_by_node(struct device_node *); | ||
39 | |||
40 | extern const struct of_device_id *of_match_device( | ||
41 | const struct of_device_id *matches, const struct of_device *dev); | ||
42 | |||
43 | extern struct of_device *of_dev_get(struct of_device *dev); | ||
44 | extern void of_dev_put(struct of_device *dev); | ||
45 | |||
46 | /* | ||
47 | * An of_platform_driver driver is attached to a basic of_device on | ||
48 | * the ISA, EBUS, and SBUS busses on sparc64. | ||
49 | */ | ||
50 | struct of_platform_driver | ||
51 | { | ||
52 | char *name; | ||
53 | struct of_device_id *match_table; | ||
54 | struct module *owner; | ||
55 | |||
56 | int (*probe)(struct of_device* dev, const struct of_device_id *match); | ||
57 | int (*remove)(struct of_device* dev); | ||
58 | |||
59 | int (*suspend)(struct of_device* dev, pm_message_t state); | ||
60 | int (*resume)(struct of_device* dev); | ||
61 | int (*shutdown)(struct of_device* dev); | ||
62 | |||
63 | struct device_driver driver; | ||
64 | }; | ||
65 | #define to_of_platform_driver(drv) container_of(drv,struct of_platform_driver, driver) | ||
66 | |||
67 | extern int of_register_driver(struct of_platform_driver *drv, | ||
68 | struct bus_type *bus); | ||
69 | extern void of_unregister_driver(struct of_platform_driver *drv); | ||
70 | extern int of_device_register(struct of_device *ofdev); | ||
71 | extern void of_device_unregister(struct of_device *ofdev); | ||
72 | extern struct of_device *of_platform_device_create(struct device_node *np, | ||
73 | const char *bus_id, | ||
74 | struct device *parent, | ||
75 | struct bus_type *bus); | ||
76 | extern void of_release_dev(struct device *dev); | ||
77 | |||
78 | #endif /* __KERNEL__ */ | ||
79 | #endif /* _ASM_SPARC_OF_DEVICE_H */ | ||