Commit f7f22d4d authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

add sysfs support for vc devices.

parent 5f74be2d
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <linux/kbd_kern.h> #include <linux/kbd_kern.h>
#include <linux/console.h> #include <linux/console.h>
#include <linux/smp_lock.h> #include <linux/smp_lock.h>
#include <linux/device.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/byteorder.h> #include <asm/byteorder.h>
#include <asm/unaligned.h> #include <asm/unaligned.h>
...@@ -469,6 +470,8 @@ static struct file_operations vcs_fops = { ...@@ -469,6 +470,8 @@ static struct file_operations vcs_fops = {
.open = vcs_open, .open = vcs_open,
}; };
static struct class_simple *vc_class;
void vcs_make_devfs(struct tty_struct *tty) void vcs_make_devfs(struct tty_struct *tty)
{ {
devfs_mk_cdev(MKDEV(VCS_MAJOR, tty->index + 1), devfs_mk_cdev(MKDEV(VCS_MAJOR, tty->index + 1),
...@@ -477,19 +480,26 @@ void vcs_make_devfs(struct tty_struct *tty) ...@@ -477,19 +480,26 @@ void vcs_make_devfs(struct tty_struct *tty)
devfs_mk_cdev(MKDEV(VCS_MAJOR, tty->index + 129), devfs_mk_cdev(MKDEV(VCS_MAJOR, tty->index + 129),
S_IFCHR|S_IRUSR|S_IWUSR, S_IFCHR|S_IRUSR|S_IWUSR,
"vcc/a%u", tty->index + 1); "vcc/a%u", tty->index + 1);
class_simple_device_add(vc_class, MKDEV(VCS_MAJOR, tty->index + 1), NULL, "vcs%u", tty->index + 1);
class_simple_device_add(vc_class, MKDEV(VCS_MAJOR, tty->index + 129), NULL, "vcsa%u", tty->index + 1);
} }
void vcs_remove_devfs(struct tty_struct *tty) void vcs_remove_devfs(struct tty_struct *tty)
{ {
devfs_remove("vcc/%u", tty->index + 1); devfs_remove("vcc/%u", tty->index + 1);
devfs_remove("vcc/a%u", tty->index + 1); devfs_remove("vcc/a%u", tty->index + 1);
class_simple_device_remove(MKDEV(VCS_MAJOR, tty->index + 1));
class_simple_device_remove(MKDEV(VCS_MAJOR, tty->index + 129));
} }
int __init vcs_init(void) int __init vcs_init(void)
{ {
if (register_chrdev(VCS_MAJOR, "vcs", &vcs_fops)) if (register_chrdev(VCS_MAJOR, "vcs", &vcs_fops))
panic("unable to get major %d for vcs device", VCS_MAJOR); panic("unable to get major %d for vcs device", VCS_MAJOR);
vc_class = class_simple_create(THIS_MODULE, "vc");
devfs_mk_cdev(MKDEV(VCS_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/0"); devfs_mk_cdev(MKDEV(VCS_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/0");
devfs_mk_cdev(MKDEV(VCS_MAJOR, 128), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/a0"); devfs_mk_cdev(MKDEV(VCS_MAJOR, 128), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/a0");
class_simple_device_add(vc_class, MKDEV(VCS_MAJOR, 0), NULL, "vcs");
class_simple_device_add(vc_class, MKDEV(VCS_MAJOR, 128), NULL, "vcsa");
return 0; return 0;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment