| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
...
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The dev_attrs field of struct class is going away soon, dev_groups
should be used instead. This converts the extcon_class code to use the
correct field.
Cc: MyungJoo Ham <myungjoo.ham@samsung.com>
Acked-by: Chanwoo Choi<cw00.choi@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|/
|
|
|
|
|
|
|
|
| |
Added an API of_extcon_get_extcon_dev() to be used by drivers to get
extcon device in the case of dt boot (this can be used instead of
extcon_get_extcon_dev()).
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Calling dev_set_name with a single paramter causes it to be handled as a
format string. Many callers are passing potentially dynamic string
content, so use "%s" in those cases to avoid any potential accidents,
including wrappers like device_create*() and bdi_register().
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added EXPORT_SYMBOL_GPL() for extcon_register_interest and
extcon_register_notifier in order to avoid undefined reference
error when building the consumer modules of extcon as _modules_.
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
|
|
|
|
|
|
|
|
|
| |
This patch change permission from read/write to only read.
The specific process in the user-space couldn't change the state
of cable when cable is attached or detached.
- /sys/class/extcon/[devine name]/state
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
|
|
|
|
|
|
|
| |
Return the value obtained from the function extcon_register_interest
instead of -ENODEV.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are some scnearios where a driver/framework needs to register
interest for a particular cable without specifying the extcon device
name. One such scenario is charger notifications. The platform will
have charger cabel which will be bound to any extcon device. It's
not mandatory for the charger driver to know which extcon device
it should use. This patch enables the support for registering
interest for a cable just by cable name wihtout specifying the
extcon device name
Signed-off-by: Jenny TC <jenny.tc@intel.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Tested-by: Chanwoo Choi <cw00.choi@samsung.com>
--
Kernel-doc comment added by MyungJoo Ham
|
|
|
|
|
|
|
|
|
|
| |
There was a case where free and list_del can be called twice
on the same pointer.So fixed it by re-arranging the code and
removing a function which was not needed.
Signed-off-by: anish kumar <anish198519851985@gmail.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
|
|
|
|
|
| |
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
|
|
|
|
|
|
|
|
|
| |
Propagate the value returned from extcon_find_cable_index()
instead of -ENODEV. For readability, -EINVAL is returned in place of
the variable.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
|
|
|
|
|
|
|
|
|
| |
Since extcon registers this compat link at device registration
(extcon_dev_register), we should probably remove them at deregistration/cleanup.
Cc: stable@vger.kernel.org
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If you compile extcon with CONFIG_ANDROID and then load and unload the
module you get a simple oops as the driver does not unregister its
compat class and thus cannot register it again.
Full trace:
root@(none):~# modprobe extcon_class
root@(none):~# rmmod extcon_class
root@(none):~# modprobe extcon_class
------------[ cut here ]------------
WARNING: at fs/sysfs/dir.c:536 sysfs_add_one+0xde/0x100()
sysfs: cannot create duplicate filename '/class/switch'
Modules linked in: extcon_class(+) [last unloaded: extcon_class]
Call Trace:
9f451a00: [<602a58bc>] printk+0x0/0xa8
9f451a18: [<60039b43>] warn_slowpath_common+0x93/0xd0
9f451a28: [<6012c6de>] sysfs_add_one+0xde/0x100
9f451a50: [<601d3d90>] strcat+0x0/0x40
9f451a68: [<60039cdc>] warn_slowpath_fmt+0x9c/0xa0
9f451a90: [<6002fe32>] unblock_signals+0x0/0x84
9f451ab0: [<60039c40>] warn_slowpath_fmt+0x0/0xa0
9f451ac0: [<6002fe32>] unblock_signals+0x0/0x84
9f451ae8: [<6012bd97>] sysfs_pathname.isra.10+0x57/0x70
9f451b00: [<601d3d90>] strcat+0x0/0x40
9f451b18: [<6012bd97>] sysfs_pathname.isra.10+0x57/0x70
9f451b48: [<6012c6de>] sysfs_add_one+0xde/0x100
9f451b78: [<6012c96f>] create_dir+0x8f/0x100
9f451bc0: [<a0861000>] extcon_class_init+0x0/0x12 [extcon_class]
9f451bd8: [<6012cda6>] sysfs_create_dir+0xa6/0x1c0
9f451be8: [<601d89f1>] kvasprintf+0x81/0xa0
9f451bf8: [<601cf0f0>] kobject_get+0x0/0x50
9f451c18: [<601cf396>] kobject_add_internal+0x96/0x280
9f451c60: [<a0861000>] extcon_class_init+0x0/0x12 [extcon_class]
9f451c78: [<601cfb93>] kobject_add+0xd3/0x140
9f451cc0: [<601cfac0>] kobject_add+0x0/0x140
9f451cd0: [<6002fe32>] unblock_signals+0x0/0x84
9f451cf8: [<6002fffc>] set_signals+0x29/0x3f
9f451d28: [<600c1de1>] kmem_cache_alloc+0xe1/0x100
9f451d78: [<601cffa0>] kobject_create_and_add+0x50/0xa0
9f451da8: [<601fbe76>] class_compat_register+0x56/0x80
9f451dc8: [<a085d118>] create_extcon_class+0x88/0xd0 [extcon_class]
9f451de8: [<a0861010>] extcon_class_init+0x10/0x12 [extcon_class]
9f451df8: [<600189a8>] do_one_initcall+0x48/0x1f0
9f451e20: [<60061920>] blocking_notifier_call_chain+0x0/0x20
9f451e30: [<60061920>] blocking_notifier_call_chain+0x0/0x20
9f451e58: [<6007e3c3>] sys_init_module+0xa3/0x280
9f451e88: [<6001e2ad>] handle_syscall+0x8d/0x90
9f451ea8: [<60033370>] userspace+0x405/0x531
9f451ee8: [<6001e380>] copy_chunk_to_user+0x0/0x40
9f451ef8: [<6001e5cd>] do_op_one_page+0x14d/0x220
9f451fd8: [<6001a355>] fork_handler+0x95/0xa0
---[ end trace dd512cc03fe1c367 ]---
------------[ cut here ]------------
WARNING: at lib/kobject.c:196 kobject_add_internal+0x26e/0x280()
kobject_add_internal failed for switch with -EEXIST, don't try to
register things with the same name in the same directory.
Modules linked in: extcon_class(+) [last unloaded: extcon_class]
Call Trace:
9f451ad0: [<602a58bc>] printk+0x0/0xa8
9f451ae8: [<60039b43>] warn_slowpath_common+0x93/0xd0
9f451af8: [<601cf56e>] kobject_add_internal+0x26e/0x280
9f451b18: [<601cf140>] kobject_put+0x0/0x70
9f451b20: [<a0861000>] extcon_class_init+0x0/0x12 [extcon_class]
9f451b38: [<60039cdc>] warn_slowpath_fmt+0x9c/0xa0
9f451b88: [<60039c40>] warn_slowpath_fmt+0x0/0xa0
9f451bc0: [<a0861000>] extcon_class_init+0x0/0x12 [extcon_class]
9f451bd8: [<6012cda6>] sysfs_create_dir+0xa6/0x1c0
9f451be8: [<601d89f1>] kvasprintf+0x81/0xa0
9f451bf8: [<601cf0f0>] kobject_get+0x0/0x50
9f451c18: [<601cf56e>] kobject_add_internal+0x26e/0x280
9f451c60: [<a0861000>] extcon_class_init+0x0/0x12 [extcon_class]
9f451c78: [<601cfb93>] kobject_add+0xd3/0x140
9f451cc0: [<601cfac0>] kobject_add+0x0/0x140
9f451cd0: [<6002fe32>] unblock_signals+0x0/0x84
9f451cf8: [<6002fffc>] set_signals+0x29/0x3f
9f451d28: [<600c1de1>] kmem_cache_alloc+0xe1/0x100
9f451d78: [<601cffa0>] kobject_create_and_add+0x50/0xa0
9f451da8: [<601fbe76>] class_compat_register+0x56/0x80
9f451dc8: [<a085d118>] create_extcon_class+0x88/0xd0 [extcon_class]
9f451de8: [<a0861010>] extcon_class_init+0x10/0x12 [extcon_class]
9f451df8: [<600189a8>] do_one_initcall+0x48/0x1f0
9f451e20: [<60061920>] blocking_notifier_call_chain+0x0/0x20
9f451e30: [<60061920>] blocking_notifier_call_chain+0x0/0x20
9f451e58: [<6007e3c3>] sys_init_module+0xa3/0x280
9f451e88: [<6001e2ad>] handle_syscall+0x8d/0x90
9f451ea8: [<60033370>] userspace+0x405/0x531
9f451ee8: [<6001e380>] copy_chunk_to_user+0x0/0x40
9f451ef8: [<6001e5cd>] do_op_one_page+0x14d/0x220
9f451fd8: [<6001a355>] fork_handler+0x95/0xa0
---[ end trace dd512cc03fe1c368 ]---
kobject_create_and_add: kobject_add error: -17
------------[ cut here ]------------
WARNING: at drivers/extcon/extcon_class.c:545
create_extcon_class+0xbc/0xd0 [extcon_class]()
cannot allocate
Modules linked in: extcon_class(+) [last unloaded: extcon_class]
Call Trace:
9f451c80: [<602a58bc>] printk+0x0/0xa8
9f451c98: [<60039b43>] warn_slowpath_common+0x93/0xd0
9f451ca0: [<6002fe32>] unblock_signals+0x0/0x84
9f451ca8: [<a085d14c>] create_extcon_class+0xbc/0xd0 [extcon_class]
9f451cd0: [<a0861000>] extcon_class_init+0x0/0x12 [extcon_class]
9f451ce8: [<60039cdc>] warn_slowpath_fmt+0x9c/0xa0
9f451d20: [<6002fe32>] unblock_signals+0x0/0x84
9f451d28: [<60039c40>] warn_slowpath_fmt+0x0/0xa0
9f451d48: [<6002fffc>] set_signals+0x29/0x3f
9f451d58: [<601cf172>] kobject_put+0x32/0x70
9f451d78: [<600c22c3>] kfree+0xb3/0x100
9f451da8: [<601fbe9a>] class_compat_register+0x7a/0x80
9f451dc8: [<a085d14c>] create_extcon_class+0xbc/0xd0 [extcon_class]
9f451de8: [<a0861010>] extcon_class_init+0x10/0x12 [extcon_class]
9f451df8: [<600189a8>] do_one_initcall+0x48/0x1f0
9f451e20: [<60061920>] blocking_notifier_call_chain+0x0/0x20
9f451e30: [<60061920>] blocking_notifier_call_chain+0x0/0x20
9f451e58: [<6007e3c3>] sys_init_module+0xa3/0x280
9f451e88: [<6001e2ad>] handle_syscall+0x8d/0x90
9f451ea8: [<60033370>] userspace+0x405/0x531
9f451ee8: [<6001e380>] copy_chunk_to_user+0x0/0x40
9f451ef8: [<6001e5cd>] do_op_one_page+0x14d/0x220
9f451fd8: [<6001a355>] fork_handler+0x95/0xa0
---[ end trace dd512cc03fe1c369 ]---
FATAL: Error inserting extcon_class
(/lib/modules/3.6.0-rc6-00178-g811315f/kernel/drivers/extcon/extcon_class.ko):
Cannot allocate memory
This patch fixes this.
Cc: stable@vger.kernel.org
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
|
|
|
|
|
|
|
|
|
| |
Rather than re-inventing the wheel we can use the hamming function
to calculate the number of bits set to check for violation of
exclusivity.
Signed-off-by: anish kumar <anish198519851985@gmail.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With this change now individual drivers can use standard cable
names as below:
static const char *arizona_cable[] = {
extcon_cable_name[EXTCON_USB],
extcon_cable_name[EXTCON_USB_HOST],
"CUSTOM_CABLE"
NULL,
}
Signed-off-by: anish kumar <anish198519851985@gmail.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
|
|
|
|
|
|
| |
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
|
|
|
|
|
|
|
|
| |
The operation of lockdep requires that all dynamically allocated sysfs
nodes are initialised using sysfs_attr_init() otherwise lots of warnings
are generated. Ensure that all the dynamically allocated attributes that
extcon generates have this done.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
Replaced '_' with '-' in the extcon file names, which has been bogging
since new drivers have been using the standard naming.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|