From 7fa07e9f8c88a5a628b9ca8a843d3490a59fb9cb Mon Sep 17 00:00:00 2001 From: android Date: Mon, 25 Aug 2014 13:18:21 +0100 Subject: [PATCH 111/114] BCM2708_VCIO : Add automatic creation of device node --- arch/arm/mach-bcm2708/vcio.c | 12 +++++++++++- arch/arm/mach-bcm2709/vcio.c | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-bcm2708/vcio.c b/arch/arm/mach-bcm2708/vcio.c index 5e43e85..700bff4 100644 --- a/arch/arm/mach-bcm2708/vcio.c +++ b/arch/arm/mach-bcm2708/vcio.c @@ -61,7 +61,7 @@ #define MBOX_DATA28_LSB(msg) (((uint32_t)msg) >> 4) #define MBOX_MAGIC 0xd0d0c0de - +static struct class *vcio_class = NULL; struct vc_mailbox { struct device *dev; /* parent device */ void __iomem *status; @@ -421,6 +421,13 @@ static int bcm_vcio_probe(struct platform_device *pdev) "Failed registering the character device %d\n", ret); return ret; } + vcio_class = class_create(THIS_MODULE, BCM_VCIO_DRIVER_NAME); + if (IS_ERR(vcio_class)) { + ret = PTR_ERR(vcio_class); + return ret ; + } + device_create(vcio_class, NULL, MKDEV(MAJOR_NUM, 0), NULL, + "vcio"); } return ret; } @@ -462,6 +469,9 @@ static int __init bcm_mbox_init(void) static void __exit bcm_mbox_exit(void) { + device_destroy(vcio_class,MKDEV(MAJOR_NUM, 0)); + class_destroy(vcio_class); + unregister_chrdev(MAJOR_NUM, DEVICE_FILE_NAME); platform_driver_unregister(&bcm_mbox_driver); } diff --git a/arch/arm/mach-bcm2709/vcio.c b/arch/arm/mach-bcm2709/vcio.c index 5e43e85..700bff4 100644 --- a/arch/arm/mach-bcm2709/vcio.c +++ b/arch/arm/mach-bcm2709/vcio.c @@ -61,7 +61,7 @@ #define MBOX_DATA28_LSB(msg) (((uint32_t)msg) >> 4) #define MBOX_MAGIC 0xd0d0c0de - +static struct class *vcio_class = NULL; struct vc_mailbox { struct device *dev; /* parent device */ void __iomem *status; @@ -421,6 +421,13 @@ static int bcm_vcio_probe(struct platform_device *pdev) "Failed registering the character device %d\n", ret); return ret; } + vcio_class = class_create(THIS_MODULE, BCM_VCIO_DRIVER_NAME); + if (IS_ERR(vcio_class)) { + ret = PTR_ERR(vcio_class); + return ret ; + } + device_create(vcio_class, NULL, MKDEV(MAJOR_NUM, 0), NULL, + "vcio"); } return ret; } @@ -462,6 +469,9 @@ static int __init bcm_mbox_init(void) static void __exit bcm_mbox_exit(void) { + device_destroy(vcio_class,MKDEV(MAJOR_NUM, 0)); + class_destroy(vcio_class); + unregister_chrdev(MAJOR_NUM, DEVICE_FILE_NAME); platform_driver_unregister(&bcm_mbox_driver); } -- 1.8.3.2