diff mbox series

hwmon: lm70: simplify with spi_get_device_match_data()

Message ID 20240606142515.132504-1-krzysztof.kozlowski@linaro.org (mailing list archive)
State Accepted
Headers show
Series hwmon: lm70: simplify with spi_get_device_match_data() | expand

Commit Message

Krzysztof Kozlowski June 6, 2024, 2:25 p.m. UTC
Use spi_get_device_match_data() helper to simplify a bit the driver.
Also kernel_ulong_t type is preferred for kernel code over uintptr_t
(needed for the cast).

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 drivers/hwmon/lm70.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

Comments

Guenter Roeck June 6, 2024, 3:56 p.m. UTC | #1
On 6/6/24 07:25, Krzysztof Kozlowski wrote:
> Use spi_get_device_match_data() helper to simplify a bit the driver.
> Also kernel_ulong_t type is preferred for kernel code over uintptr_t
> (needed for the cast).
> 
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> ---
>   drivers/hwmon/lm70.c | 6 +-----
>   1 file changed, 1 insertion(+), 5 deletions(-)
> 
> diff --git a/drivers/hwmon/lm70.c b/drivers/hwmon/lm70.c
> index 481e4e1f8f4f..0d5a250cb672 100644
> --- a/drivers/hwmon/lm70.c
> +++ b/drivers/hwmon/lm70.c
> @@ -169,11 +169,7 @@ static int lm70_probe(struct spi_device *spi)
>   	struct lm70 *p_lm70;
>   	int chip;
>   
> -	if (dev_fwnode(&spi->dev))
> -		chip = (int)(uintptr_t)device_get_match_data(&spi->dev);
> -	else
> -		chip = spi_get_device_id(spi)->driver_data;
> -
> +	chip = (kernel_ulong_t)spi_get_device_match_data(spi);
>   
>   	/* signaling is SPI_MODE_0 */
>   	if ((spi->mode & SPI_MODE_X_MASK) != SPI_MODE_0)

I'll apply this patch, but ...

I take it that the earlier claims that driver_data must not be
something like "(void *) LM70_CHIP_LM70", where LM70_CHIP_LM70 is 0,
was wrong. I'll start reverting all patches which changed starting
enum values from 0 to 1 based on that wrong claim.

Guenter
Krzysztof Kozlowski June 7, 2024, 6:53 a.m. UTC | #2
On 06/06/2024 17:56, Guenter Roeck wrote:
> On 6/6/24 07:25, Krzysztof Kozlowski wrote:
>> Use spi_get_device_match_data() helper to simplify a bit the driver.
>> Also kernel_ulong_t type is preferred for kernel code over uintptr_t
>> (needed for the cast).
>>
>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>> ---
>>   drivers/hwmon/lm70.c | 6 +-----
>>   1 file changed, 1 insertion(+), 5 deletions(-)
>>
>> diff --git a/drivers/hwmon/lm70.c b/drivers/hwmon/lm70.c
>> index 481e4e1f8f4f..0d5a250cb672 100644
>> --- a/drivers/hwmon/lm70.c
>> +++ b/drivers/hwmon/lm70.c
>> @@ -169,11 +169,7 @@ static int lm70_probe(struct spi_device *spi)
>>   	struct lm70 *p_lm70;
>>   	int chip;
>>   
>> -	if (dev_fwnode(&spi->dev))
>> -		chip = (int)(uintptr_t)device_get_match_data(&spi->dev);
>> -	else
>> -		chip = spi_get_device_id(spi)->driver_data;
>> -
>> +	chip = (kernel_ulong_t)spi_get_device_match_data(spi);
>>   
>>   	/* signaling is SPI_MODE_0 */
>>   	if ((spi->mode & SPI_MODE_X_MASK) != SPI_MODE_0)
> 
> I'll apply this patch, but ...
> 
> I take it that the earlier claims that driver_data must not be
> something like "(void *) LM70_CHIP_LM70", where LM70_CHIP_LM70 is 0,
> was wrong. I'll start reverting all patches which changed starting
> enum values from 0 to 1 based on that wrong claim.

Yeah, they should not be 0. I think Jonathan also brought it some time
ago for iio drivers:

https://lore.kernel.org/linux-iio/20240226192555.14aa178e@jic23-huawei/

but if all the ID tables are complete, the 0 will work fine:

https://lore.kernel.org/all/20240413154511.52576-1-krzysztof.kozlowski@linaro.org/

Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/drivers/hwmon/lm70.c b/drivers/hwmon/lm70.c
index 481e4e1f8f4f..0d5a250cb672 100644
--- a/drivers/hwmon/lm70.c
+++ b/drivers/hwmon/lm70.c
@@ -169,11 +169,7 @@  static int lm70_probe(struct spi_device *spi)
 	struct lm70 *p_lm70;
 	int chip;
 
-	if (dev_fwnode(&spi->dev))
-		chip = (int)(uintptr_t)device_get_match_data(&spi->dev);
-	else
-		chip = spi_get_device_id(spi)->driver_data;
-
+	chip = (kernel_ulong_t)spi_get_device_match_data(spi);
 
 	/* signaling is SPI_MODE_0 */
 	if ((spi->mode & SPI_MODE_X_MASK) != SPI_MODE_0)