diff options
Diffstat (limited to 'schulung_tools/drivers/patch-kernel-hello.diff')
| -rw-r--r-- | schulung_tools/drivers/patch-kernel-hello.diff | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/schulung_tools/drivers/patch-kernel-hello.diff b/schulung_tools/drivers/patch-kernel-hello.diff index ab2949c..d3605c4 100644 --- a/schulung_tools/drivers/patch-kernel-hello.diff +++ b/schulung_tools/drivers/patch-kernel-hello.diff @@ -1,7 +1,7 @@ diff -urNp a/drivers/char/hello.c b/drivers/char/hello.c --- a/drivers/char/hello.c 1970-01-01 01:00:00.000000000 +0100 +++ b/drivers/char/hello.c 2016-06-08 20:46:01.991211855 +0200 -@@ -0,0 +1,235 @@ +@@ -0,0 +1,255 @@ +#include <linux/init.h> +#include <linux/module.h> +#include <linux/fs.h> @@ -117,11 +117,15 @@ diff -urNp a/drivers/char/hello.c b/drivers/char/hello.c + 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); @@ -189,6 +193,10 @@ diff -urNp a/drivers/char/hello.c b/drivers/char/hello.c + .remove = hello_remove, +}; + ++#ifndef CONFIG_OF ++static struct platform_device *pdevs[3]; ++#endif ++ +static int __init hello_init(void) +{ + int ret; @@ -212,6 +220,12 @@ diff -urNp a/drivers/char/hello.c b/drivers/char/hello.c + 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: @@ -225,6 +239,12 @@ diff -urNp a/drivers/char/hello.c b/drivers/char/hello.c +{ + 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); @@ -236,7 +256,7 @@ diff -urNp a/drivers/char/hello.c b/drivers/char/hello.c +MODULE_AUTHOR("John Ogness <john.ogness@linutronix.de>"); +MODULE_DESCRIPTION("a great module for hello-ing!"); +MODULE_LICENSE("GPL v2"); -+MODULE_VERSION("20160608"); ++MODULE_VERSION("20160607"); diff -urNp a/drivers/char/Kconfig b/drivers/char/Kconfig --- a/drivers/char/Kconfig 2016-05-16 00:43:13.000000000 +0200 +++ b/drivers/char/Kconfig 2016-06-08 20:41:14.047205734 +0200 |
