diff options
author | Hansjoerg Lipp <hjlipp@web.de> | 2006-04-22 12:43:00 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-06-21 15:40:47 -0400 |
commit | 3dda4e373c7474cfe280f4270b70c1563f92a2a7 (patch) | |
tree | b38e2c22056859de773ef8e47b059f53a52d0215 /drivers/isdn/gigaset/proc.c | |
parent | 1cdcb6b43fda7424b7435dac8f80b2b5d8a48899 (diff) |
[PATCH] i4l gigaset: move sysfs entry to tty class device
Using the class device pointer returned by tty_register_device() with
part 1 of the patch, attach the Gigaset drivers' "cidmode" sysfs entry
to its tty class device, where it can be found more easily by users
who do not know nor care which USB port the device is attached to.
Signed-off-by: Hansjoerg Lipp <hjlipp@web.de>
Signed-off-by: Tilman Schmidt <tilman@imap.cc>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/isdn/gigaset/proc.c')
-rw-r--r-- | drivers/isdn/gigaset/proc.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/drivers/isdn/gigaset/proc.c b/drivers/isdn/gigaset/proc.c index d267a636b53c..9ae3a7f3e7b3 100644 --- a/drivers/isdn/gigaset/proc.c +++ b/drivers/isdn/gigaset/proc.c | |||
@@ -16,12 +16,11 @@ | |||
16 | #include "gigaset.h" | 16 | #include "gigaset.h" |
17 | #include <linux/ctype.h> | 17 | #include <linux/ctype.h> |
18 | 18 | ||
19 | static ssize_t show_cidmode(struct device *dev, struct device_attribute *attr, | 19 | static ssize_t show_cidmode(struct class_device *class, char *buf) |
20 | char *buf) | ||
21 | { | 20 | { |
22 | int ret; | 21 | int ret; |
23 | unsigned long flags; | 22 | unsigned long flags; |
24 | struct cardstate *cs = dev_get_drvdata(dev); | 23 | struct cardstate *cs = class_get_devdata(class); |
25 | 24 | ||
26 | spin_lock_irqsave(&cs->lock, flags); | 25 | spin_lock_irqsave(&cs->lock, flags); |
27 | ret = sprintf(buf, "%u\n", cs->cidmode); | 26 | ret = sprintf(buf, "%u\n", cs->cidmode); |
@@ -30,10 +29,10 @@ static ssize_t show_cidmode(struct device *dev, struct device_attribute *attr, | |||
30 | return ret; | 29 | return ret; |
31 | } | 30 | } |
32 | 31 | ||
33 | static ssize_t set_cidmode(struct device *dev, struct device_attribute *attr, | 32 | static ssize_t set_cidmode(struct class_device *class, |
34 | const char *buf, size_t count) | 33 | const char *buf, size_t count) |
35 | { | 34 | { |
36 | struct cardstate *cs = dev_get_drvdata(dev); | 35 | struct cardstate *cs = class_get_devdata(class); |
37 | long int value; | 36 | long int value; |
38 | char *end; | 37 | char *end; |
39 | 38 | ||
@@ -65,18 +64,24 @@ static ssize_t set_cidmode(struct device *dev, struct device_attribute *attr, | |||
65 | return count; | 64 | return count; |
66 | } | 65 | } |
67 | 66 | ||
68 | static DEVICE_ATTR(cidmode, S_IRUGO|S_IWUSR, show_cidmode, set_cidmode); | 67 | static CLASS_DEVICE_ATTR(cidmode, S_IRUGO|S_IWUSR, show_cidmode, set_cidmode); |
69 | 68 | ||
70 | /* free sysfs for device */ | 69 | /* free sysfs for device */ |
71 | void gigaset_free_dev_sysfs(struct cardstate *cs) | 70 | void gigaset_free_dev_sysfs(struct cardstate *cs) |
72 | { | 71 | { |
72 | if (!cs->class) | ||
73 | return; | ||
74 | |||
73 | gig_dbg(DEBUG_INIT, "removing sysfs entries"); | 75 | gig_dbg(DEBUG_INIT, "removing sysfs entries"); |
74 | device_remove_file(cs->dev, &dev_attr_cidmode); | 76 | class_device_remove_file(cs->class, &class_device_attr_cidmode); |
75 | } | 77 | } |
76 | 78 | ||
77 | /* initialize sysfs for device */ | 79 | /* initialize sysfs for device */ |
78 | void gigaset_init_dev_sysfs(struct cardstate *cs) | 80 | void gigaset_init_dev_sysfs(struct cardstate *cs) |
79 | { | 81 | { |
82 | if (!cs->class) | ||
83 | return; | ||
84 | |||
80 | gig_dbg(DEBUG_INIT, "setting up sysfs"); | 85 | gig_dbg(DEBUG_INIT, "setting up sysfs"); |
81 | device_create_file(cs->dev, &dev_attr_cidmode); | 86 | class_device_create_file(cs->class, &class_device_attr_cidmode); |
82 | } | 87 | } |