summarylogtreecommitdiffstats
path: root/0005-iio-imu-ASUS-ROG-ALLY-force-INT1-IRQ.patch
blob: 292c7bebb4533c9586212450bd1ff1789782aa4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
diff --git a/drivers/iio/imu/bmi323/bmi323_core.c b/drivers/iio/imu/bmi323/bmi323_core.c
index 0bd5ded..eae7756 100644
--- a/drivers/iio/imu/bmi323/bmi323_core.c
+++ b/drivers/iio/imu/bmi323/bmi323_core.c
@@ -10,6 +10,7 @@
 #include <linux/bitfield.h>
 #include <linux/cleanup.h>
 #include <linux/device.h>
+#include <linux/dmi.h>
 #include <linux/interrupt.h>
 #include <linux/minmax.h>
 #include <linux/module.h>
@@ -1870,6 +1871,8 @@ static int bmi323_trigger_probe(struct bmi323_data *data,
 		return -ENODEV;
 
 	irq = fwnode_irq_get_byname(fwnode, "INT1");
+	if (dmi_match(DMI_BOARD_NAME, "RC71L"))
+		irq = 1; // force IRQ INT1 for ASUS ROG ALLY
 	if (irq > 0) {
 		irq_pin = BMI323_IRQ_INT1;
 	} else {
@@ -1886,6 +1889,8 @@ static int bmi323_trigger_probe(struct bmi323_data *data,
 				     "Could not find IRQ %d\n", irq);
 
 	irq_type = irqd_get_trigger_type(desc);
+	if (dmi_match(DMI_BOARD_NAME, "RC71L"))
+		irq_type = IRQF_TRIGGER_RISING; // forcing trigger type for ASUS ROG ALLY
 	switch (irq_type) {
 	case IRQF_TRIGGER_RISING:
 		latch = false;
@@ -1910,7 +1915,8 @@ static int bmi323_trigger_probe(struct bmi323_data *data,
 	}
 
 	open_drain = fwnode_property_read_bool(fwnode, "drive-open-drain");
-
+	if (dmi_match(DMI_BOARD_NAME, "RC71L"))
+		open_drain = false; // forcing whether open drain (true) or push-pull (false) for ROG ALLY
 	ret = bmi323_int_pin_config(data, irq_pin, active_high, open_drain,
 				    latch);
 	if (ret)