]> code.ossystems Code Review - meta-freescale.git/commitdiff
linux-imx (2.6.35.3): fix multiple w1 masters use
authorOtavio Salvador <otavio@ossystems.com.br>
Mon, 28 May 2012 20:50:34 +0000 (17:50 -0300)
committerOtavio Salvador <otavio@ossystems.com.br>
Mon, 28 May 2012 20:50:34 +0000 (17:50 -0300)
This patch has been backport from 3.2 kernel and allow the use of
multiple w1 masters at same time.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
meta-fsl-arm/recipes-kernel/linux/linux-imx-2.6.35.3/w1-fix-support-multiple-master.patch [new file with mode: 0644]
meta-fsl-arm/recipes-kernel/linux/linux-imx_2.6.35.3.bb

diff --git a/meta-fsl-arm/recipes-kernel/linux/linux-imx-2.6.35.3/w1-fix-support-multiple-master.patch b/meta-fsl-arm/recipes-kernel/linux/linux-imx-2.6.35.3/w1-fix-support-multiple-master.patch
new file mode 100644 (file)
index 0000000..9ed730b
--- /dev/null
@@ -0,0 +1,79 @@
+drivers/w1/w1_int.c: multiple masters used same init_name
+
+When using multiple masters, w1_int.c would use the .init_name from w1.c
+for all entities, which will fail when creating a corresponding sysfs
+entry.  This patch uses the unique name previously generated.
+
+  WARNING: at fs/sysfs/dir.c:451 sysfs_add_one+0x48/0x64()
+  sysfs: cannot create duplicate filename '/devices/w1 bus master'
+  Modules linked in:
+  Call trace:
+   [<9001a604>] warn_slowpath_common+0x34/0x44
+   [<9001a64c>] warn_slowpath_fmt+0x14/0x18
+   [<90078020>] sysfs_add_one+0x48/0x64
+   [<900784ec>] create_dir+0x40/0x68
+   [<9007857a>] sysfs_create_dir+0x66/0x78
+   [<900c1a8a>] kobject_add_internal+0x6e/0x104
+   [<900c1bc0>] kobject_add_varg+0x20/0x2c
+   [<900c1c1c>] kobject_add+0x30/0x3c
+   [<900dbd66>] device_add+0x6a/0x378
+   [<900dbb4a>] device_initialize+0x12/0x48
+   [<900dc080>] device_register+0xc/0x10
+   [<900f99be>] w1_add_master_device+0x162/0x274
+   [<90008e7a>] w1_gpio_probe+0x66/0xb4
+   [<9000030c>] kernel_init+0x0/0xe8
+   [<900dde54>] platform_drv_probe+0xc/0xe
+   [<9000030c>] kernel_init+0x0/0xe8
+   [<900dd4f8>] driver_probe_device+0x6c/0xdc
+   [<900dd5fc>] __driver_attach+0x34/0x48
+   [<900dcce8>] bus_for_each_dev+0x2c/0x48
+   [<900dd5c8>] __driver_attach+0x0/0x48
+   [<900dd38c>] driver_attach+0x10/0x14
+   [<900dd16a>] bus_add_driver+0x6a/0x18c
+   [<900dd768>] driver_register+0x60/0xb8
+   [<90011594>] __initcall_w1_therm_init6+0x0/0x4
+   [<90008e00>] w1_gpio_init+0x0/0x14
+   [<9000030c>] kernel_init+0x0/0xe8
+   [<900ddf48>] platform_driver_register+0x30/0x38
+   [<90011594>] __initcall_w1_therm_init6+0x0/0x4
+   [<90008e00>] w1_gpio_init+0x0/0x14
+   [<9000030c>] kernel_init+0x0/0xe8
+   [<900ddf5e>] platform_driver_probe+0xe/0x3c
+   [<90008e0c>] w1_gpio_init+0xc/0x14
+   [<90011594>] __initcall_w1_therm_init6+0x0/0x4
+   [<90008e00>] w1_gpio_init+0x0/0x14
+   [<900126d4>] do_one_initcall+0x34/0x130
+   [<90000372>] kernel_init+0x66/0xe8
+   [<90011594>] __initcall_w1_therm_init6+0x0/0x4
+   [<9001ca3e>] do_exit+0x0/0x3a6
+   [<9000030c>] kernel_init+0x0/0xe8
+   [<9001ca3e>] do_exit+0x0/0x3a6
+
+  ---[ end trace 5a9233884fead918 ]---
+  kobject_add_internal failed for w1 bus master with -EEXIST, don't try to register things with the same name in the same directory.
+
+Upstream-Status: Backport [3.2]
+
+Signed-off-by: Florian Faber <faber@faberman.de>
+Cc: Evgeniy Polyakov <zbr@ioremap.net>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+---
+ drivers/w1/w1_int.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/w1/w1_int.c b/drivers/w1/w1_int.c
+index d220bce..f79e62e 100644
+--- a/drivers/w1/w1_int.c
++++ b/drivers/w1/w1_int.c
+@@ -78,6 +78,7 @@ static struct w1_master * w1_alloc_dev(u32 id, int slave_count, int slave_ttl,
+       memcpy(&dev->dev, device, sizeof(struct device));
+       dev_set_name(&dev->dev, "w1_bus_master%u", dev->id);
+       snprintf(dev->name, sizeof(dev->name), "w1_bus_master%u", dev->id);
++      dev->dev.init_name = dev->name;
+       dev->driver = driver;
+-- 
+1.7.10
+
index 1f4a453a2418ee63e57703139356f766e5b2ed2e..6c8822f6c6609bd0cf27d02eab0ffa12fedef574 100644 (file)
@@ -4,7 +4,7 @@
 DESCRIPTION = "Linux kernel for imx platforms"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
-PR = "r17"
+PR = "r18"
 
 inherit kernel
 COMPATIBLE_MACHINE = "(mxs|mx5)"
@@ -30,6 +30,7 @@ SRC_URI = "git://git.freescale.com/imx/linux-2.6-imx.git;tag=rel_imx_2.6.35_11.0
            file://no-unaligned-access.patch \
            file://mx28-removecpufreq.patch \
            file://mxs-duart-use-ttyAMA-for-device-name.patch \
+           file://w1-fix-support-multiple-master.patch \
            file://0001-mx53_loco-add-USR-led-support.patch \
            file://001_Add_accept4_syscall.patch \
            file://002_Return_ERESTARTSYS_from_IPU_GET_EVENT.patch \