diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-03 14:37:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-03 14:37:15 -0400 |
commit | 542a086ac72fb193cbc1b996963a572269e57743 (patch) | |
tree | b137c08037cca4ffc8a156a891a01113b3b8edce /drivers/extcon | |
parent | 1d1fdd95df681f0c065d90ffaafa215a0e8825e2 (diff) | |
parent | 1eeeef153c02f5856ec109fa532eb5f31c39f85c (diff) |
Merge tag 'driver-core-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core patches from Greg KH:
"Here's the big driver core pull request for 3.12-rc1.
Lots of tiny changes here fixing up the way sysfs attributes are
created, to try to make drivers simpler, and fix a whole class race
conditions with creations of device attributes after the device was
announced to userspace.
All the various pieces are acked by the different subsystem
maintainers"
* tag 'driver-core-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (119 commits)
firmware loader: fix pending_fw_head list corruption
drivers/base/memory.c: introduce help macro to_memory_block
dynamic debug: line queries failing due to uninitialized local variable
sysfs: sysfs_create_groups returns a value.
debugfs: provide debugfs_create_x64() when disabled
rbd: convert bus code to use bus_groups
firmware: dcdbas: use binary attribute groups
sysfs: add sysfs_create/remove_groups for when SYSFS is not enabled
driver core: add #include <linux/sysfs.h> to core files.
HID: convert bus code to use dev_groups
Input: serio: convert bus code to use drv_groups
Input: gameport: convert bus code to use drv_groups
driver core: firmware: use __ATTR_RW()
driver core: core: use DEVICE_ATTR_RO
driver core: bus: use DRIVER_ATTR_WO()
driver core: create write-only attribute macros for devices and drivers
sysfs: create __ATTR_WO()
driver-core: platform: convert bus code to use dev_groups
workqueue: convert bus code to use dev_groups
MEI: convert bus code to use dev_groups
...
Diffstat (limited to 'drivers/extcon')
-rw-r--r-- | drivers/extcon/extcon-class.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/extcon/extcon-class.c b/drivers/extcon/extcon-class.c index 1446152bf2e9..148382faded9 100644 --- a/drivers/extcon/extcon-class.c +++ b/drivers/extcon/extcon-class.c | |||
@@ -148,6 +148,7 @@ static ssize_t state_store(struct device *dev, struct device_attribute *attr, | |||
148 | 148 | ||
149 | return count; | 149 | return count; |
150 | } | 150 | } |
151 | static DEVICE_ATTR_RW(state); | ||
151 | 152 | ||
152 | static ssize_t name_show(struct device *dev, struct device_attribute *attr, | 153 | static ssize_t name_show(struct device *dev, struct device_attribute *attr, |
153 | char *buf) | 154 | char *buf) |
@@ -163,6 +164,7 @@ static ssize_t name_show(struct device *dev, struct device_attribute *attr, | |||
163 | 164 | ||
164 | return sprintf(buf, "%s\n", dev_name(edev->dev)); | 165 | return sprintf(buf, "%s\n", dev_name(edev->dev)); |
165 | } | 166 | } |
167 | static DEVICE_ATTR_RO(name); | ||
166 | 168 | ||
167 | static ssize_t cable_name_show(struct device *dev, | 169 | static ssize_t cable_name_show(struct device *dev, |
168 | struct device_attribute *attr, char *buf) | 170 | struct device_attribute *attr, char *buf) |
@@ -527,11 +529,12 @@ int extcon_unregister_notifier(struct extcon_dev *edev, | |||
527 | } | 529 | } |
528 | EXPORT_SYMBOL_GPL(extcon_unregister_notifier); | 530 | EXPORT_SYMBOL_GPL(extcon_unregister_notifier); |
529 | 531 | ||
530 | static struct device_attribute extcon_attrs[] = { | 532 | static struct attribute *extcon_attrs[] = { |
531 | __ATTR(state, S_IRUGO | S_IWUSR, state_show, state_store), | 533 | &dev_attr_state.attr, |
532 | __ATTR_RO(name), | 534 | &dev_attr_name.attr, |
533 | __ATTR_NULL, | 535 | NULL, |
534 | }; | 536 | }; |
537 | ATTRIBUTE_GROUPS(extcon); | ||
535 | 538 | ||
536 | static int create_extcon_class(void) | 539 | static int create_extcon_class(void) |
537 | { | 540 | { |
@@ -539,7 +542,7 @@ static int create_extcon_class(void) | |||
539 | extcon_class = class_create(THIS_MODULE, "extcon"); | 542 | extcon_class = class_create(THIS_MODULE, "extcon"); |
540 | if (IS_ERR(extcon_class)) | 543 | if (IS_ERR(extcon_class)) |
541 | return PTR_ERR(extcon_class); | 544 | return PTR_ERR(extcon_class); |
542 | extcon_class->dev_attrs = extcon_attrs; | 545 | extcon_class->dev_groups = extcon_groups; |
543 | 546 | ||
544 | #if defined(CONFIG_ANDROID) | 547 | #if defined(CONFIG_ANDROID) |
545 | switch_class = class_compat_register("switch"); | 548 | switch_class = class_compat_register("switch"); |