Skip to content

Commit 4701475

Browse files
lucaceresolidtor
authored andcommitted
Input: edt-ft5x06 - fix access to non-existing register
reg_addr->reg_report_rate is supposed to exist in M06, not M09. The driver is written to skip avoids access to non-existing registers when the register address is NO_REGISTER (0xff). But reg_addr->reg_report_rate is initialized to 0x00 by devm_kzalloc() (in edt_ft5x06_ts_probe()) and not changed thereafter. So the checks do not work and an access to register 0x00 is done. Fix by setting reg_addr->reg_report_rate to NO_REGISTER. Also fix the only place where reg_report_rate is checked against zero instead of NO_REGISTER. Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
1 parent 4f1b461 commit 4701475

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

drivers/input/touchscreen/edt-ft5x06.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ static int edt_ft5x06_work_mode(struct edt_ft5x06_ts_data *tsdata)
593593
tsdata->gain);
594594
edt_ft5x06_register_write(tsdata, reg_addr->reg_offset,
595595
tsdata->offset);
596-
if (reg_addr->reg_report_rate)
596+
if (reg_addr->reg_report_rate != NO_REGISTER)
597597
edt_ft5x06_register_write(tsdata, reg_addr->reg_report_rate,
598598
tsdata->report_rate);
599599

@@ -874,6 +874,7 @@ edt_ft5x06_ts_set_regs(struct edt_ft5x06_ts_data *tsdata)
874874

875875
case M09:
876876
reg_addr->reg_threshold = M09_REGISTER_THRESHOLD;
877+
reg_addr->reg_report_rate = NO_REGISTER;
877878
reg_addr->reg_gain = M09_REGISTER_GAIN;
878879
reg_addr->reg_offset = M09_REGISTER_OFFSET;
879880
reg_addr->reg_num_x = M09_REGISTER_NUM_X;

0 commit comments

Comments
 (0)