diff options
author | Hans de Goede <hdegoede@redhat.com> | 2018-06-18 12:09:36 -0400 |
---|---|---|
committer | Jonathan Cameron <Jonathan.Cameron@huawei.com> | 2018-06-24 09:50:52 -0400 |
commit | 2a221c04228bbf683fc8d3cb5d177aebb38b393c (patch) | |
tree | d91a3cfbfa3354ca00e5bc63cc3139faa655f893 | |
parent | 92397a6c38d139d50fabbe9e2dc09b61d53b2377 (diff) |
iio: imu: inv_mpu6050: Fix probe() failure on older ACPI based machines
Commit 5ec6486daa98 ("iio:imu: inv_mpu6050: support more interrupt types")
causes inv_mpu_core_probe() to fail if the IRQ does not have a
trigger-type setup.
This happens on machines where the mpu6050 is enumerated through ACPI and
an older Interrupt type ACPI resource is used for the interrupt, rather
then a GpioInt type type, causing the mpu6050 driver to no longer work
there. This happens on e.g. the Asus T100TA.
This commits makes the mpu6050 fallback to the old IRQF_TRIGGER_RISING
default if the irq-type is not setup, fixing this.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Fixes: 5ec6486daa98 ("iio:imu: inv_mpu6050: support more interrupt types")
Reviewed-by: Martin Kelly <mkelly@xevo.com>
Reviewed-by: Jean-Baptiste Maneyrol <jmaneyrol@invensense.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
-rw-r--r-- | drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c index f9c0624505a2..42618fe4f83e 100644 --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | |||
@@ -959,6 +959,8 @@ int inv_mpu_core_probe(struct regmap *regmap, int irq, const char *name, | |||
959 | } | 959 | } |
960 | 960 | ||
961 | irq_type = irqd_get_trigger_type(desc); | 961 | irq_type = irqd_get_trigger_type(desc); |
962 | if (!irq_type) | ||
963 | irq_type = IRQF_TRIGGER_RISING; | ||
962 | if (irq_type == IRQF_TRIGGER_RISING) | 964 | if (irq_type == IRQF_TRIGGER_RISING) |
963 | st->irq_mask = INV_MPU6050_ACTIVE_HIGH; | 965 | st->irq_mask = INV_MPU6050_ACTIVE_HIGH; |
964 | else if (irq_type == IRQF_TRIGGER_FALLING) | 966 | else if (irq_type == IRQF_TRIGGER_FALLING) |