使用aw2013控制led等,驱动加载错误信息: [ 8.018702] ------------[ cut here ]------------ [ 8.018715] WARNING: CPU: 5 PID: 1 at /home/chenky/trunk/kernel/msm-3.18/fs/sysfs/dir.c:31 sysfs_warn_dup+0x68/0x80() [ 8.018718] sysfs: cannot create duplicate filename '/class/leds/red' [ 8.018723] Modules linked in: [ 8.018730] CPU: 5 PID: 1 Comm: swapper/0 Tainted: G W 3.18.31-perf-svn224 #3 [ 8.018733] Hardware name: Qualcomm Technologies, Inc. MSM8937-PMI8937 QRD SKU2 (DT) [ 8.018735] Call trace: [ 8.018743] [] dump_backtrace+0x0/0x23c [ 8.018749] [] show_stack+0x14/0x1c [ 8.018756] [] dump_stack+0x80/0xa4 [ 8.018763] [] warn_slowpath_common+0x8c/0xb0 [ 8.018769] [] warn_slowpath_fmt+0x60/0x80 [ 8.018775] [] sysfs_warn_dup+0x68/0x80 [ 8.018781] [] sysfs_do_create_link_sd.isra.2+0x9c/0xb4 [ 8.018786] [] sysfs_create_link+0x34/0x3c [ 8.018793] [] device_add+0x248/0x56c [ 8.018797] [] device_create_groups_vargs+0xb0/0xf4 [ 8.018802] [] device_create_with_groups+0x5c/0x7c [ 8.018809] [] led_classdev_register+0x40/0x124 [ 8.018815] [] aw2013_led_probe+0x35c/0x5e8 [ 8.018822] [] i2c_device_probe+0xb8/0xec [ 8.018827] [] driver_probe_device+0xd8/0x224 [ 8.018832] [] __driver_attach+0x64/0x90 [ 8.018838] [] bus_for_each_dev+0x80/0xb0 [ 8.018843] [] driver_attach+0x20/0x28 [ 8.018847] [] bus_add_driver+0xfc/0x1cc [ 8.018852] [] driver_register+0x94/0xe0 [ 8.018857] [] i2c_register_driver+0x4c/0xac [ 8.018863] [] aw2013_led_init+0x18/0x20 [ 8.018868] [] do_one_initcall+0x18c/0x1a8 [ 8.018876] [] kernel_init_freeable+0x148/0x1e4 [ 8.018881] [] kernel_init+0x14/0xd8 [ 8.018884] ---[ end trace 9564add2166cd02a ]--- [ 8.018918] aw2013_led 5-0045: unable to register led 0,rc=-17 [ 8.018924] aw2013_led 5-0045: parsed node error [ 8.018934] aw2013_led: probe of 5-0045 failed with error -17 rc=-17这个值是由led_classdev_register()--->device_create_with_groups()时,PTR_ERR(led_cdev->dev)的返回值
错误码在kernel\msm-3.18\include\uapi\asm-generic\errno-base.h中有定义
#define EPERM 1 /* Operation not permitted /
#define ENOENT 2 / No such file or directory /
…
#define EEXIST 17 / File exists /
#define EXDEV 18 / Cross-device link */
比如17对应EEXIST,也就是文件已经存在,我们进入/sys/class/leds,ls -l
可见qpnp-smbcharger驱动已经注册了red,但我们实际产品不是用pmi芯片默认的 CHG_LED pin脚来控制led,而是使用aw2013,所以注释掉msm8937-pmi8937-qrd-sku2.dtsi下面相关的
&pmi8937_charger {
qcom,battery-data = <&qrd_batterydata>;
qcom,float-voltage-mv = <4200>;
qcom,chg-led-sw-controls;
//qcom,chg-led-support;//kandi mark
注视掉qcom,chg-led-support;