u16 id;
u16 version;
const char *cfg_name;
+ bool load_cfg_from_disk;
struct completion firmware_loading_complete;
unsigned long irq_flags;
enum goodix_irq_pin_access_method irq_pin_access_method;
ts->gpiod_rst = gpiod;
- if (ts->gpiod_int && ts->gpiod_rst)
+ if (ts->gpiod_int && ts->gpiod_rst) {
+ ts->load_cfg_from_disk = true;
ts->irq_pin_access_method = IRQ_PIN_ACCESS_GPIO;
+ }
return 0;
}
ts->chip = goodix_get_chip_data(ts->id);
- if (ts->irq_pin_access_method == IRQ_PIN_ACCESS_GPIO) {
+ if (ts->load_cfg_from_disk) {
/* update device config */
ts->cfg_name = devm_kasprintf(&client->dev, GFP_KERNEL,
"goodix_%d_cfg.bin", ts->id);
{
struct goodix_ts_data *ts = i2c_get_clientdata(client);
- if (ts->irq_pin_access_method == IRQ_PIN_ACCESS_GPIO)
+ if (ts->load_cfg_from_disk)
wait_for_completion(&ts->firmware_loading_complete);
return 0;
struct goodix_ts_data *ts = i2c_get_clientdata(client);
int error;
+ if (ts->load_cfg_from_disk)
+ wait_for_completion(&ts->firmware_loading_complete);
+
/* We need gpio pins to suspend/resume */
if (ts->irq_pin_access_method == IRQ_PIN_ACCESS_NONE) {
disable_irq(client->irq);
return 0;
}
- wait_for_completion(&ts->firmware_loading_complete);
-
/* Free IRQ as IRQ pin is used as output in the suspend sequence */
goodix_free_irq(ts);