[v1,2/6] staging: atomisp: Replace open-coded i2c_acpi_find_client_by_adev()

Message ID 20210526124322.48915-2-andriy.shevchenko@linux.intel.com
State New
Headers show
Series
  • [v1,1/6] i2c: acpi: Export i2c_acpi_find_client_by_adev() for users
Related show

Commit Message

Andy Shevchenko May 26, 2021, 12:43 p.m.
gmin_i2c_dev_exists() is using open-coded variant of
i2c_acpi_find_client_by_adev(). Replace it with a corresponding call.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 .../staging/media/atomisp/pci/atomisp_gmin_platform.c    | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

Comments

Mauro Carvalho Chehab July 22, 2021, 8:57 a.m. | #1
Hi Andy,

Em Wed, 26 May 2021 15:43:18 +0300
Andy Shevchenko <andriy.shevchenko@linux.intel.com> escreveu:

> gmin_i2c_dev_exists() is using open-coded variant of

> i2c_acpi_find_client_by_adev(). Replace it with a corresponding call.

> 

> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>


At least on the top of v5.14-rc1, this patch causes a compilation
issue:

	drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c: In function ‘gmin_i2c_dev_exists’:
	drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c:386:19: error: implicit declaration of function ‘i2c_acpi_find_client_by_adev’; did you mean ‘i2c_acpi_find_adapter_by_handle’? [-Werror=implicit-function-declaration]
	  386 |         *client = i2c_acpi_find_client_by_adev(adev);
	      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
	      |                   i2c_acpi_find_adapter_by_handle
	drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c:386:17: warning: assignment to ‘struct i2c_client *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
	  386 |         *client = i2c_acpi_find_client_by_adev(adev);
	      |                 ^

The reason is because such function is static:

	$ git grep i2c_acpi_find_client_by_adev
	drivers/i2c/i2c-core-acpi.c:static struct i2c_client *i2c_acpi_find_client_by_adev(struct acpi_device *adev)

IMO, a patch like that should be applied at the same tree as a patch
dropping "static" from drivers/i2c/i2c-core-acpi.c. If you want to do
so, feel free to add:

Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>


> ---

>  .../staging/media/atomisp/pci/atomisp_gmin_platform.c    | 9 ++-------

>  1 file changed, 2 insertions(+), 7 deletions(-)

> 

> diff --git a/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c b/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c

> index 135994d44802..a1064d1a3d6b 100644

> --- a/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c

> +++ b/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c

> @@ -378,19 +378,14 @@ static struct i2c_client *gmin_i2c_dev_exists(struct device *dev, char *name,

>  					      struct i2c_client **client)

>  {

>  	struct acpi_device *adev;

> -	struct device *d;

>  

>  	adev = acpi_dev_get_first_match_dev(name, NULL, -1);

>  	if (!adev)

>  		return NULL;

>  

> -	d = bus_find_device_by_acpi_dev(&i2c_bus_type, adev);

> -	acpi_dev_put(adev);

> -	if (!d)

> -		return NULL;

> +	*client = i2c_acpi_find_client_by_adev(adev);

>  

> -	*client = i2c_verify_client(d);

> -	put_device(d);

> +	acpi_dev_put(adev);

>  

>  	dev_dbg(dev, "found '%s' at address 0x%02x, adapter %d\n",

>  		(*client)->name, (*client)->addr, (*client)->adapter->nr);




Thanks,
Mauro
Andy Shevchenko July 22, 2021, 9:02 a.m. | #2
On Thu, Jul 22, 2021 at 10:57:44AM +0200, Mauro Carvalho Chehab wrote:
> Em Wed, 26 May 2021 15:43:18 +0300
> Andy Shevchenko <andriy.shevchenko@linux.intel.com> escreveu:
> 
> > gmin_i2c_dev_exists() is using open-coded variant of
> > i2c_acpi_find_client_by_adev(). Replace it with a corresponding call.
> > 
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> 
> At least on the top of v5.14-rc1, this patch causes a compilation
> issue:
> 
> 	drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c: In function ‘gmin_i2c_dev_exists’:
> 	drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c:386:19: error: implicit declaration of function ‘i2c_acpi_find_client_by_adev’; did you mean ‘i2c_acpi_find_adapter_by_handle’? [-Werror=implicit-function-declaration]
> 	  386 |         *client = i2c_acpi_find_client_by_adev(adev);
> 	      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 	      |                   i2c_acpi_find_adapter_by_handle
> 	drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c:386:17: warning: assignment to ‘struct i2c_client *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
> 	  386 |         *client = i2c_acpi_find_client_by_adev(adev);
> 	      |                 ^
> 
> The reason is because such function is static:
> 
> 	$ git grep i2c_acpi_find_client_by_adev
> 	drivers/i2c/i2c-core-acpi.c:static struct i2c_client *i2c_acpi_find_client_by_adev(struct acpi_device *adev)
> 
> IMO, a patch like that should be applied at the same tree as a patch
> dropping "static" from drivers/i2c/i2c-core-acpi.c. If you want to do
> so, feel free to add:
> 
> Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>

Thanks!

There is a v2 of this where the patch is dropped from.

Patch

diff --git a/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c b/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
index 135994d44802..a1064d1a3d6b 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
@@ -378,19 +378,14 @@  static struct i2c_client *gmin_i2c_dev_exists(struct device *dev, char *name,
 					      struct i2c_client **client)
 {
 	struct acpi_device *adev;
-	struct device *d;
 
 	adev = acpi_dev_get_first_match_dev(name, NULL, -1);
 	if (!adev)
 		return NULL;
 
-	d = bus_find_device_by_acpi_dev(&i2c_bus_type, adev);
-	acpi_dev_put(adev);
-	if (!d)
-		return NULL;
+	*client = i2c_acpi_find_client_by_adev(adev);
 
-	*client = i2c_verify_client(d);
-	put_device(d);
+	acpi_dev_put(adev);
 
 	dev_dbg(dev, "found '%s' at address 0x%02x, adapter %d\n",
 		(*client)->name, (*client)->addr, (*client)->adapter->nr);