From 94c76c0d7468a23d5663a402fe10aa0e6dc19300 Mon Sep 17 00:00:00 2001 From: Ritesh Kumar Date: Fri, 14 Aug 2020 15:29:23 +0530 Subject: [PATCH] input: touchscreen: synaptics_tcm: defer probe if panel not found In many cases display panel information may not be available when the touch driver is being probed. This change defers the probe if the panel is not found to ensure that the correct touch driver is probed. Change-Id: I52b8cd49342b6213639eefb8f10876178612af49 Signed-off-by: Ritesh Kumar --- .../input/touchscreen/synaptics_tcm/synaptics_tcm_i2c.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/input/touchscreen/synaptics_tcm/synaptics_tcm_i2c.c b/drivers/input/touchscreen/synaptics_tcm/synaptics_tcm_i2c.c index cf4ae8cb47bf..1754a4fb5c25 100644 --- a/drivers/input/touchscreen/synaptics_tcm/synaptics_tcm_i2c.c +++ b/drivers/input/touchscreen/synaptics_tcm/synaptics_tcm_i2c.c @@ -371,7 +371,7 @@ static int syna_tcm_check_dt(struct device_node *np) } } - return -ENODEV; + return PTR_ERR(panel); } static int syna_tcm_check_default_tp(struct device_node *dt, const char *prop) @@ -409,7 +409,11 @@ static int syna_tcm_i2c_probe(struct i2c_client *i2c, int retval; struct device_node *dt = i2c->dev.of_node; - if (syna_tcm_check_dt(dt)) { + retval = syna_tcm_check_dt(dt); + if (retval == -EPROBE_DEFER) + return retval; + + if (retval) { if (!syna_tcm_check_default_tp(dt, "qcom,i2c-touch-active")) retval = -EPROBE_DEFER; else