diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2005-11-09 12:23:39 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-11-09 12:23:39 -0500 |
commit | 00d3dcdd96646be6059cc21f2efa94c4edc1eda5 (patch) | |
tree | 0e45a3e4cb62bbd45e6a9a117a78bd911f346dbe /include | |
parent | 330d57fb98a916fa8e1363846540dd420e99499a (diff) |
[DRIVER MODEL] Add platform_driver
Introduce struct platform_driver. This allows the platform device
driver methods to be passed a platform_device structure instead of
instead of a plain device structure, and therefore requiring casting
in every platform driver.
We introduce this in such a way that any existing platform drivers
registered directly via driver_register continue to work as before,
thereby allowing a gradual conversion to the new platform_driver
methods.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/platform_device.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h index 1a165b7ae01b..17e336f40b47 100644 --- a/include/linux/platform_device.h +++ b/include/linux/platform_device.h | |||
@@ -43,4 +43,19 @@ extern int platform_device_add_data(struct platform_device *pdev, void *data, si | |||
43 | extern int platform_device_add(struct platform_device *pdev); | 43 | extern int platform_device_add(struct platform_device *pdev); |
44 | extern void platform_device_put(struct platform_device *pdev); | 44 | extern void platform_device_put(struct platform_device *pdev); |
45 | 45 | ||
46 | struct platform_driver { | ||
47 | int (*probe)(struct platform_device *); | ||
48 | int (*remove)(struct platform_device *); | ||
49 | void (*shutdown)(struct platform_device *); | ||
50 | int (*suspend)(struct platform_device *, pm_message_t state); | ||
51 | int (*resume)(struct platform_device *); | ||
52 | struct device_driver driver; | ||
53 | }; | ||
54 | |||
55 | extern int platform_driver_register(struct platform_driver *); | ||
56 | extern void platform_driver_unregister(struct platform_driver *); | ||
57 | |||
58 | #define platform_get_drvdata(_dev) dev_get_drvdata(&(_dev)->dev) | ||
59 | #define platform_set_drvdata(_dev,data) dev_set_drvdata(&(_dev)->dev, (data)) | ||
60 | |||
46 | #endif /* _PLATFORM_DEVICE_H_ */ | 61 | #endif /* _PLATFORM_DEVICE_H_ */ |