diff options
Diffstat (limited to 'include/linux/platform_device.h')
| -rw-r--r-- | include/linux/platform_device.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h index 9a342699c607..72736fd8223c 100644 --- a/include/linux/platform_device.h +++ b/include/linux/platform_device.h | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #define _PLATFORM_DEVICE_H_ | 12 | #define _PLATFORM_DEVICE_H_ |
| 13 | 13 | ||
| 14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
| 15 | #include <linux/mod_devicetable.h> | ||
| 15 | 16 | ||
| 16 | struct platform_device { | 17 | struct platform_device { |
| 17 | const char * name; | 18 | const char * name; |
| @@ -19,8 +20,13 @@ struct platform_device { | |||
| 19 | struct device dev; | 20 | struct device dev; |
| 20 | u32 num_resources; | 21 | u32 num_resources; |
| 21 | struct resource * resource; | 22 | struct resource * resource; |
| 23 | void *platform_data; | ||
| 24 | |||
| 25 | struct platform_device_id *id_entry; | ||
| 22 | }; | 26 | }; |
| 23 | 27 | ||
| 28 | #define platform_get_device_id(pdev) ((pdev)->id_entry) | ||
| 29 | |||
| 24 | #define to_platform_device(x) container_of((x), struct platform_device, dev) | 30 | #define to_platform_device(x) container_of((x), struct platform_device, dev) |
| 25 | 31 | ||
| 26 | extern int platform_device_register(struct platform_device *); | 32 | extern int platform_device_register(struct platform_device *); |
| @@ -56,6 +62,7 @@ struct platform_driver { | |||
| 56 | int (*resume_early)(struct platform_device *); | 62 | int (*resume_early)(struct platform_device *); |
| 57 | int (*resume)(struct platform_device *); | 63 | int (*resume)(struct platform_device *); |
| 58 | struct device_driver driver; | 64 | struct device_driver driver; |
| 65 | struct platform_device_id *id_table; | ||
| 59 | }; | 66 | }; |
| 60 | 67 | ||
| 61 | extern int platform_driver_register(struct platform_driver *); | 68 | extern int platform_driver_register(struct platform_driver *); |
| @@ -70,4 +77,46 @@ extern int platform_driver_probe(struct platform_driver *driver, | |||
| 70 | #define platform_get_drvdata(_dev) dev_get_drvdata(&(_dev)->dev) | 77 | #define platform_get_drvdata(_dev) dev_get_drvdata(&(_dev)->dev) |
| 71 | #define platform_set_drvdata(_dev,data) dev_set_drvdata(&(_dev)->dev, (data)) | 78 | #define platform_set_drvdata(_dev,data) dev_set_drvdata(&(_dev)->dev, (data)) |
| 72 | 79 | ||
| 80 | /* early platform driver interface */ | ||
| 81 | struct early_platform_driver { | ||
| 82 | const char *class_str; | ||
| 83 | struct platform_driver *pdrv; | ||
| 84 | struct list_head list; | ||
| 85 | int requested_id; | ||
| 86 | }; | ||
| 87 | |||
| 88 | #define EARLY_PLATFORM_ID_UNSET -2 | ||
| 89 | #define EARLY_PLATFORM_ID_ERROR -3 | ||
| 90 | |||
| 91 | extern int early_platform_driver_register(struct early_platform_driver *epdrv, | ||
| 92 | char *buf); | ||
| 93 | extern void early_platform_add_devices(struct platform_device **devs, int num); | ||
| 94 | |||
| 95 | static inline int is_early_platform_device(struct platform_device *pdev) | ||
| 96 | { | ||
| 97 | return !pdev->dev.driver; | ||
| 98 | } | ||
| 99 | |||
| 100 | extern void early_platform_driver_register_all(char *class_str); | ||
| 101 | extern int early_platform_driver_probe(char *class_str, | ||
| 102 | int nr_probe, int user_only); | ||
| 103 | extern void early_platform_cleanup(void); | ||
| 104 | |||
| 105 | |||
| 106 | #ifndef MODULE | ||
| 107 | #define early_platform_init(class_string, platform_driver) \ | ||
| 108 | static __initdata struct early_platform_driver early_driver = { \ | ||
| 109 | .class_str = class_string, \ | ||
| 110 | .pdrv = platform_driver, \ | ||
| 111 | .requested_id = EARLY_PLATFORM_ID_UNSET, \ | ||
| 112 | }; \ | ||
| 113 | static int __init early_platform_driver_setup_func(char *buf) \ | ||
| 114 | { \ | ||
| 115 | return early_platform_driver_register(&early_driver, buf); \ | ||
| 116 | } \ | ||
| 117 | early_param(class_string, early_platform_driver_setup_func) | ||
| 118 | #else /* MODULE */ | ||
| 119 | #define early_platform_init(class_string, platform_driver) | ||
| 120 | #endif /* MODULE */ | ||
| 121 | |||
| 73 | #endif /* _PLATFORM_DEVICE_H_ */ | 122 | #endif /* _PLATFORM_DEVICE_H_ */ |
