2015-11-03 04:02:20

by Jeremiah Mahler

[permalink] [raw]
Subject: [BUG, bisect] i2c: designware: Move common probe code into i2c_dw_probe()

Jarkko, all,

Commit d80d134182ba5 introduced a bug which causes a cyapa based touch
pad on an Acer C720 Chromebook to become inoperative. This is present
in the latest linux-next (20151101). The patch description is repeated
below.

From d80d134182ba536ececab8d5fca50d779befc9a6 Mon Sep 17 00:00:00 2001
From: Jarkko Nikula <[email protected]>
Date: Mon, 12 Oct 2015 16:55:35 +0300
Subject: [PATCH] i2c: designware: Move common probe code into i2c_dw_probe()

There is some code duplication in i2c-designware-platdrv and
i2c-designware-pcidrv probe functions. What is even worse that duplication
requires i2c_dw_xfer(), i2c_dw_func() and i2c_dw_isr() i2c-designware-core
functions to be exported.

Therefore move common code into new i2c_dw_probe() and make functions above
local to i2c-designware-core.

While merging the code patch does following functional changes:

- I2C Adapter name will be "Synopsys DesignWare I2C adapter". Previously it
was used for platform and ACPI devices but PCI device used
"i2c-designware-pci".
- Using device name for interrupt name. Previous it was platform device name,
ACPI device name or "i2c-designware-pci".
- Error code from devm_request_irq() and i2c_add_numbered_adapter() will be
printed in case of error.

Signed-off-by: Jarkko Nikula <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
---
drivers/i2c/busses/i2c-designware-core.c | 49 +++++++++++++++++++++++++----
drivers/i2c/busses/i2c-designware-core.h | 5 +--
drivers/i2c/busses/i2c-designware-pcidrv.c | 30 ++----------------
drivers/i2c/busses/i2c-designware-platdrv.c | 28 ++---------------
4 files changed, 49 insertions(+), 63 deletions(-)

--
- Jeremiah Mahler


2015-11-03 07:29:03

by Jarkko Nikula

[permalink] [raw]
Subject: Re: [BUG, bisect] i2c: designware: Move common probe code into i2c_dw_probe()

Hi

On 03.11.2015 06:02, Jeremiah Mahler wrote:
> Jarkko, all,
>
> Commit d80d134182ba5 introduced a bug which causes a cyapa based touch
> pad on an Acer C720 Chromebook to become inoperative. This is present
> in the latest linux-next (20151101). The patch description is repeated
> below.
>
> From d80d134182ba536ececab8d5fca50d779befc9a6 Mon Sep 17 00:00:00 2001
> From: Jarkko Nikula <[email protected]>
> Date: Mon, 12 Oct 2015 16:55:35 +0300
> Subject: [PATCH] i2c: designware: Move common probe code into i2c_dw_probe()
>
> There is some code duplication in i2c-designware-platdrv and
> i2c-designware-pcidrv probe functions. What is even worse that duplication
> requires i2c_dw_xfer(), i2c_dw_func() and i2c_dw_isr() i2c-designware-core
> functions to be exported.
>
> Therefore move common code into new i2c_dw_probe() and make functions above
> local to i2c-designware-core.
>
> While merging the code patch does following functional changes:
>
> - I2C Adapter name will be "Synopsys DesignWare I2C adapter". Previously it
> was used for platform and ACPI devices but PCI device used
> "i2c-designware-pci".
> - Using device name for interrupt name. Previous it was platform device name,
> ACPI device name or "i2c-designware-pci".
> - Error code from devm_request_irq() and i2c_add_numbered_adapter() will be
> printed in case of error.
>
> Signed-off-by: Jarkko Nikula <[email protected]>
> Signed-off-by: Wolfram Sang <[email protected]>
> ---
> drivers/i2c/busses/i2c-designware-core.c | 49 +++++++++++++++++++++++++----
> drivers/i2c/busses/i2c-designware-core.h | 5 +--
> drivers/i2c/busses/i2c-designware-pcidrv.c | 30 ++----------------
> drivers/i2c/busses/i2c-designware-platdrv.c | 28 ++---------------
> 4 files changed, 49 insertions(+), 63 deletions(-)
>
Oh, I didn't notice adapter name was used
drivers/platform/chrome/chromeos_laptop.c. Could you try does a patch
below help?

============================ CUT HERE ============================
diff --git a/drivers/platform/chrome/chromeos_laptop.c
b/drivers/platform/chrome/chromeos_laptop.c
index 02072749fff3..2b441e9ae593 100644
--- a/drivers/platform/chrome/chromeos_laptop.c
+++ b/drivers/platform/chrome/chromeos_laptop.c
@@ -47,8 +47,8 @@ static const char *i2c_adapter_names[] = {
"SMBus I801 adapter",
"i915 gmbus vga",
"i915 gmbus panel",
- "i2c-designware-pci",
- "i2c-designware-pci",
+ "Synopsys DesignWare I2C adapter",
+ "Synopsys DesignWare I2C adapter",
};

/* Keep this enum consistent with i2c_adapter_names */
============================ CUT HERE ============================

--
Jarkko

2015-11-03 18:15:23

by Jeremiah Mahler

[permalink] [raw]
Subject: Re: [BUG, bisect] i2c: designware: Move common probe code into i2c_dw_probe()

Jarkko,

On Tue, Nov 03, 2015 at 09:28:55AM +0200, Jarkko Nikula wrote:
> Hi
>
> On 03.11.2015 06:02, Jeremiah Mahler wrote:
> >Jarkko, all,
> >
> >Commit d80d134182ba5 introduced a bug which causes a cyapa based touch
> >pad on an Acer C720 Chromebook to become inoperative. This is present
> >in the latest linux-next (20151101). The patch description is repeated
> >below.
> >
[...]
> Oh, I didn't notice adapter name was used
> drivers/platform/chrome/chromeos_laptop.c. Could you try does a patch below
> help?
>
> ============================ CUT HERE ============================
> diff --git a/drivers/platform/chrome/chromeos_laptop.c
> b/drivers/platform/chrome/chromeos_laptop.c
> index 02072749fff3..2b441e9ae593 100644
> --- a/drivers/platform/chrome/chromeos_laptop.c
> +++ b/drivers/platform/chrome/chromeos_laptop.c
> @@ -47,8 +47,8 @@ static const char *i2c_adapter_names[] = {
> "SMBus I801 adapter",
> "i915 gmbus vga",
> "i915 gmbus panel",
> - "i2c-designware-pci",
> - "i2c-designware-pci",
> + "Synopsys DesignWare I2C adapter",
> + "Synopsys DesignWare I2C adapter",
> };
>
> /* Keep this enum consistent with i2c_adapter_names */
> ============================ CUT HERE ============================
>
> --
> Jarkko
> --

Yes, that change fixes the problem. Thanks for the quick fix.

Tested-by: Jeremiah Mahler <[email protected]>

So the find_i2c_adapter_num function was looking for
"i2c-designware-pci" but it should have been looking for
"Synopsys DesignWare I2C adapter". Where does this bus name
come from, is it read from the device itself?

--
- Jeremiah Mahler