mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-08-03 12:28:13 +00:00
chore(core): support FT6x36 touch driver without RST and ON pins
[no changelog]
This commit is contained in:
parent
8569a1244c
commit
4b7cbfea0a
@ -132,18 +132,24 @@ static secbool ft6x36_write_reg(i2c_bus_t* bus, uint8_t reg, uint8_t value) {
|
|||||||
// Powers down the touch controller and puts all
|
// Powers down the touch controller and puts all
|
||||||
// the pins in the proper state to save power.
|
// the pins in the proper state to save power.
|
||||||
static void ft6x36_power_down(void) {
|
static void ft6x36_power_down(void) {
|
||||||
|
#ifdef TOUCH_ON_PIN
|
||||||
GPIO_PinState state = HAL_GPIO_ReadPin(TOUCH_ON_PORT, TOUCH_ON_PIN);
|
GPIO_PinState state = HAL_GPIO_ReadPin(TOUCH_ON_PORT, TOUCH_ON_PIN);
|
||||||
|
|
||||||
// set power off and other pins as per section 3.5 of FT6236 datasheet
|
// set power off and other pins as per section 3.5 of FT6236 datasheet
|
||||||
HAL_GPIO_WritePin(TOUCH_ON_PORT, TOUCH_ON_PIN,
|
HAL_GPIO_WritePin(TOUCH_ON_PORT, TOUCH_ON_PIN,
|
||||||
GPIO_PIN_SET); // CTP_ON (active low) i.e.- CTPM power
|
GPIO_PIN_SET); // CTP_ON (active low) i.e.- CTPM power
|
||||||
// off when set/high/log 1
|
// off when set/high/log 1
|
||||||
|
|
||||||
|
#endif
|
||||||
HAL_GPIO_WritePin(TOUCH_INT_PORT, TOUCH_INT_PIN,
|
HAL_GPIO_WritePin(TOUCH_INT_PORT, TOUCH_INT_PIN,
|
||||||
GPIO_PIN_RESET); // CTP_INT normally an input, but drive
|
GPIO_PIN_RESET); // CTP_INT normally an input, but drive
|
||||||
// low as an output while powered off
|
// low as an output while powered off
|
||||||
|
|
||||||
|
#ifdef TOUCH_RST_PIN
|
||||||
HAL_GPIO_WritePin(TOUCH_RST_PORT, TOUCH_RST_PIN,
|
HAL_GPIO_WritePin(TOUCH_RST_PORT, TOUCH_RST_PIN,
|
||||||
GPIO_PIN_RESET); // CTP_REST (active low) i.e.- CTPM
|
GPIO_PIN_RESET); // CTP_REST (active low) i.e.- CTPM
|
||||||
// held in reset until released
|
// held in reset until released
|
||||||
|
#endif
|
||||||
|
|
||||||
// set above pins to OUTPUT / NOPULL
|
// set above pins to OUTPUT / NOPULL
|
||||||
GPIO_InitTypeDef GPIO_InitStructure = {0};
|
GPIO_InitTypeDef GPIO_InitStructure = {0};
|
||||||
@ -153,8 +159,13 @@ static void ft6x36_power_down(void) {
|
|||||||
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
GPIO_InitStructure.Pin = TOUCH_INT_PIN;
|
GPIO_InitStructure.Pin = TOUCH_INT_PIN;
|
||||||
HAL_GPIO_Init(TOUCH_INT_PORT, &GPIO_InitStructure);
|
HAL_GPIO_Init(TOUCH_INT_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
|
#ifdef TOUCH_RST_PIN
|
||||||
GPIO_InitStructure.Pin = TOUCH_RST_PIN;
|
GPIO_InitStructure.Pin = TOUCH_RST_PIN;
|
||||||
HAL_GPIO_Init(TOUCH_RST_PORT, &GPIO_InitStructure);
|
HAL_GPIO_Init(TOUCH_RST_PORT, &GPIO_InitStructure);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef TOUCH_ON_PIN
|
||||||
GPIO_InitStructure.Pin = TOUCH_ON_PIN;
|
GPIO_InitStructure.Pin = TOUCH_ON_PIN;
|
||||||
HAL_GPIO_Init(TOUCH_ON_PORT, &GPIO_InitStructure);
|
HAL_GPIO_Init(TOUCH_ON_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
@ -162,6 +173,7 @@ static void ft6x36_power_down(void) {
|
|||||||
// 90 ms for circuitry to stabilize (being conservative)
|
// 90 ms for circuitry to stabilize (being conservative)
|
||||||
hal_delay(90);
|
hal_delay(90);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Powers up the touch controller and do proper reset sequence
|
// Powers up the touch controller and do proper reset sequence
|
||||||
@ -169,10 +181,15 @@ static void ft6x36_power_down(void) {
|
|||||||
// `ft6x36_power_down()` must be called before calling this first time function
|
// `ft6x36_power_down()` must be called before calling this first time function
|
||||||
// to properly initialize the GPIO pins.
|
// to properly initialize the GPIO pins.
|
||||||
static void ft6x36_power_up(void) {
|
static void ft6x36_power_up(void) {
|
||||||
|
#ifdef TOUCH_RST_PIN
|
||||||
// Ensure the touch controller is in reset state
|
// Ensure the touch controller is in reset state
|
||||||
HAL_GPIO_WritePin(TOUCH_RST_PORT, TOUCH_RST_PIN, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(TOUCH_RST_PORT, TOUCH_RST_PIN, GPIO_PIN_RESET);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef TOUCH_ON_PIN
|
||||||
// Power up the touch controller
|
// Power up the touch controller
|
||||||
HAL_GPIO_WritePin(TOUCH_ON_PORT, TOUCH_ON_PIN, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(TOUCH_ON_PORT, TOUCH_ON_PIN, GPIO_PIN_RESET);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Wait until the circuit fully kicks-in
|
// Wait until the circuit fully kicks-in
|
||||||
// (5ms is the minimum time required for the reset signal to be effective)
|
// (5ms is the minimum time required for the reset signal to be effective)
|
||||||
@ -186,8 +203,10 @@ static void ft6x36_power_up(void) {
|
|||||||
GPIO_InitStructure.Pin = TOUCH_INT_PIN;
|
GPIO_InitStructure.Pin = TOUCH_INT_PIN;
|
||||||
HAL_GPIO_Init(TOUCH_INT_PORT, &GPIO_InitStructure);
|
HAL_GPIO_Init(TOUCH_INT_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
|
#ifdef TOUCH_RST_PIN
|
||||||
// Release touch controller from reset
|
// Release touch controller from reset
|
||||||
HAL_GPIO_WritePin(TOUCH_RST_PORT, TOUCH_RST_PIN, GPIO_PIN_SET);
|
HAL_GPIO_WritePin(TOUCH_RST_PORT, TOUCH_RST_PIN, GPIO_PIN_SET);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Wait for the touch controller to boot up
|
// Wait for the touch controller to boot up
|
||||||
hal_delay(5);
|
hal_delay(5);
|
||||||
|
Loading…
Reference in New Issue
Block a user