diff options
Diffstat (limited to 'include/linux/of_platform.h')
-rw-r--r-- | include/linux/of_platform.h | 65 |
1 files changed, 39 insertions, 26 deletions
diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h index 1643d3761eb4..a68716ad38ce 100644 --- a/include/linux/of_platform.h +++ b/include/linux/of_platform.h | |||
@@ -17,29 +17,32 @@ | |||
17 | #include <linux/mod_devicetable.h> | 17 | #include <linux/mod_devicetable.h> |
18 | #include <linux/pm.h> | 18 | #include <linux/pm.h> |
19 | #include <linux/of_device.h> | 19 | #include <linux/of_device.h> |
20 | #include <linux/platform_device.h> | ||
20 | 21 | ||
21 | /* | 22 | /** |
22 | * The of_platform_bus_type is a bus type used by drivers that do not | 23 | * of_platform_driver - Legacy of-aware driver for platform devices. |
23 | * attach to a macio or similar bus but still use OF probing | 24 | * |
24 | * mechanism | 25 | * An of_platform_driver driver is attached to a basic platform_device on |
25 | */ | 26 | * ether the "platform bus" (platform_bus_type), or the ibm ebus |
26 | extern struct bus_type of_platform_bus_type; | 27 | * (ibmebus_bus_type). |
27 | 28 | * | |
28 | /* | 29 | * of_platform_driver is being phased out when used with the platform_bus_type, |
29 | * An of_platform_driver driver is attached to a basic of_device on | 30 | * and regular platform_drivers should be used instead. When the transition |
30 | * the "platform bus" (of_platform_bus_type). | 31 | * is complete, only ibmebus will be using this structure, and the |
32 | * platform_driver member of this structure will be removed. | ||
31 | */ | 33 | */ |
32 | struct of_platform_driver | 34 | struct of_platform_driver |
33 | { | 35 | { |
34 | int (*probe)(struct of_device* dev, | 36 | int (*probe)(struct platform_device* dev, |
35 | const struct of_device_id *match); | 37 | const struct of_device_id *match); |
36 | int (*remove)(struct of_device* dev); | 38 | int (*remove)(struct platform_device* dev); |
37 | 39 | ||
38 | int (*suspend)(struct of_device* dev, pm_message_t state); | 40 | int (*suspend)(struct platform_device* dev, pm_message_t state); |
39 | int (*resume)(struct of_device* dev); | 41 | int (*resume)(struct platform_device* dev); |
40 | int (*shutdown)(struct of_device* dev); | 42 | int (*shutdown)(struct platform_device* dev); |
41 | 43 | ||
42 | struct device_driver driver; | 44 | struct device_driver driver; |
45 | struct platform_driver platform_driver; | ||
43 | }; | 46 | }; |
44 | #define to_of_platform_driver(drv) \ | 47 | #define to_of_platform_driver(drv) \ |
45 | container_of(drv,struct of_platform_driver, driver) | 48 | container_of(drv,struct of_platform_driver, driver) |
@@ -49,20 +52,30 @@ extern int of_register_driver(struct of_platform_driver *drv, | |||
49 | extern void of_unregister_driver(struct of_platform_driver *drv); | 52 | extern void of_unregister_driver(struct of_platform_driver *drv); |
50 | 53 | ||
51 | /* Platform drivers register/unregister */ | 54 | /* Platform drivers register/unregister */ |
52 | static inline int of_register_platform_driver(struct of_platform_driver *drv) | 55 | extern int of_register_platform_driver(struct of_platform_driver *drv); |
53 | { | 56 | extern void of_unregister_platform_driver(struct of_platform_driver *drv); |
54 | return of_register_driver(drv, &of_platform_bus_type); | ||
55 | } | ||
56 | static inline void of_unregister_platform_driver(struct of_platform_driver *drv) | ||
57 | { | ||
58 | of_unregister_driver(drv); | ||
59 | } | ||
60 | |||
61 | #include <asm/of_platform.h> | ||
62 | 57 | ||
63 | extern struct of_device *of_find_device_by_node(struct device_node *np); | 58 | extern struct platform_device *of_device_alloc(struct device_node *np, |
59 | const char *bus_id, | ||
60 | struct device *parent); | ||
61 | extern struct platform_device *of_find_device_by_node(struct device_node *np); | ||
64 | 62 | ||
65 | extern int of_bus_type_init(struct bus_type *bus, const char *name); | 63 | extern int of_bus_type_init(struct bus_type *bus, const char *name); |
64 | |||
65 | #if !defined(CONFIG_SPARC) /* SPARC has its own device registration method */ | ||
66 | /* Platform devices and busses creation */ | ||
67 | extern struct platform_device *of_platform_device_create(struct device_node *np, | ||
68 | const char *bus_id, | ||
69 | struct device *parent); | ||
70 | |||
71 | /* pseudo "matches" value to not do deep probe */ | ||
72 | #define OF_NO_DEEP_PROBE ((struct of_device_id *)-1) | ||
73 | |||
74 | extern int of_platform_bus_probe(struct device_node *root, | ||
75 | const struct of_device_id *matches, | ||
76 | struct device *parent); | ||
77 | #endif /* !CONFIG_SPARC */ | ||
78 | |||
66 | #endif /* CONFIG_OF_DEVICE */ | 79 | #endif /* CONFIG_OF_DEVICE */ |
67 | 80 | ||
68 | #endif /* _LINUX_OF_PLATFORM_H */ | 81 | #endif /* _LINUX_OF_PLATFORM_H */ |