2018-11-20 17:01:59

by Shreeya Patel

[permalink] [raw]
Subject: [PATCH v2 5/5] Staging: iio: adt7316: Use device tree data to assign irq_type

ADT7316 driver no more uses platform data and hence use device tree
data instead of platform data for assigning irq_type field.
Switch case figures out the type of irq and if it's the default case
then assign the default value to the irq_type i.e.
irq_type = IRQF_TRIGGER_LOW

Signed-off-by: Shreeya Patel <[email protected]>
---
drivers/staging/iio/addac/adt7316.c | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/iio/addac/adt7316.c b/drivers/staging/iio/addac/adt7316.c
index 9c72538baf9e..c647875a64f5 100644
--- a/drivers/staging/iio/addac/adt7316.c
+++ b/drivers/staging/iio/addac/adt7316.c
@@ -2101,8 +2101,7 @@ int adt7316_probe(struct device *dev, struct adt7316_bus *bus,
{
struct adt7316_chip_info *chip;
struct iio_dev *indio_dev;
- unsigned short *adt7316_platform_data = dev->platform_data;
- int irq_type = IRQF_TRIGGER_LOW;
+ int irq_type;
int ret = 0;

indio_dev = devm_iio_device_alloc(dev, sizeof(*chip));
@@ -2146,8 +2145,22 @@ int adt7316_probe(struct device *dev, struct adt7316_bus *bus,
indio_dev->modes = INDIO_DIRECT_MODE;

if (chip->bus.irq > 0) {
- if (adt7316_platform_data[0])
- irq_type = adt7316_platform_data[0];
+ irq_type =
+ irqd_get_trigger_type(irq_get_irq_data(chip->bus.irq));
+
+ switch (irq_type) {
+ case IRQF_TRIGGER_HIGH:
+ case IRQF_TRIGGER_RISING:
+ break;
+ case IRQF_TRIGGER_LOW:
+ case IRQF_TRIGGER_FALLING:
+ break;
+ default:
+ dev_info(dev, "mode %d unsupported, using IRQF_TRIGGER_LOW\n",
+ irq_type);
+ irq_type = IRQF_TRIGGER_LOW;
+ break;
+ }

ret = devm_request_threaded_irq(dev, chip->bus.irq,
NULL,
--
2.17.1



2018-11-21 08:47:47

by Alexandru Ardelean

[permalink] [raw]
Subject: Re: [PATCH v2 5/5] Staging: iio: adt7316: Use device tree data to assign irq_type

On Tue, 2018-11-20 at 22:30 +0530, Shreeya Patel wrote:
> ADT7316 driver no more uses platform data and hence use device tree
> data instead of platform data for assigning irq_type field.
> Switch case figures out the type of irq and if it's the default case
> then assign the default value to the irq_type i.e.
> irq_type = IRQF_TRIGGER_LOW
>

1 comment inline

> Signed-off-by: Shreeya Patel <[email protected]>
> ---
> drivers/staging/iio/addac/adt7316.c | 21 +++++++++++++++++----
> 1 file changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/iio/addac/adt7316.c
> b/drivers/staging/iio/addac/adt7316.c
> index 9c72538baf9e..c647875a64f5 100644
> --- a/drivers/staging/iio/addac/adt7316.c
> +++ b/drivers/staging/iio/addac/adt7316.c
> @@ -2101,8 +2101,7 @@ int adt7316_probe(struct device *dev, struct
> adt7316_bus *bus,
> {
> struct adt7316_chip_info *chip;
> struct iio_dev *indio_dev;
> - unsigned short *adt7316_platform_data = dev->platform_data;
> - int irq_type = IRQF_TRIGGER_LOW;
> + int irq_type;
> int ret = 0;
>
> indio_dev = devm_iio_device_alloc(dev, sizeof(*chip));
> @@ -2146,8 +2145,22 @@ int adt7316_probe(struct device *dev, struct
> adt7316_bus *bus,
> indio_dev->modes = INDIO_DIRECT_MODE;
>
> if (chip->bus.irq > 0) {
> - if (adt7316_platform_data[0])
> - irq_type = adt7316_platform_data[0];
> + irq_type =
> + irqd_get_trigger_type(irq_get_irq_data(chip-
> >bus.irq));
> +
> + switch (irq_type) {
> + case IRQF_TRIGGER_HIGH:
> + case IRQF_TRIGGER_RISING:
> + break;
> + case IRQF_TRIGGER_LOW:
> + case IRQF_TRIGGER_FALLING:
> + break;
> + default:
> + dev_info(dev, "mode %d unsupported, using
> IRQF_TRIGGER_LOW\n",
> + irq_type);
> + irq_type = IRQF_TRIGGER_LOW;
> + break;
> + }

It would be an idea to move this part [together with
devm_request_threaded_irq()] into a "adt7316_setup_irq()" function. To un-
clutter the code in the adt7316_probe() function.

>
> ret = devm_request_threaded_irq(dev, chip->bus.irq,
> NULL,

2018-11-21 10:06:05

by Shreeya Patel

[permalink] [raw]
Subject: Re: [PATCH v2 5/5] Staging: iio: adt7316: Use device tree data to assign irq_type

On Wed, 2018-11-21 at 08:21 +0000, Ardelean, Alexandru wrote:
> On Tue, 2018-11-20 at 22:30 +0530, Shreeya Patel wrote:
> > ADT7316 driver no more uses platform data and hence use device tree
> > data instead of platform data for assigning irq_type field.
> > Switch case figures out the type of irq and if it's the default
> > case
> > then assign the default value to the irq_type i.e.
> > irq_type = IRQF_TRIGGER_LOW
> >
>
> 1 comment inline
>
> > Signed-off-by: Shreeya Patel <[email protected]>
> > ---
> > drivers/staging/iio/addac/adt7316.c | 21 +++++++++++++++++----
> > 1 file changed, 17 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/staging/iio/addac/adt7316.c
> > b/drivers/staging/iio/addac/adt7316.c
> > index 9c72538baf9e..c647875a64f5 100644
> > --- a/drivers/staging/iio/addac/adt7316.c
> > +++ b/drivers/staging/iio/addac/adt7316.c
> > @@ -2101,8 +2101,7 @@ int adt7316_probe(struct device *dev, struct
> > adt7316_bus *bus,
> > {
> > struct adt7316_chip_info *chip;
> > struct iio_dev *indio_dev;
> > - unsigned short *adt7316_platform_data = dev-
> > >platform_data;
> > - int irq_type = IRQF_TRIGGER_LOW;
> > + int irq_type;
> > int ret = 0;
> >
> > indio_dev = devm_iio_device_alloc(dev, sizeof(*chip));
> > @@ -2146,8 +2145,22 @@ int adt7316_probe(struct device *dev, struct
> > adt7316_bus *bus,
> > indio_dev->modes = INDIO_DIRECT_MODE;
> >
> > if (chip->bus.irq > 0) {
> > - if (adt7316_platform_data[0])
> > - irq_type = adt7316_platform_data[0];
> > + irq_type =
> > + irqd_get_trigger_type(irq_get_irq_data(chi
> > p-
> > > bus.irq));
> >
> > +
> > + switch (irq_type) {
> > + case IRQF_TRIGGER_HIGH:
> > + case IRQF_TRIGGER_RISING:
> > + break;
> > + case IRQF_TRIGGER_LOW:
> > + case IRQF_TRIGGER_FALLING:
> > + break;
> > + default:
> > + dev_info(dev, "mode %d unsupported, using
> > IRQF_TRIGGER_LOW\n",
> > + irq_type);
> > + irq_type = IRQF_TRIGGER_LOW;
> > + break;
> > + }
>
> It would be an idea to move this part [together with
> devm_request_threaded_irq()] into a "adt7316_setup_irq()" function.
> To un-
> clutter the code in the adt7316_probe() function.
>

Yes, seems like a good idea!
Even other drivers are doing the same as you told me to do...thanks :)

I'll do the change after Jonathan picks up the other patches and will
wait for some other reviews to come up if there are any.

Thanks

> >
> > ret = devm_request_threaded_irq(dev, chip-
> > >bus.irq,
> > NULL,

2018-11-25 11:54:15

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v2 5/5] Staging: iio: adt7316: Use device tree data to assign irq_type

On Wed, 21 Nov 2018 15:02:52 +0530
Shreeya Patel <[email protected]> wrote:

> On Wed, 2018-11-21 at 08:21 +0000, Ardelean, Alexandru wrote:
> > On Tue, 2018-11-20 at 22:30 +0530, Shreeya Patel wrote:
> > > ADT7316 driver no more uses platform data and hence use device tree
> > > data instead of platform data for assigning irq_type field.
> > > Switch case figures out the type of irq and if it's the default
> > > case
> > > then assign the default value to the irq_type i.e.
> > > irq_type = IRQF_TRIGGER_LOW
> > >
> >
> > 1 comment inline
> >
> > > Signed-off-by: Shreeya Patel <[email protected]>
> > > ---
> > > drivers/staging/iio/addac/adt7316.c | 21 +++++++++++++++++----
> > > 1 file changed, 17 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/drivers/staging/iio/addac/adt7316.c
> > > b/drivers/staging/iio/addac/adt7316.c
> > > index 9c72538baf9e..c647875a64f5 100644
> > > --- a/drivers/staging/iio/addac/adt7316.c
> > > +++ b/drivers/staging/iio/addac/adt7316.c
> > > @@ -2101,8 +2101,7 @@ int adt7316_probe(struct device *dev, struct
> > > adt7316_bus *bus,
> > > {
> > > struct adt7316_chip_info *chip;
> > > struct iio_dev *indio_dev;
> > > - unsigned short *adt7316_platform_data = dev-
> > > >platform_data;
> > > - int irq_type = IRQF_TRIGGER_LOW;
> > > + int irq_type;
> > > int ret = 0;
> > >
> > > indio_dev = devm_iio_device_alloc(dev, sizeof(*chip));
> > > @@ -2146,8 +2145,22 @@ int adt7316_probe(struct device *dev, struct
> > > adt7316_bus *bus,
> > > indio_dev->modes = INDIO_DIRECT_MODE;
> > >
> > > if (chip->bus.irq > 0) {
> > > - if (adt7316_platform_data[0])
> > > - irq_type = adt7316_platform_data[0];
> > > + irq_type =
> > > + irqd_get_trigger_type(irq_get_irq_data(chi
> > > p-
> > > > bus.irq));
> > >
> > > +
> > > + switch (irq_type) {
> > > + case IRQF_TRIGGER_HIGH:
> > > + case IRQF_TRIGGER_RISING:
> > > + break;
> > > + case IRQF_TRIGGER_LOW:
> > > + case IRQF_TRIGGER_FALLING:
> > > + break;
> > > + default:
> > > + dev_info(dev, "mode %d unsupported, using
> > > IRQF_TRIGGER_LOW\n",
> > > + irq_type);
> > > + irq_type = IRQF_TRIGGER_LOW;
> > > + break;
> > > + }
> >
> > It would be an idea to move this part [together with
> > devm_request_threaded_irq()] into a "adt7316_setup_irq()" function.
> > To un-
> > clutter the code in the adt7316_probe() function.
> >
>
> Yes, seems like a good idea!
> Even other drivers are doing the same as you told me to do...thanks :)
>
> I'll do the change after Jonathan picks up the other patches and will
> wait for some other reviews to come up if there are any.
Agreed. This suggested change is good, so I'll leave this patch for now
on the basis it probably makes sense to do it as a short series focused
on that one element.

Thanks,

Jonathan

>
> Thanks
>
> > >
> > > ret = devm_request_threaded_irq(dev, chip-
> > > >bus.irq,
> > > NULL,