Hi,

Hm, right. But the intention of the driver is to use DIO1. Changing this to
DIO2 by default will break all existing users.

This change should be part of a patch which allows to configure which
interrupt output to use and also the interrupt polarity.

- Lars

On 03/09/2016 12:39 PM, Vlad Banea wrote:
> Hi,
> 
> Thanks for your answer. I'm using this driver with the ADIS16485 device and
> the default value for this register is 0x000D:
> http://www.analog.com/media/en/technical-documentation/data-sheets/ADIS16485.pdf
> (Table 89)
> 
> When the driver enables the interrupt, the Data Ready Line selection and
> polarity are changed, and I never receive the interrupt.
> 
> Vlad
> 
> 
> On Wed, Mar 9, 2016 at 4:22 AM, Lars-Peter Clausen <l...@metafoo.de
> <mailto:l...@metafoo.de>> wrote:
> 
>     On 03/09/2016 06:28 AM, Vlad Banea wrote:
>     > Enabling the IRQ should leave all other settings in the FNCTIO_CTRL
>     > register untouched: read the whole register, toggle just the enable bit,
>     > before writing it back.
> 
>     Hi,
> 
>     Thanks for the patch. Looks good in general, but it's not a fix. The 
> driver
>     does not write this register anywhere else and the reset default value is
>     0x00. So we don't corrupt any other settings since, 0x00 and BIT(3) are 
> the
>     only two settings the driver does at the moment.
> 
>     If the patch is in preparation of future changes that are going to 
> set/clear
>     other bits of the register this should be noted in the commit message.
> 
>     The reason I'm so pedantic here is because fix generally means that the
>     patch needs to be backported to older kernel versions, which is not the 
> case
>     here.
> 
>     - Lars
> 
> 
>     > ---
>     >  drivers/iio/imu/adis16480.c | 15 +++++++++++++--
>     >  1 file changed, 13 insertions(+), 2 deletions(-)
>     >
>     > diff --git a/drivers/iio/imu/adis16480.c b/drivers/iio/imu/adis16480.c
>     > index b94bfd3..8473859 100644
>     > --- a/drivers/iio/imu/adis16480.c
>     > +++ b/drivers/iio/imu/adis16480.c
>     > @@ -738,8 +738,19 @@ static int adis16480_stop_device(struct iio_dev
>     *indio_dev)
>     >
>     >  static int adis16480_enable_irq(struct adis *adis, bool enable)
>     >  {
>     > -     return adis_write_reg_16(adis, ADIS16480_REG_FNCTIO_CTRL,
>     > -             enable ? BIT(3) : 0);
>     > +     u16 fnctio_ctrl;
>     > +     int ret;
>     > +
>     > +     ret = adis_read_reg_16(adis, ADIS16480_REG_FNCTIO_CTRL,
>     &fnctio_ctrl);
>     > +     if (ret < 0)
>     > +             return ret;
>     > +
>     > +     if (enable)
>     > +             fnctio_ctrl |= BIT(3);
>     > +     else
>     > +             fnctio_ctrl &= ~BIT(3);
>     > +
>     > +     return adis_write_reg_16(adis, ADIS16480_REG_FNCTIO_CTRL,
>     fnctio_ctrl);
>     >  }
>     >
>     >  static int adis16480_initial_setup(struct iio_dev *indio_dev)
>     >
> 
> 

Reply via email to