diff options
Diffstat (limited to 'schulung_tools/drivers/modules')
| -rw-r--r-- | schulung_tools/drivers/modules/hellodriver/hello.c | 20 | ||||
| -rw-r--r-- | schulung_tools/drivers/modules/hellodriver/patch-add-sysfs.diff | 10 |
2 files changed, 22 insertions, 8 deletions
diff --git a/schulung_tools/drivers/modules/hellodriver/hello.c b/schulung_tools/drivers/modules/hellodriver/hello.c index caded6d..328c587 100644 --- a/schulung_tools/drivers/modules/hellodriver/hello.c +++ b/schulung_tools/drivers/modules/hellodriver/hello.c @@ -89,11 +89,15 @@ static int hello_probe(struct platform_device *pdev) return -ENOMEM; } +#ifdef CONFIG_OF ret = of_property_read_u32(pdev->dev.of_node, "index", &hello->minor); if (ret < 0) { dev_err(&pdev->dev, "no index specified\n"); goto err_out1; } +#else + hello->minor = (unsigned)pdev->id; +#endif if (hello->minor >= HELLO_MAX_DEVICES) { dev_err(&pdev->dev, "invalid index: %u\n", hello->minor); @@ -161,6 +165,10 @@ static struct platform_driver hello_driver = { .remove = hello_remove, }; +#ifndef CONFIG_OF +static struct platform_device *pdevs[3]; +#endif + static int __init hello_init(void) { int ret; @@ -182,6 +190,12 @@ static int __init hello_init(void) if (ret != 0) goto err_out2; +#ifndef CONFIG_OF + pdevs[0] = platform_device_register_simple("hello", 1, NULL, 0); + pdevs[1] = platform_device_register_simple("hello", 3, NULL, 0); + pdevs[2] = platform_device_register_simple("hello", 5, NULL, 0); +#endif + return 0; err_out2: @@ -195,6 +209,12 @@ static void __exit hello_exit(void) { printk(KERN_INFO "%s\n", __func__); +#ifndef CONFIG_OF + platform_device_unregister(pdevs[0]); + platform_device_unregister(pdevs[1]); + platform_device_unregister(pdevs[2]); +#endif + platform_driver_unregister(&hello_driver); class_destroy(hello_class); unregister_chrdev_region(hello_devt, HELLO_MAX_DEVICES); diff --git a/schulung_tools/drivers/modules/hellodriver/patch-add-sysfs.diff b/schulung_tools/drivers/modules/hellodriver/patch-add-sysfs.diff index 703b6e0..3e792fb 100644 --- a/schulung_tools/drivers/modules/hellodriver/patch-add-sysfs.diff +++ b/schulung_tools/drivers/modules/hellodriver/patch-add-sysfs.diff @@ -1,6 +1,6 @@ --- a/hello.c 2016-06-08 20:21:26.751180497 +0200 +++ b/hello.c 2016-06-08 20:19:31.655178050 +0200 -@@ -76,6 +76,30 @@ +@@ -76,6 +76,30 @@ static const struct file_operations hello_fops = { .write = hello_write, }; @@ -31,7 +31,7 @@ static int hello_probe(struct platform_device *pdev) { struct hello_dev *hello; -@@ -178,6 +202,8 @@ +@@ -186,6 +210,8 @@ static int __init hello_init(void) goto err_out1; } @@ -40,9 +40,3 @@ ret = platform_driver_register(&hello_driver); if (ret != 0) goto err_out2; -@@ -206,4 +232,4 @@ - MODULE_AUTHOR("John Ogness <john.ogness@linutronix.de>"); - MODULE_DESCRIPTION("a great module for hello-ing!"); - MODULE_LICENSE("GPL v2"); --MODULE_VERSION("20160607"); -+MODULE_VERSION("20160608"); |
