mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-07-28 09:28:13 +00:00
fixup! feat(core): add hardware support for T3W1
This commit is contained in:
parent
f6d8bdccd2
commit
46da3b45a4
@ -5,6 +5,7 @@ use core::convert::TryInto;
|
|||||||
pub enum PhysicalButton {
|
pub enum PhysicalButton {
|
||||||
Left,
|
Left,
|
||||||
Right,
|
Right,
|
||||||
|
Power,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, PartialEq, Eq)]
|
#[derive(Copy, Clone, PartialEq, Eq)]
|
||||||
@ -24,6 +25,7 @@ impl ButtonEvent {
|
|||||||
let button = match button {
|
let button = match button {
|
||||||
0 => PhysicalButton::Left,
|
0 => PhysicalButton::Left,
|
||||||
1 => PhysicalButton::Right,
|
1 => PhysicalButton::Right,
|
||||||
|
2 => PhysicalButton::Power,
|
||||||
_ => return Err(error::Error::OutOfRange),
|
_ => return Err(error::Error::OutOfRange),
|
||||||
};
|
};
|
||||||
let result = match event {
|
let result = match event {
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#define USE_SD_CARD 1
|
#define USE_SD_CARD 1
|
||||||
#define USE_I2C 1
|
#define USE_I2C 1
|
||||||
#define USE_TOUCH 1
|
#define USE_TOUCH 1
|
||||||
|
#define USE_BUTTON 1
|
||||||
#define USE_SBU 1
|
#define USE_SBU 1
|
||||||
#define USE_RGB_COLORS 1
|
#define USE_RGB_COLORS 1
|
||||||
#define USE_DISP_I8080_16BIT_DW 1
|
#define USE_DISP_I8080_16BIT_DW 1
|
||||||
@ -43,4 +44,15 @@
|
|||||||
#define SD_ENABLE_PORT GPIOE
|
#define SD_ENABLE_PORT GPIOE
|
||||||
#define SD_ENABLE_PIN GPIO_PIN_1
|
#define SD_ENABLE_PIN GPIO_PIN_1
|
||||||
|
|
||||||
|
#define GPIO_1_PORT GPIOC
|
||||||
|
#define GPIO_1_PIN GPIO_PIN_1
|
||||||
|
#define GPIO_2_PORT GPIOC
|
||||||
|
#define GPIO_2_PIN GPIO_PIN_6
|
||||||
|
#define GPIO_3_PORT GPIOC
|
||||||
|
#define GPIO_3_PIN GPIO_PIN_7
|
||||||
|
|
||||||
|
#define BTN_POWER_CLK_ENA __HAL_RCC_GPIOE_CLK_ENABLE
|
||||||
|
#define BTN_POWER_PORT GPIOE
|
||||||
|
#define BTN_POWER_PIN GPIO_PIN_0
|
||||||
|
|
||||||
#endif //_TREZOR_T3W1_H
|
#endif //_TREZOR_T3W1_H
|
||||||
|
@ -1,28 +1,54 @@
|
|||||||
|
|
||||||
|
#include "stdbool.h"
|
||||||
|
|
||||||
#include STM32_HAL_H
|
#include STM32_HAL_H
|
||||||
#include "button.h"
|
#include "button.h"
|
||||||
#include TREZOR_BOARD
|
|
||||||
|
|
||||||
static char last_left = 0, last_right = 0;
|
|
||||||
|
|
||||||
void button_init(void) {
|
|
||||||
BTN_LEFT_CLK_ENA();
|
|
||||||
BTN_RIGHT_CLK_ENA();
|
|
||||||
|
|
||||||
|
static void init_btn(GPIO_TypeDef *port, uint16_t pin) {
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
|
||||||
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
|
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
|
||||||
GPIO_InitStructure.Pull = GPIO_PULLUP;
|
GPIO_InitStructure.Pull = GPIO_PULLUP;
|
||||||
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
GPIO_InitStructure.Pin = BTN_LEFT_PIN;
|
GPIO_InitStructure.Pin = pin;
|
||||||
HAL_GPIO_Init(BTN_LEFT_PORT, &GPIO_InitStructure);
|
HAL_GPIO_Init(port, &GPIO_InitStructure);
|
||||||
GPIO_InitStructure.Pin = BTN_RIGHT_PIN;
|
}
|
||||||
HAL_GPIO_Init(BTN_RIGHT_PORT, &GPIO_InitStructure);
|
|
||||||
|
#ifdef BTN_LEFT_CLK_ENA
|
||||||
|
static bool last_left = 0;
|
||||||
|
bool button_state_left(void) { return last_left; }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BTN_RIGHT_CLK_ENA
|
||||||
|
static bool last_right = 0;
|
||||||
|
bool button_state_right(void) { return last_right; }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BTN_POWER_CLK_ENA
|
||||||
|
static bool last_power = 0;
|
||||||
|
bool button_state_power(void) { return last_power; }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void button_init(void) {
|
||||||
|
#ifdef BTN_LEFT_CLK_ENA
|
||||||
|
BTN_LEFT_CLK_ENA();
|
||||||
|
init_btn(BTN_LEFT_PORT, BTN_LEFT_PIN);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BTN_RIGHT_CLK_ENA
|
||||||
|
BTN_RIGHT_CLK_ENA();
|
||||||
|
init_btn(BTN_RIGHT_PORT, BTN_RIGHT_PIN);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BTN_POWER_CLK_ENA
|
||||||
|
BTN_POWER_CLK_ENA();
|
||||||
|
init_btn(BTN_POWER_PORT, BTN_POWER_PIN);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t button_read(void) {
|
uint32_t button_read(void) {
|
||||||
char left = (GPIO_PIN_RESET == HAL_GPIO_ReadPin(BTN_LEFT_PORT, BTN_LEFT_PIN));
|
#ifdef BTN_LEFT_CLK_ENA
|
||||||
char right =
|
bool left = (GPIO_PIN_RESET == HAL_GPIO_ReadPin(BTN_LEFT_PORT, BTN_LEFT_PIN));
|
||||||
(GPIO_PIN_RESET == HAL_GPIO_ReadPin(BTN_RIGHT_PORT, BTN_RIGHT_PIN));
|
|
||||||
if (last_left != left) {
|
if (last_left != left) {
|
||||||
last_left = left;
|
last_left = left;
|
||||||
if (left) {
|
if (left) {
|
||||||
@ -31,6 +57,10 @@ uint32_t button_read(void) {
|
|||||||
return BTN_EVT_UP | BTN_LEFT;
|
return BTN_EVT_UP | BTN_LEFT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef BTN_RIGHT_CLK_ENA
|
||||||
|
bool right =
|
||||||
|
(GPIO_PIN_RESET == HAL_GPIO_ReadPin(BTN_RIGHT_PORT, BTN_RIGHT_PIN));
|
||||||
if (last_right != right) {
|
if (last_right != right) {
|
||||||
last_right = right;
|
last_right = right;
|
||||||
if (right) {
|
if (right) {
|
||||||
@ -39,9 +69,19 @@ uint32_t button_read(void) {
|
|||||||
return BTN_EVT_UP | BTN_RIGHT;
|
return BTN_EVT_UP | BTN_RIGHT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef BTN_POWER_CLK_ENA
|
||||||
|
bool power =
|
||||||
|
(GPIO_PIN_RESET == HAL_GPIO_ReadPin(BTN_POWER_PORT, BTN_POWER_PIN));
|
||||||
|
if (last_power != power) {
|
||||||
|
last_power = power;
|
||||||
|
if (power) {
|
||||||
|
return BTN_EVT_DOWN | BTN_POWER;
|
||||||
|
} else {
|
||||||
|
return BTN_EVT_UP | BTN_POWER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char button_state_left(void) { return last_left; }
|
|
||||||
|
|
||||||
char button_state_right(void) { return last_right; }
|
|
||||||
|
@ -20,6 +20,9 @@
|
|||||||
#ifndef TREZORHAL_BUTTON_H
|
#ifndef TREZORHAL_BUTTON_H
|
||||||
#define TREZORHAL_BUTTON_H
|
#define TREZORHAL_BUTTON_H
|
||||||
|
|
||||||
|
#include TREZOR_BOARD
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#define BTN_EVT_DOWN (1U << 24)
|
#define BTN_EVT_DOWN (1U << 24)
|
||||||
@ -27,10 +30,19 @@
|
|||||||
|
|
||||||
#define BTN_LEFT 0
|
#define BTN_LEFT 0
|
||||||
#define BTN_RIGHT 1
|
#define BTN_RIGHT 1
|
||||||
|
#define BTN_POWER 2
|
||||||
|
|
||||||
void button_init(void);
|
void button_init(void);
|
||||||
uint32_t button_read(void);
|
uint32_t button_read(void);
|
||||||
char button_state_left(void);
|
|
||||||
char button_state_right(void);
|
#ifdef BTN_LEFT_CLK_ENA
|
||||||
|
bool button_state_left(void);
|
||||||
|
#endif
|
||||||
|
#ifdef BTN_RIGHT_CLK_ENA
|
||||||
|
bool button_state_right(void);
|
||||||
|
#endif
|
||||||
|
#ifdef BTN_POWER_CLK_ENA
|
||||||
|
bool button_state_power(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -20,6 +20,8 @@ def configure(env, features_wanted, defines, sources):
|
|||||||
sources += ['embed/trezorhal/touch/touch.c', ]
|
sources += ['embed/trezorhal/touch/touch.c', ]
|
||||||
sources += ['embed/trezorhal/touch/ft6x36.c', ]
|
sources += ['embed/trezorhal/touch/ft6x36.c', ]
|
||||||
features_available.append("touch")
|
features_available.append("touch")
|
||||||
|
sources += ['embed/trezorhal/button.c']
|
||||||
|
features_available.append("button")
|
||||||
|
|
||||||
if "sd_card" in features_wanted:
|
if "sd_card" in features_wanted:
|
||||||
sources += ['embed/trezorhal/sdcard.c', ]
|
sources += ['embed/trezorhal/sdcard.c', ]
|
||||||
|
Loading…
Reference in New Issue
Block a user