diff mbox series

iio: adc: ad7768-1: Fix the right interrupt interface calls

Message ID 20210511153108.14816-1-tangbin@cmss.chinamobile.com (mailing list archive)
State New, archived
Headers show
Series iio: adc: ad7768-1: Fix the right interrupt interface calls | expand

Commit Message

Tang Bin May 11, 2021, 3:31 p.m. UTC
In the function ad7768_probe(), the devm_request_irq() should
call ad7768_interrupt, not &ad7768_interrupt, so fix this mistake.

Fixes: a5f8c7da3dbe ("iio: adc: Add AD7768-1 ADC basic support")
Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com>
---
 drivers/iio/adc/ad7768-1.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Lars-Peter Clausen May 11, 2021, 4:29 p.m. UTC | #1
On 5/11/21 5:31 PM, Tang Bin wrote:
> In the function ad7768_probe(), the devm_request_irq() should
> call ad7768_interrupt, not &ad7768_interrupt, so fix this mistake.
>
> Fixes: a5f8c7da3dbe ("iio: adc: Add AD7768-1 ADC basic support")
> Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
> Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com>

Hi,

Thanks for the patch. Aren't those two expressions equivalent? Are you 
seeing an issue with the current code? If so can you include that in the 
commit message?

- Lars


> ---
>   drivers/iio/adc/ad7768-1.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c
> index 0e93b0766..9c9ab56d6 100644
> --- a/drivers/iio/adc/ad7768-1.c
> +++ b/drivers/iio/adc/ad7768-1.c
> @@ -605,7 +605,7 @@ static int ad7768_probe(struct spi_device *spi)
>   	init_completion(&st->completion);
>   
>   	ret = devm_request_irq(&spi->dev, spi->irq,
> -			       &ad7768_interrupt,
> +			       ad7768_interrupt,
>   			       IRQF_TRIGGER_RISING | IRQF_ONESHOT,
>   			       indio_dev->name, indio_dev);
>   	if (ret)
Tang Bin May 12, 2021, 8:39 a.m. UTC | #2
Hi Lars-Peter:

         Thanks for you reply!

> Hi,
>
> Thanks for the patch. Aren't those two expressions equivalent? Are you 
> seeing an issue with the current code? If so can you include that in 
> the commit message?
>
> - Lars
>
>
        When submitting this patch, I actually thought about it for a 
while, but finally decided to submit it, my reason is as follows:

         In numerical data of address, &ad7768_interrupt is equal to 
ad7768_interrupt, and the compilation can pass. But I think they are not 
the same, ad7768_interrupt is the first

address of the function, and its type is irqreturn_t, &ad7768_interrupt 
represents the address of an object that points to the function 
ad7768_interrupt().

         So I think they are not the same, For previous experience with 
devm_request_irq(), I send this patch. If I'm wrong, I'm sorry to bother 
you.

Thanks

Tang Bin
Lars-Peter Clausen May 12, 2021, 9:21 a.m. UTC | #3
On 5/12/21 10:39 AM, tangbin wrote:
> Hi Lars-Peter:
>
>         Thanks for you reply!
>
>> Hi,
>>
>> Thanks for the patch. Aren't those two expressions equivalent? Are 
>> you seeing an issue with the current code? If so can you include that 
>> in the commit message?
>>
>> - Lars
>>
>>
>        When submitting this patch, I actually thought about it for a 
> while, but finally decided to submit it, my reason is as follows:
>
>         In numerical data of address, &ad7768_interrupt is equal to 
> ad7768_interrupt, and the compilation can pass. But I think they are 
> not the same, ad7768_interrupt is the first
>
> address of the function, and its type is irqreturn_t, 
> &ad7768_interrupt represents the address of an object that points to 
> the function ad7768_interrupt().
>
>         So I think they are not the same, For previous experience with 
> devm_request_irq(), I send this patch. If I'm wrong, I'm sorry to 
> bother you.
>
Have a look at 
https://stackoverflow.com/questions/6893285/why-do-function-pointer-definitions-work-with-any-number-of-ampersands-or-as 
for some background on this.

You can also easily verify that they are the same with a simple test program

static void foo(void) {}

int main(void) {
     printf("%p %p %d\n", foo, &foo, foo == &foo);
}
diff mbox series

Patch

diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c
index 0e93b0766..9c9ab56d6 100644
--- a/drivers/iio/adc/ad7768-1.c
+++ b/drivers/iio/adc/ad7768-1.c
@@ -605,7 +605,7 @@  static int ad7768_probe(struct spi_device *spi)
 	init_completion(&st->completion);
 
 	ret = devm_request_irq(&spi->dev, spi->irq,
-			       &ad7768_interrupt,
+			       ad7768_interrupt,
 			       IRQF_TRIGGER_RISING | IRQF_ONESHOT,
 			       indio_dev->name, indio_dev);
 	if (ret)