lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Sat, 11 Jan 2020 12:10:47 +0000
From:   Jonathan Cameron <jic23@...nel.org>
To:     Michał Mirosław <mirq-linux@...e.qmqm.pl>
Cc:     Hartmut Knaack <knaack.h@....de>,
        Lars-Peter Clausen <lars@...afoo.de>,
        Peter Meerwald-Stadler <pmeerw@...erw.net>,
        Jean-Baptiste Maneyrol <jmaneyrol@...ensense.com>,
        linux-iio@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] iio: imu/mpu6050: support dual-edge IRQ

On Mon, 06 Jan 2020 12:17:54 +0100
Michał Mirosław <mirq-linux@...e.qmqm.pl> wrote:

> Make mpu6050 usable on platforms which provide only any-edge interrupts.
> This also covers shared interrupt case.

So this had me confused for a bit because I assumed we were trying to make
a level interrupt providing device work with edge interrupts.  Seems
device supports a pulsed  mode and the driver supports this.

Why do we want to detect on both edges?  Do you have a crazy board
with this shared and some devices using the rising edge and some the falling one?

For shared case it should return that it did not handle the interrupt
to allow spurious interrupt detection to work...

Jonathan

> 
> Signed-off-by: Michał Mirosław <mirq-linux@...e.qmqm.pl>

> 
> ---
> v2:
>    just remove the dev_warn() message
> 
> Signed-off-by: Michał Mirosław <mirq-linux@...e.qmqm.pl>
> ---
>  drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 2 +-
>  drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c | 5 +----
>  2 files changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
> index 0686e41bb8a1..b3d138091f89 100644
> --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
> +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
> @@ -1241,7 +1241,7 @@ int inv_mpu_core_probe(struct regmap *regmap, int irq, const char *name,
>  	irq_type = irqd_get_trigger_type(desc);
>  	if (!irq_type)
>  		irq_type = IRQF_TRIGGER_RISING;
> -	if (irq_type == IRQF_TRIGGER_RISING)
> +	if (irq_type & IRQF_TRIGGER_RISING)	// rising or both-edge
>  		st->irq_mask = INV_MPU6050_ACTIVE_HIGH;
>  	else if (irq_type == IRQF_TRIGGER_FALLING)
>  		st->irq_mask = INV_MPU6050_ACTIVE_LOW;
> diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
> index 10d16ec5104b..a4dc2c4a3ca5 100644
> --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
> +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c
> @@ -183,11 +183,8 @@ irqreturn_t inv_mpu6050_read_fifo(int irq, void *p)
>  			"failed to ack interrupt\n");
>  		goto flush_fifo;
>  	}
> -	if (!(int_status & INV_MPU6050_BIT_RAW_DATA_RDY_INT)) {
> -		dev_warn(regmap_get_device(st->map),
> -			"spurious interrupt with status 0x%x\n", int_status);
> +	if (!(int_status & INV_MPU6050_BIT_RAW_DATA_RDY_INT))
>  		goto end_session;
> -	}
>  
>  	if (!(st->chip_config.accl_fifo_enable |
>  		st->chip_config.gyro_fifo_enable |

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ