if (ihid_elan->vcc33) {
ret = regulator_enable(ihid_elan->vcc33); if (ret) goto err_deassert_reset;
}
ret = regulator_enable(ihid_elan->vccio); if (ret) goto err_disable_vcc33;
if (ihid_elan->chip_data->post_power_delay_ms)
msleep(ihid_elan->chip_data->post_power_delay_ms);
gpiod_set_value_cansleep(ihid_elan->reset_gpio, 0); if (ihid_elan->chip_data->post_gpio_reset_on_delay_ms)
msleep(ihid_elan->chip_data->post_gpio_reset_on_delay_ms);
return 0;
err_disable_vcc33: if (ihid_elan->vcc33)
regulator_disable(ihid_elan->vcc33);
err_deassert_reset: if (ihid_elan->no_reset_on_power_off)
gpiod_set_value_cansleep(ihid_elan->reset_gpio, 0);
/* * Do not assert reset when the hardware allows for it to remain * deasserted regardless of the state of the (shared) power supply to * avoid wasting power when the supply is left on.
*/ if (!ihid_elan->no_reset_on_power_off)
gpiod_set_value_cansleep(ihid_elan->reset_gpio, 1);
if (ihid_elan->chip_data->post_gpio_reset_off_delay_ms)
msleep(ihid_elan->chip_data->post_gpio_reset_off_delay_ms);
regulator_disable(ihid_elan->vccio); if (ihid_elan->vcc33)
regulator_disable(ihid_elan->vcc33);
}
staticconststruct elan_i2c_hid_chip_data ilitek_ili9882t_chip_data = {
.post_power_delay_ms = 1,
.post_gpio_reset_on_delay_ms = 200,
.post_gpio_reset_off_delay_ms = 65,
.hid_descriptor_address = 0x0001, /* * this touchscreen is tightly integrated with the panel and assumes * that the relevant power rails (other than the IO rail) have already * been turned on by the panel driver because we're a panel follower.
*/
.main_supply_name = NULL,
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.