You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trezor-firmware/core/embed/trezorhal/stm32f4/displays/st7789v.h

65 lines
1.4 KiB

#ifndef _ST7789V_H
#define _ST7789V_H
#include STM32_HAL_H
typedef struct {
uint16_t x;
uint16_t y;
} display_padding_t;
#include TREZOR_BOARD
// ILI9341V, GC9307 and ST7789V drivers support 240px x 320px display resolution
#define MAX_DISPLAY_RESX 240
#define MAX_DISPLAY_RESY 320
#define DISPLAY_COLOR_MODE DMA2D_OUTPUT_RGB565
#define TREZOR_FONT_BPP 4
#ifdef USE_DISP_I8080_16BIT_DW
#define DISP_MEM_TYPE uint16_t
#elif USE_DISP_I8080_8BIT_DW
#define DISP_MEM_TYPE uint8_t
#else
#error "Unsupported display interface"
#endif
#define DISP_MEM_TYPE uint8_t
extern __IO DISP_MEM_TYPE *const DISPLAY_CMD_ADDRESS;
extern __IO DISP_MEM_TYPE *const DISPLAY_DATA_ADDRESS;
#define CMD(X) (*DISPLAY_CMD_ADDRESS = (X))
#define DATA(X) (*DISPLAY_DATA_ADDRESS = (X))
void display_set_little_endian(void);
void display_set_big_endian(void);
void display_set_slow_pwm(void);
#ifdef FRAMEBUFFER
#define DISPLAY_FRAMEBUFFER_WIDTH DISPLAY_RESX
#define DISPLAY_FRAMEBUFFER_HEIGHT DISPLAY_RESY
#define DISPLAY_EFFICIENT_CLEAR 1
static inline void display_pixel(uint8_t *fb, int16_t x, int16_t y,
uint16_t color) {
uint32_t p = 2 * (y * DISPLAY_FRAMEBUFFER_WIDTH + x);
*((uint16_t *)(fb + p)) = color;
}
void display_efficient_clear(void);
#else
#ifdef USE_DISP_I8080_16BIT_DW
#define PIXELDATA(X) DATA(X)
#elif USE_DISP_I8080_8BIT_DW
#define PIXELDATA(X) \
DATA((X)&0xFF); \
DATA((X) >> 8)
#endif
#endif
#endif //_ST7789V_H