MLK-24862-2 input: touch: goodix: force set the IRQ_TYPE_EDGE_FALLING for GT1151Q

For the touch chip use on the new OLED panel(rm67199), when touch
the screen, GT1151Q sends a falling edge pulse via INT pin.

For code logic, it will read the touch internal config data, the bit[1~0]
of config[6] means the interrupt trigger method. For this GT1151Q, this
bit[1~0] is 3 in default, which means IRQ_TYPE_LEVEL_HIGH, which not
match with the datasheet and the hardware behavior. Since the default
level of the INT pin is high, so after driver probe, a lot of useless
touch interrupts keep triggered.
To fix this, need to update the touch firmware. Set the bit[1~0] of config[6]
to value 1. Since we lack the touch firmware file, as a workaround, add a
property "edge-failling-trigger" in dts file, if has this property, force
set the IRQ_TYPE_EDGE_FALLING.

Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
This commit is contained in:
Haibo Chen 2020-09-29 19:17:21 +08:00
parent bd81511b80
commit e391202476

View File

@ -817,6 +817,9 @@ static int goodix_configure_dev(struct goodix_ts_data *ts)
return error;
}
if (device_property_read_bool(ts->input_dev->dev.parent, "edge-failling-trigger"))
ts->int_trigger_type = GOODIX_INT_TRIGGER;
ts->irq_flags = goodix_irq_flags[ts->int_trigger_type] | IRQF_ONESHOT;
error = goodix_request_irq(ts);
if (error) {