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