Commit | Line | Data |
---|---|---|
fd531431 DM |
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> | |
cf44bbc2 | 7 | #include <asm/openprom.h> |
fd531431 DM |
8 | #include <asm/prom.h> |
9 | ||
10 | extern struct bus_type ebus_bus_type; | |
11 | extern struct bus_type sbus_bus_type; | |
cf44bbc2 | 12 | extern struct bus_type of_bus_type; |
fd531431 DM |
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 | { | |
cf44bbc2 DM |
21 | struct device_node *node; |
22 | struct device dev; | |
23 | struct resource resource[PROMREG_MAX]; | |
8f96cd1a DM |
24 | unsigned int irqs[PROMINTR_MAX]; |
25 | int num_irqs; | |
cf44bbc2 DM |
26 | |
27 | void *sysdata; | |
28 | ||
29 | int slot; | |
30 | int portid; | |
31 | int clock_freq; | |
fd531431 DM |
32 | }; |
33 | #define to_of_device(d) container_of(d, struct of_device, dev) | |
34 | ||
3ca9fab4 | 35 | extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name); |
e3a411a3 | 36 | extern void of_iounmap(struct resource *res, void __iomem *base, unsigned long size); |
3ca9fab4 | 37 | |
8f96cd1a DM |
38 | extern struct of_device *of_find_device_by_node(struct device_node *); |
39 | ||
fd531431 DM |
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 */ |