I.MAX6ULL字符设备驱动编写时,对应设备树节点的compatible属性未创建,开发板控制台输出警告信息
sysfs: cannot create duplicate filename ‘/devices/virtual/dtsled’
加载驱动时控制台输出
// 加载驱动时控制台输出信息
/lib/modules/4.1.15 # modprobe dtsled.ko
dtsled major is 0, minor is 0alphaled node has found!
read compatible failed!
dtsled major is 0, minor is 0
------------[ cut here ]------------
WARNING: CPU: 0 PID: 70 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x54/0x74()
sysfs: cannot create duplicate filename '/devices/virtual/dtsled'
Modules linked in: dtsled(O+)
CPU: 0 PID: 70 Comm: modprobe Tainted: G O 4.1.15 #1
Hardware name: Freescale i.MX6 Ultralite (Device Tree)
[<80015ed4>] (unwind_backtrace) from [<80012794>] (show_stack+0x10/0x14)
[<80012794>] (show_stack) from [<8069c438>] (dump_stack+0x80/0xc8)
[<8069c438>] (dump_stack) from [<8003824c>] (warn_slowpath_common+0x74/0xb0)
[<8003824c>] (warn_slowpath_common) from [<800382b8>] (warn_slowpath_fmt+0x30/0x40)
[<800382b8>] (warn_slowpath_fmt) from [<8014b774>] (sysfs_warn_dup+0x54/0x74)
[<8014b774>] (sysfs_warn_dup) from [<8014b860>] (sysfs_create_dir_ns+0x84/0x9c)
[<8014b860>] (sysfs_create_dir_ns) from [<802acea0>] (kobject_add_internal+0xa0/0x2d8)
[<802acea0>] (kobject_add_internal) from [<802ad2a0>] (kobject_add+0x4c/0x98)
[<802ad2a0>] (kobject_add) from [<8035988c>] (get_device_parent+0x110/0x178)
[<8035988c>] (get_device_parent) from [<80359cac>] (device_add+0xb4/0x568)
[<80359cac>] (device_add) from [<8035a2e8>] (device_create_groups_vargs+0xa4/0xc0)
[<8035a2e8>] (device_create_groups_vargs) from [<8035a350>] (device_create+0x24/0x2c)
[<8035a350>] (device_create) from [<7f0060bc>] (dtsled_init+0xbc/0x224 [dtsled])
[<7f0060bc>] (dtsled_init [dtsled]) from [<80009704>] (do_one_initcall+0x80/0x1d8)
[<80009704>] (do_one_initcall) from [<8069a324>] (do_init_module+0x58/0x1a8)
[<8069a324>] (do_init_module) from [<80095e48>] (load_module+0x165c/0x1d48)
[<80095e48>] (load_module) from [<80096600>] (SyS_init_module+0xcc/0x124)
[<80096600>] (SyS_init_module) from [<8000f500>] (ret_fast_syscall+0x0/0x3c)
---[ end trace 7181a596a3ba7bee ]---
------------[ cut here ]------------
WARNING: CPU: 0 PID: 70 at lib/kobject.c:240 kobject_add_internal+0x25c/0x2d8()
kobject_add_internal failed for dtsled with -EEXIST, don't try to register things with the same name in the same directory.
Modules linked in: dtsled(O+)
CPU: 0 PID: 70 Comm: modprobe Tainted: G W O 4.1.15 #1
Hardware name: Freescale i.MX6 Ultralite (Device Tree)
[<80015ed4>] (unwind_backtrace) from [<80012794>] (show_stack+0x10/0x14)
[<80012794>] (show_stack) from [<8069c438>] (dump_stack+0x80/0xc8)
[<8069c438>] (dump_stack) from [<8003824c>] (warn_slowpath_common+0x74/0xb0)
[<8003824c>] (warn_slowpath_common) from [<800382b8>] (warn_slowpath_fmt+0x30/0x40)
[<800382b8>] (warn_slowpath_fmt) from [<802ad05c>] (kobject_add_internal+0x25c/0x2d8)
[<802ad05c>] (kobject_add_internal) from [<802ad2a0>] (kobject_add+0x4c/0x98)
[<802ad2a0>] (kobject_add) from [<8035988c>] (get_device_parent+0x110/0x178)
[<8035988c>] (get_device_parent) from [<80359cac>] (device_add+0xb4/0x568)
[<80359cac>] (device_add) from [<8035a2e8>] (device_create_groups_vargs+0xa4/0xc0)
[<8035a2e8>] (device_create_groups_vargs) from [<8035a350>] (device_create+0x24/0x2c)
[<8035a350>] (device_create) from [<7f0060bc>] (dtsled_init+0xbc/0x224 [dtsled])
[<7f0060bc>] (dtsled_init [dtsled]) from [<80009704>] (do_one_initcall+0x80/0x1d8)
[<80009704>] (do_one_initcall) from [<8069a324>] (do_init_module+0x58/0x1a8)
[<8069a324>] (do_init_module) from [<80095e48>] (load_module+0x165c/0x1d48)
[<80095e48>] (load_module) from [<80096600>] (SyS_init_module+0xcc/0x124)
[<80096600>] (SyS_init_module) from [<8000f500>] (ret_fast_syscall+0x0/0x3c)
---[ end trace 7181a596a3ba7bef ]---
------------[ cut here ]------------
WARNING: CPU: 0 PID: 70 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x54/0x74()
sysfs: cannot create duplicate filename '/dev/char/249:0'
Modules linked in: dtsled(O+)
CPU: 0 PID: 70 Comm: modprobe Tainted: G W O 4.1.15 #1
Hardware name: Freescale i.MX6 Ultralite (Device Tree)
[<80015ed4>] (unwind_backtrace) from [<80012794>] (show_stack+0x10/0x14)
[<80012794>] (show_stack) from [<8069c438>] (dump_stack+0x80/0xc8)
[<8069c438>] (dump_stack) from [<8003824c>] (warn_slowpath_common+0x74/0xb0)
[<8003824c>] (warn_slowpath_common) from [<800382b8>] (warn_slowpath_fmt+0x30/0x40)
[<800382b8>] (warn_slowpath_fmt) from [<8014b774>] (sysfs_warn_dup+0x54/0x74)
[<8014b774>] (sysfs_warn_dup) from [<8014bac8>] (sysfs_do_create_link_sd+0xa8/0xb4)
[<8014bac8>] (sysfs_do_create_link_sd) from [<8035a0a4>] (device_add+0x4ac/0x568)
[<8035a0a4>] (device_add) from [<8035a2e8>] (device_create_groups_vargs+0xa4/0xc0)
[<8035a2e8>] (device_create_groups_vargs) from [<8035a350>] (device_create+0x24/0x2c)
[<8035a350>] (device_create) from [<7f0060bc>] (dtsled_init+0xbc/0x224 [dtsled])
[<7f0060bc>] (dtsled_init [dtsled]) from [<80009704>] (do_one_initcall+0x80/0x1d8)
[<80009704>] (do_one_initcall) from [<8069a324>] (do_init_module+0x58/0x1a8)
[<8069a324>] (do_init_module) from [<80095e48>] (load_module+0x165c/0x1d48)
[<80095e48>] (load_module) from [<80096600>] (SyS_init_module+0xcc/0x124)
[<80096600>] (SyS_init_module) from [<8000f500>] (ret_fast_syscall+0x0/0x3c)
---[ end trace 7181a596a3ba7bf0 ]---
设备树添加compatible属性后控制台输出,无警告信息,正常!
/lib/modules/4.1.15 # modprobe dtsled.ko
dtsled major is 0, minor is 0alphaled node has found!
compatible is aotm,74hc595status is okay0x20c406c 0x4 0x20e0068 0x4 0x20e02f4 0x4 0x209c000 0x4 0x209c004 0x4