diff mbox

[v1] i2c: core: Allow empty id_table in ACPI case as well

Message ID 20170706180140.49391-1-andriy.shevchenko@linux.intel.com
State Accepted
Headers show

Commit Message

Andy Shevchenko July 6, 2017, 6:01 p.m. UTC
For now empty ID table is not allowed with ACPI and prevents driver to be
probed.

Add a check to allow empty ID table.

Fixes: da10c06a044b ("i2c: Make I2C ID tables non-mandatory for DT'ed devices")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/i2c/i2c-core-base.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Hans de Goede July 6, 2017, 6:05 p.m. UTC | #1
Hi,

Thank you for doing this.

On 06-07-17 20:01, Andy Shevchenko wrote:
> For now empty ID table is not allowed with ACPI and prevents driver to be
> probed.
> 
> Add a check to allow empty ID table.
> 
> Fixes: da10c06a044b ("i2c: Make I2C ID tables non-mandatory for DT'ed devices")
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Looks good to me:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans


> ---
>   drivers/i2c/i2c-core-base.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
> index c89dac7fd2e7..45231d2257ad 100644
> --- a/drivers/i2c/i2c-core-base.c
> +++ b/drivers/i2c/i2c-core-base.c
> @@ -354,9 +354,10 @@ static int i2c_device_probe(struct device *dev)
>   
>   	/*
>   	 * An I2C ID table is not mandatory, if and only if, a suitable Device
> -	 * Tree match table entry is supplied for the probing device.
> +	 * Tree or ACPI match table entry is supplied for the probing device.
>   	 */
>   	if (!driver->id_table &&
> +	    !acpi_match_device(dev->driver->acpi_match_table, &client->dev) &&
>   	    !i2c_of_match_device(dev->driver->of_match_table, client))
>   		return -ENODEV;
>   
>
Wolfram Sang July 8, 2017, 7:57 p.m. UTC | #2
On Thu, Jul 06, 2017 at 09:01:40PM +0300, Andy Shevchenko wrote:
> For now empty ID table is not allowed with ACPI and prevents driver to be
> probed.
> 
> Add a check to allow empty ID table.
> 
> Fixes: da10c06a044b ("i2c: Make I2C ID tables non-mandatory for DT'ed devices")
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Do we need this for 4.13 already?
Andy Shevchenko July 8, 2017, 8:16 p.m. UTC | #3
On Sat, 2017-07-08 at 21:57 +0200, Wolfram Sang wrote:
> On Thu, Jul 06, 2017 at 09:01:40PM +0300, Andy Shevchenko wrote:
> > For now empty ID table is not allowed with ACPI and prevents driver
> > to be
> > probed.
> > 
> > Add a check to allow empty ID table.
> > 
> > Fixes: da10c06a044b ("i2c: Make I2C ID tables non-mandatory for
> > DT'ed devices")
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> 
> Do we need this for 4.13 already?
> 

Yes (we have NFC chip which relies on it), even better down to stable
kernels which have mentioned commit.
Wolfram Sang July 8, 2017, 8:58 p.m. UTC | #4
On Thu, Jul 06, 2017 at 09:01:40PM +0300, Andy Shevchenko wrote:
> For now empty ID table is not allowed with ACPI and prevents driver to be
> probed.
> 
> Add a check to allow empty ID table.
> 
> Fixes: da10c06a044b ("i2c: Make I2C ID tables non-mandatory for DT'ed devices")
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Applied to for-4.13, thanks!
diff mbox

Patch

diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index c89dac7fd2e7..45231d2257ad 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -354,9 +354,10 @@  static int i2c_device_probe(struct device *dev)
 
 	/*
 	 * An I2C ID table is not mandatory, if and only if, a suitable Device
-	 * Tree match table entry is supplied for the probing device.
+	 * Tree or ACPI match table entry is supplied for the probing device.
 	 */
 	if (!driver->id_table &&
+	    !acpi_match_device(dev->driver->acpi_match_table, &client->dev) &&
 	    !i2c_of_match_device(dev->driver->of_match_table, client))
 		return -ENODEV;