]>
Commit | Line | Data |
---|---|---|
f898f8db SR |
1 | #ifndef _LINUX_OF_DEVICE_H |
2 | #define _LINUX_OF_DEVICE_H | |
f898f8db | 3 | |
b505ff5e GL |
4 | /* |
5 | * The of_device *was* a kind of "base class" that was a superset of | |
6 | * struct device for use by devices attached to an OF node and probed | |
7 | * using OF properties. However, the important bit of OF-style | |
8 | * probing, namely the device node pointer, has been moved into the | |
9 | * common struct device when CONFIG_OF is set to make OF-style probing | |
10 | * available to all bus types. So now, just make of_device and | |
11 | * platform_device equivalent so that current of_platform bus users | |
12 | * can be transparently migrated over to using the platform bus. | |
13 | * | |
14 | * This line will go away once all references to of_device are removed | |
15 | * from the kernel. | |
16 | */ | |
17 | #define of_device platform_device | |
f9f5a466 | 18 | #include <linux/platform_device.h> |
29596042 | 19 | #include <linux/of_platform.h> /* temporary until merge */ |
b505ff5e | 20 | |
f9f5a466 GL |
21 | #ifdef CONFIG_OF_DEVICE |
22 | #include <linux/device.h> | |
23 | #include <linux/of.h> | |
24 | #include <linux/mod_devicetable.h> | |
f898f8db SR |
25 | |
26 | #define to_of_device(d) container_of(d, struct of_device, dev) | |
27 | ||
f898f8db | 28 | extern const struct of_device_id *of_match_device( |
44504b2b | 29 | const struct of_device_id *matches, const struct device *dev); |
f898f8db | 30 | |
8cec0e7b GL |
31 | /** |
32 | * of_driver_match_device - Tell if a driver's of_match_table matches a device. | |
33 | * @drv: the device_driver structure to test | |
34 | * @dev: the device structure to match against | |
35 | */ | |
36 | static inline int of_driver_match_device(const struct device *dev, | |
37 | const struct device_driver *drv) | |
38 | { | |
39 | return of_match_device(drv->of_match_table, dev) != NULL; | |
40 | } | |
41 | ||
f898f8db SR |
42 | extern struct of_device *of_dev_get(struct of_device *dev); |
43 | extern void of_dev_put(struct of_device *dev); | |
44 | ||
45 | extern int of_device_register(struct of_device *ofdev); | |
46 | extern void of_device_unregister(struct of_device *ofdev); | |
47 | extern void of_release_dev(struct device *dev); | |
48 | ||
fec738dd JF |
49 | static inline void of_device_free(struct of_device *dev) |
50 | { | |
51 | of_release_dev(&dev->dev); | |
52 | } | |
53 | ||
34a1c1e8 | 54 | extern ssize_t of_device_get_modalias(struct device *dev, |
09e67ca2 | 55 | char *str, ssize_t len); |
dd27dcda GL |
56 | |
57 | extern int of_device_uevent(struct device *dev, struct kobj_uevent_env *env); | |
58 | ||
59 | ||
8cec0e7b GL |
60 | #else /* CONFIG_OF_DEVICE */ |
61 | ||
62 | static inline int of_driver_match_device(struct device *dev, | |
63 | struct device_driver *drv) | |
64 | { | |
65 | return 0; | |
66 | } | |
67 | ||
eca39301 GL |
68 | static inline int of_device_uevent(struct device *dev, |
69 | struct kobj_uevent_env *env) | |
70 | { | |
71 | return -ENODEV; | |
72 | } | |
73 | ||
efb2e014 | 74 | #endif /* CONFIG_OF_DEVICE */ |
09e67ca2 | 75 | |
f898f8db | 76 | #endif /* _LINUX_OF_DEVICE_H */ |