lkmpg/examples/devicemodel.c
Jim Huang faf3aa7c22 Make each source file more consistent
It is vital to denote the file name and summary for each source,
otherwise readers could not figure out the corresponding files.
2021-07-22 11:25:32 +08:00

99 lines
2.0 KiB
C

/*
* devicemodel.c
*/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/platform_device.h>
struct devicemodel_data {
char *greeting;
int number;
};
static int devicemodel_probe(struct platform_device *dev)
{
struct devicemodel_data *pd =
(struct devicemodel_data *) (dev->dev.platform_data);
pr_info("devicemodel probe\n");
pr_info("devicemodel greeting: %s; %d\n", pd->greeting, pd->number);
/* Your device initialisation code */
return 0;
}
static int devicemodel_remove(struct platform_device *dev)
{
pr_info("devicemodel example removed\n");
/* Your device removal code */
return 0;
}
static int devicemodel_suspend(struct device *dev)
{
pr_info("devicemodel example suspend\n");
/* Your device suspend code */
return 0;
}
static int devicemodel_resume(struct device *dev)
{
pr_info("devicemodel example resume\n");
/* Your device resume code */
return 0;
}
static const struct dev_pm_ops devicemodel_pm_ops = {
.suspend = devicemodel_suspend,
.resume = devicemodel_resume,
.poweroff = devicemodel_suspend,
.freeze = devicemodel_suspend,
.thaw = devicemodel_resume,
.restore = devicemodel_resume};
static struct platform_driver devicemodel_driver = {
.driver =
{
.name = "devicemodel_example",
.owner = THIS_MODULE,
.pm = &devicemodel_pm_ops,
},
.probe = devicemodel_probe,
.remove = devicemodel_remove,
};
static int devicemodel_init(void)
{
int ret;
pr_info("devicemodel init\n");
ret = platform_driver_register(&devicemodel_driver);
if (ret) {
pr_err("Unable to register driver\n");
return ret;
}
return 0;
}
static void devicemodel_exit(void)
{
pr_info("devicemodel exit\n");
platform_driver_unregister(&devicemodel_driver);
}
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Linux Device Model example");
module_init(devicemodel_init);
module_exit(devicemodel_exit);