From 1ce8d63e3fb2168e64dd73cc8872c50ddefcb0e9 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Mon, 28 May 2012 17:50:34 -0300 Subject: [PATCH] linux-imx (2.6.35.3): fix multiple w1 masters use 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 --- .../w1-fix-support-multiple-master.patch | 79 +++++++++++++++++++ .../linux/linux-imx_2.6.35.3.bb | 3 +- 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 meta-fsl-arm/recipes-kernel/linux/linux-imx-2.6.35.3/w1-fix-support-multiple-master.patch 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 index 00000000..9ed730b8 --- /dev/null +++ b/meta-fsl-arm/recipes-kernel/linux/linux-imx-2.6.35.3/w1-fix-support-multiple-master.patch @@ -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 +Cc: Evgeniy Polyakov +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +--- + 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 + diff --git a/meta-fsl-arm/recipes-kernel/linux/linux-imx_2.6.35.3.bb b/meta-fsl-arm/recipes-kernel/linux/linux-imx_2.6.35.3.bb index 1f4a453a..6c8822f6 100644 --- a/meta-fsl-arm/recipes-kernel/linux/linux-imx_2.6.35.3.bb +++ b/meta-fsl-arm/recipes-kernel/linux/linux-imx_2.6.35.3.bb @@ -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 \ -- 2.40.1