1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-01-09 23:11:10 +00:00

refactor(core): make display resolution constants global, board specific

[no changelog]
This commit is contained in:
tychovrahe 2025-01-02 12:55:47 +01:00 committed by TychoVrahe
parent 6e2486a2e2
commit b97390a73a
22 changed files with 96 additions and 54 deletions

View File

@ -26,8 +26,6 @@
#define IMAGE_HASH_BLAKE2S
#define DISPLAY_JUMP_BEHAVIOR DISPLAY_RESET_CONTENT
#define DISPLAY_RESX 240
#define DISPLAY_RESY 320
// SHARED WITH MAKEFILE
// common

View File

@ -28,8 +28,6 @@
#define IMAGE_HASH_SHA256
#define DISPLAY_JUMP_BEHAVIOR DISPLAY_RESET_CONTENT
#define DISPLAY_RESX 240
#define DISPLAY_RESY 240
// SHARED WITH MAKEFILE, LINKER SCRIPT etc.
// misc

View File

@ -26,8 +26,6 @@
#define IMAGE_HASH_BLAKE2S
#define DISPLAY_JUMP_BEHAVIOR DISPLAY_RETAIN_CONTENT
#define DISPLAY_RESX 128
#define DISPLAY_RESY 64
// SHARED WITH MAKEFILE
// common

View File

@ -26,8 +26,6 @@
#define IMAGE_HASH_BLAKE2S
#define DISPLAY_JUMP_BEHAVIOR DISPLAY_RETAIN_CONTENT
#define DISPLAY_RESX 240
#define DISPLAY_RESY 240
// SHARED WITH MAKEFILE
// common

View File

@ -27,8 +27,6 @@
#define IMAGE_HASH_SHA256
#define DISPLAY_JUMP_BEHAVIOR DISPLAY_RETAIN_CONTENT
#define DISPLAY_RESX 128
#define DISPLAY_RESY 64
// SHARED WITH MAKEFILE, LINKER SCRIPT etc.
// misc

View File

@ -27,8 +27,6 @@
#define IMAGE_HASH_SHA256
#define DISPLAY_JUMP_BEHAVIOR DISPLAY_RETAIN_CONTENT
#define DISPLAY_RESX 240
#define DISPLAY_RESY 240
// SHARED WITH MAKEFILE, LINKER SCRIPT etc.
// misc

View File

@ -29,14 +29,6 @@
#define DISPLAY_JUMP_BEHAVIOR DISPLAY_RESET_CONTENT
#ifdef TREZOR_EMULATOR
#define DISPLAY_RESX 380
#define DISPLAY_RESY 520
#else
#define DISPLAY_RESX 240
#define DISPLAY_RESY 320
#endif
// SHARED WITH MAKEFILE, LINKER SCRIPT etc.
// misc
#define FLASH_START 0x0C004000

View File

@ -59,6 +59,8 @@ const DEFAULT_BINDGEN_MACROS_T2T1: &[&str] = &[
"-DTREZOR_MODEL_T",
"-DFLASH_BIT_ACCESS=1",
"-DFLASH_BLOCK_WORDS=1",
"-DDISPLAY_RESX=240",
"-DDISPLAY_RESY=240",
"-DTREZOR_BOARD=\"T2T1/boards/t2t1-unix.h\"",
];
#[cfg(not(feature = "model_tt"))]
@ -70,6 +72,8 @@ const DEFAULT_BINDGEN_MACROS_T2B1: &[&str] = &[
"-DTREZOR_MODEL_R",
"-DFLASH_BIT_ACCESS=1",
"-DFLASH_BLOCK_WORDS=1",
"-DDISPLAY_RESX=128",
"-DDISPLAY_RESY=64",
"-DTREZOR_BOARD=\"T2B1/boards/t2b1-unix.h\"",
];
#[cfg(not(feature = "model_tr"))]
@ -81,6 +85,8 @@ const DEFAULT_BINDGEN_MACROS_T3T1: &[&str] = &[
"-DTREZOR_MODEL_T3T1",
"-DFLASH_BIT_ACCESS=0",
"-DFLASH_BLOCK_WORDS=4",
"-DDISPLAY_RESX=240",
"-DDISPLAY_RESY=240",
"-DTREZOR_BOARD=\"T3T1/boards/t3t1-unix.h\"",
];
#[cfg(not(feature = "model_mercury"))]
@ -353,8 +359,8 @@ fn generate_trezorhal_bindings() {
.allowlist_function("display_set_backlight")
.allowlist_function("display_get_backlight")
.allowlist_function("display_wait_for_sync")
.allowlist_var("DISPLAY_RESX")
.allowlist_var("DISPLAY_RESY")
.allowlist_var("DISPLAY_RESX_")
.allowlist_var("DISPLAY_RESY_")
.allowlist_type("display_fb_info_t")
.allowlist_function("display_get_frame_buffer")
.allowlist_function("display_fill")

View File

@ -6,6 +6,8 @@ use crate::ui::{
shape::{Bitmap, BitmapFormat, BitmapView},
};
use crate::trezorhal::display::{DISPLAY_RESX, DISPLAY_RESY};
/// Waits for the DMA2D peripheral transfer to complete.
pub fn wait_for_transfer() {
// SAFETY:
@ -203,8 +205,8 @@ impl BitBltFill {
/// Fills a rectangle on the display with the specified color.
pub fn display_fill(&self) {
assert!(self.bitblt.dst_x + self.bitblt.width <= ffi::DISPLAY_RESX as u16);
assert!(self.bitblt.dst_y + self.bitblt.height <= ffi::DISPLAY_RESY as u16);
assert!(self.bitblt.dst_x + self.bitblt.width <= DISPLAY_RESX as u16);
assert!(self.bitblt.dst_y + self.bitblt.height <= DISPLAY_RESY as u16);
// SAFETY:
// - The destination rectangle is completely inside the display.
unsafe { ffi::display_fill(&self.bitblt) };
@ -423,8 +425,8 @@ impl<'a> BitBltCopy<'a> {
///
/// - The source bitmap uses the RGB565 format.
pub fn display_copy(&self) {
assert!(self.bitblt.dst_x + self.bitblt.width <= ffi::DISPLAY_RESX as u16);
assert!(self.bitblt.dst_y + self.bitblt.height <= ffi::DISPLAY_RESY as u16);
assert!(self.bitblt.dst_x + self.bitblt.width <= DISPLAY_RESX as u16);
assert!(self.bitblt.dst_y + self.bitblt.height <= DISPLAY_RESY as u16);
// SAFETY:
// - The source bitmap is in the correct formats.

View File

@ -3,7 +3,10 @@ use super::ffi;
#[cfg(feature = "framebuffer")]
use core::ptr;
pub use ffi::{DISPLAY_RESX, DISPLAY_RESY};
use ffi::{DISPLAY_RESX_, DISPLAY_RESY_};
pub const DISPLAY_RESX: u32 = DISPLAY_RESX_;
pub const DISPLAY_RESY: u32 = DISPLAY_RESY_;
pub type FontInfo = ffi::font_info_t;

View File

@ -1,3 +1,5 @@
#include <trezor_model.h>
#include <gfx/fonts.h>
@ -32,3 +34,7 @@
#include "slip39.h"
#include "uzlib.h"
// force bindgen to include these constants
const uint32_t DISPLAY_RESX_ = DISPLAY_RESX;
const uint32_t DISPLAY_RESY_ = DISPLAY_RESY;

View File

@ -53,11 +53,15 @@ def configure(
"vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c"
]
defines += ["USE_DMA2D"]
defines += [("USE_RGB_COLORS", "1")]
features_available.append("dma2d")
defines += ["FRAMEBUFFER"]
defines += ["DISPLAY_RGB565"]
defines += [
"FRAMEBUFFER",
"DISPLAY_RGB565",
("USE_RGB_COLORS", "1"),
("DISPLAY_RESX", "240"),
("DISPLAY_RESY", "320"),
]
features_available.append("framebuffer")
features_available.append("display_rgb565")

View File

@ -75,20 +75,20 @@ def configure(
paths += ["embed/io/usb/inc"]
defines += [
"USE_DMA2D",
"FRAMEBUFFER",
"DISPLAY_RGBA8888",
("UI_COLOR_32BIT", "1"),
("USE_RGB_COLORS", "1"),
("DISPLAY_RESX", "240"),
("DISPLAY_RESY", "240"),
]
sources += ["embed/gfx/bitblt/stm32/dma2d_bitblt.c"]
features_available.append("dma2d")
features_available.append("ui_color_32bit")
defines += ["FRAMEBUFFER"]
defines += ["DISPLAY_RGBA8888"]
features_available.append("framebuffer")
features_available.append("display_rgba8888")
features_available.append("ui_color_32bit")
defines += (["USE_DMA2D"],)
features_available.append("dma2d")
sources += ["embed/gfx/bitblt/stm32/dma2d_bitblt.c"]
defines += [
"USE_HASH_PROCESSOR=1",

View File

@ -17,7 +17,12 @@ def configure(
hw_revision = 0
mcu = "STM32F427xx"
defines += ["FRAMEBUFFER", "DISPLAY_MONO"]
defines += [
"FRAMEBUFFER",
"DISPLAY_MONO",
("DISPLAY_RESX", "128"),
("DISPLAY_RESY", "64"),
]
features_available.append("framebuffer")
features_available.append("display_mono")

View File

@ -16,7 +16,11 @@ def configure(
hw_revision = 10
board = "T2B1/boards/trezor_r_v10.h"
defines += ["FRAMEBUFFER"]
defines += [
"FRAMEBUFFER",
("DISPLAY_RESX", "128"),
("DISPLAY_RESY", "64"),
]
features_available.append("framebuffer")
features_available.append("display_mono")

View File

@ -17,9 +17,13 @@ def configure(
hw_revision = 0
mcu = "STM32F427xx"
defines += ["DISPLAY_RGB565"]
features_available.append("display_rgb565")
defines += [("USE_RGB_COLORS", "1")]
defines += [
"DISPLAY_RGB565",
("USE_RGB_COLORS", "1"),
("DISPLAY_RESX", "240"),
("DISPLAY_RESY", "240"),
]
defines += [
mcu,

View File

@ -16,9 +16,13 @@ def configure(
hw_model = get_hw_model_as_number("T2T1")
hw_revision = 0
defines += ["DISPLAY_RGB565"]
features_available.append("display_rgb565")
defines += [("USE_RGB_COLORS", "1")]
defines += [
"DISPLAY_RGB565",
("USE_RGB_COLORS", "1"),
("DISPLAY_RESX", "240"),
("DISPLAY_RESY", "240"),
]
mcu = "STM32F427xx"

View File

@ -17,7 +17,12 @@ def configure(
hw_revision = 0
mcu = "STM32U585xx"
defines += ["FRAMEBUFFER", "DISPLAY_MONO"]
defines += [
"FRAMEBUFFER",
"DISPLAY_MONO",
("DISPLAY_RESX", "128"),
("DISPLAY_RESY", "64"),
]
features_available.append("framebuffer")
features_available.append("display_mono")

View File

@ -16,7 +16,11 @@ def configure(
hw_model = get_hw_model_as_number("T3B1")
hw_revision = ord("B")
defines += ["FRAMEBUFFER"]
defines += [
"FRAMEBUFFER",
("DISPLAY_RESX", "128"),
("DISPLAY_RESY", "64"),
]
features_available.append("framebuffer")
features_available.append("display_mono")

View File

@ -17,10 +17,15 @@ def configure(
hw_revision = 0
mcu = "STM32U585xx"
defines += ["FRAMEBUFFER", "DISPLAY_RGB565"]
features_available.append("framebuffer")
features_available.append("display_rgb565")
defines += [("USE_RGB_COLORS", "1")]
defines += [
"FRAMEBUFFER",
"DISPLAY_RGB565",
("USE_RGB_COLORS", "1"),
("DISPLAY_RESX", "240"),
("DISPLAY_RESY", "240"),
]
defines += [
mcu,

View File

@ -18,9 +18,13 @@ def configure(
features_available.append("framebuffer")
features_available.append("display_rgb565")
defines += [("DISPLAY_RGB565", "1")]
defines += [("FRAMEBUFFER", "1")]
defines += [("USE_RGB_COLORS", "1")]
defines += [
("DISPLAY_RGB565", "1"),
("FRAMEBUFFER", "1"),
("USE_RGB_COLORS", "1"),
("DISPLAY_RESX", "240"),
("DISPLAY_RESY", "240"),
]
mcu = "STM32U585xx"
linker_script = """embed/sys/linker/stm32u58/{target}.ld"""

View File

@ -17,11 +17,17 @@ def configure(
hw_revision = 0
mcu = "STM32U5G9xx"
defines += ["FRAMEBUFFER", "DISPLAY_RGBA8888", "UI_COLOR_32BIT"]
defines += [
"FRAMEBUFFER",
("USE_RGB_COLORS", "1"),
"DISPLAY_RGBA8888",
"UI_COLOR_32BIT",
("DISPLAY_RESX", "380"),
("DISPLAY_RESY", "520"),
]
features_available.append("framebuffer")
features_available.append("display_rgba8888")
features_available.append("ui_color_32bit")
defines += [("USE_RGB_COLORS", "1")]
defines += [
mcu,