From 452e63c4fb92e5a713fcf89714cb55cdfe087e8d Mon Sep 17 00:00:00 2001 From: cepetr Date: Wed, 7 May 2025 16:17:07 +0200 Subject: [PATCH] feat(core): add display feature to SConscript [no changelog] --- core/SConscript.boardloader | 2 +- core/SConscript.bootloader | 2 +- core/SConscript.bootloader_ci | 2 +- core/SConscript.bootloader_emu | 2 +- core/SConscript.firmware | 2 +- core/SConscript.kernel | 2 +- core/SConscript.prodtest | 2 +- core/SConscript.reflash | 2 +- core/SConscript.unix | 2 +- core/embed/sys/startup/stm32/bootutils.c | 5 +- core/site_scons/models/D001/discovery.py | 49 ++++++++++--------- core/site_scons/models/D002/discovery2.py | 27 +++++----- core/site_scons/models/T2B1/trezor_r_v10.py | 5 +- core/site_scons/models/T2T1/trezor_t.py | 27 +++++----- .../models/T3B1/trezor_t3b1_revB.py | 5 +- .../models/T3T1/trezor_t3t1_revE.py | 29 +++++------ .../models/T3W1/trezor_t3w1_revA.py | 27 +++++----- .../models/T3W1/trezor_t3w1_revB.py | 27 +++++----- .../models/T3W1/trezor_t3w1_revC.py | 27 +++++----- 19 files changed, 129 insertions(+), 117 deletions(-) diff --git a/core/SConscript.boardloader b/core/SConscript.boardloader index de367d5f85..e7e0231341 100644 --- a/core/SConscript.boardloader +++ b/core/SConscript.boardloader @@ -7,7 +7,7 @@ TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T2T1') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) HW_REVISION = ARGUMENTS.get('HW_REVISION', None) -FEATURES_WANTED = ["sd_card", "powerctl"] +FEATURES_WANTED = ["sd_card", "powerctl", "display"] CCFLAGS_MOD = '' CPPPATH_MOD = [] diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 5799838ed9..3bc70fb660 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -11,7 +11,7 @@ PRODUCTION = 0 if BOOTLOADER_QA else ARGUMENTS.get('PRODUCTION', '0') == '1' HW_REVISION = ARGUMENTS.get('HW_REVISION', None) UI_DEBUG_OVERLAY = ARGUMENTS.get('UI_DEBUG_OVERLAY', '0') == '1' -FEATURES_WANTED = ["input", "rgb_led", "consumption_mask", "usb", "optiga", "dma2d", "ble", "powerctl"] +FEATURES_WANTED = ["input", "rgb_led", "consumption_mask", "usb", "optiga", "dma2d", "ble", "powerctl", "display"] CCFLAGS_MOD = '' CPPPATH_MOD = [] diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index 77f8b75025..feac0173ee 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -7,7 +7,7 @@ TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T2T1') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) HW_REVISION = ARGUMENTS.get('HW_REVISION', None) -FEATURES_WANTED = ["input", "rgb_led", "consumption_mask", "usb", "optiga", "powerctl"] +FEATURES_WANTED = ["input", "rgb_led", "consumption_mask", "usb", "optiga", "powerctl", "display"] CCFLAGS_MOD = '' CPPPATH_MOD = [] diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index 051263fdfd..062c508c6c 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -20,7 +20,7 @@ if not models.has_emulator(TREZOR_MODEL): ) Return() -FEATURES_WANTED = ["input", "rgb_led", "dma2d", "optiga", "powerctl"] +FEATURES_WANTED = ["input", "rgb_led", "dma2d", "optiga", "powerctl", "display"] CCFLAGS_MOD = '' CPPPATH_MOD = [] diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 17998bfee6..ae60793ffb 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -45,7 +45,7 @@ FEATURE_FLAGS = { "AES_GCM": BENCHMARK or THP, } -FEATURES_WANTED = ["input", "sd_card", "rgb_led", "dma2d", "consumption_mask", "usb" ,"optiga", "haptic", "ble", "tropic", "powerctl"] +FEATURES_WANTED = ["input", "sd_card", "rgb_led", "dma2d", "consumption_mask", "usb" ,"optiga", "haptic", "ble", "tropic", "powerctl", "display"] if DISABLE_OPTIGA: if PYOPT != '0': raise RuntimeError("DISABLE_OPTIGA requires PYOPT=0") diff --git a/core/SConscript.kernel b/core/SConscript.kernel index e9d00a97a2..f5544f7fa5 100644 --- a/core/SConscript.kernel +++ b/core/SConscript.kernel @@ -30,7 +30,7 @@ FEATURE_FLAGS = { "AES_GCM": True, } -FEATURES_WANTED = ["input", "sd_card", "rgb_led", "dma2d", "consumption_mask", "usb" ,"optiga", "haptic", "ble", "tropic", "powerctl"] +FEATURES_WANTED = ["input", "sd_card", "rgb_led", "dma2d", "consumption_mask", "usb" ,"optiga", "haptic", "ble", "tropic", "powerctl", "display"] if DISABLE_OPTIGA: # TODO use PYOPT instead of PRODUCTION, same as in firmware, blocked on #4253 if PRODUCTION: diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index 59ed1bdae5..366fced655 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -14,7 +14,7 @@ FEATURE_FLAGS = { "AES_GCM": True, } -FEATURES_WANTED = ["input", "sbu", "nfc", "sd_card", "rgb_led", "usb", "consumption_mask", "optiga", "haptic", "tropic", "ble", "hw_revision", "powerctl"] +FEATURES_WANTED = ["input", "sbu", "nfc", "sd_card", "rgb_led", "usb", "consumption_mask", "optiga", "haptic", "tropic", "ble", "hw_revision", "powerctl", "display"] CCFLAGS_MOD = '' CPPPATH_MOD = [] diff --git a/core/SConscript.reflash b/core/SConscript.reflash index 49a4e72ec2..ace5facc62 100644 --- a/core/SConscript.reflash +++ b/core/SConscript.reflash @@ -18,7 +18,7 @@ if TREZOR_MODEL in ('D001', 'D002'): action=build_reflash) Return() -FEATURES_WANTED = ["input", "sd_card"] +FEATURES_WANTED = ["input", "sd_card", "display"] CCFLAGS_MOD = '' CPPPATH_MOD = [] diff --git a/core/SConscript.unix b/core/SConscript.unix index a9891b6975..22295f1767 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -21,7 +21,7 @@ if BENCHMARK and PYOPT != '0': print("BENCHMARK=1 works only with PYOPT=0.") exit(1) -FEATURES_WANTED = ["input", "sd_card", "dma2d", "optiga", "ble", "rgb_led", "powerctl"] +FEATURES_WANTED = ["input", "sd_card", "dma2d", "optiga", "ble", "rgb_led", "powerctl", "display"] if not DISABLE_TROPIC: FEATURES_WANTED.append('tropic') diff --git a/core/embed/sys/startup/stm32/bootutils.c b/core/embed/sys/startup/stm32/bootutils.c index 1cedd54ea4..e07d627467 100644 --- a/core/embed/sys/startup/stm32/bootutils.c +++ b/core/embed/sys/startup/stm32/bootutils.c @@ -21,7 +21,6 @@ #include #include -#include #include #include #include @@ -32,6 +31,10 @@ #include #include +#ifdef STM32F4 +#include +#endif + #ifdef KERNEL_MODE // Battery powered devices (USE_POWERCTL) should not stall diff --git a/core/site_scons/models/D001/discovery.py b/core/site_scons/models/D001/discovery.py index 01558dc22a..40dee74df4 100644 --- a/core/site_scons/models/D001/discovery.py +++ b/core/site_scons/models/D001/discovery.py @@ -37,33 +37,34 @@ def configure( ("USE_HSE", "1"), ] - sources += [ - "embed/io/display/stm32f429i-disc1/display_driver.c", - "embed/io/display/stm32f429i-disc1/display_ltdc.c", - "embed/io/display/stm32f429i-disc1/ili9341_spi.c", - ] - paths += ["embed/io/display/inc"] + if "display" in features_wanted: + sources += [ + "embed/io/display/stm32f429i-disc1/display_driver.c", + "embed/io/display/stm32f429i-disc1/display_ltdc.c", + "embed/io/display/stm32f429i-disc1/ili9341_spi.c", + ] + paths += ["embed/io/display/inc"] - sources += ["embed/gfx/bitblt/stm32/dma2d_bitblt.c"] + sources += ["embed/gfx/bitblt/stm32/dma2d_bitblt.c"] - sources += [ - "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c" - ] - sources += [ - "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c" - ] - defines += ["USE_DMA2D"] - features_available.append("dma2d") + sources += [ + "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c" + ] + sources += [ + "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c" + ] + defines += ["USE_DMA2D"] + features_available.append("dma2d") - defines += [ - "FRAMEBUFFER", - "DISPLAY_RGB565", - ("USE_RGB_COLORS", "1"), - ("DISPLAY_RESX", "240"), - ("DISPLAY_RESY", "320"), - ] - features_available.append("framebuffer") - features_available.append("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") sources += ["embed/sys/sdram/stm32f429i-disc1/sdram_bsp.c"] paths += ["embed/sys/sdram/inc"] diff --git a/core/site_scons/models/D002/discovery2.py b/core/site_scons/models/D002/discovery2.py index b03efdf319..709c5e9b11 100644 --- a/core/site_scons/models/D002/discovery2.py +++ b/core/site_scons/models/D002/discovery2.py @@ -38,20 +38,21 @@ def configure( ("USE_HSE", "1"), ] - sources += [ - "embed/io/display/ltdc_dsi/display_driver.c", - "embed/io/display/ltdc_dsi/panels/stm32u5a9j-dk/stm32u5a9j-dk.c", - "embed/io/display/ltdc_dsi/display_fb.c", - "embed/io/display/ltdc_dsi/display_fb_rgb888.c", - # "embed/io/display/ltdc_dsi/display_gfxmmu.c", - "embed/io/display/fb_queue/fb_queue.c", - ] - paths += ["embed/io/display/inc"] + if "display" in features_wanted: + sources += [ + "embed/io/display/ltdc_dsi/display_driver.c", + "embed/io/display/ltdc_dsi/panels/stm32u5a9j-dk/stm32u5a9j-dk.c", + "embed/io/display/ltdc_dsi/display_fb.c", + "embed/io/display/ltdc_dsi/display_fb_rgb888.c", + # "embed/io/display/ltdc_dsi/display_gfxmmu.c", + "embed/io/display/fb_queue/fb_queue.c", + ] + paths += ["embed/io/display/inc"] - features_available.append("backlight") - defines += [("USE_BACKLIGHT", "1")] - sources += ["embed/io/backlight/stm32/backlight_pin.c"] - paths += ["embed/io/backlight/inc"] + features_available.append("backlight") + defines += [("USE_BACKLIGHT", "1")] + sources += ["embed/io/backlight/stm32/backlight_pin.c"] + paths += ["embed/io/backlight/inc"] if "input" in features_wanted: sources += ["embed/io/i2c_bus/stm32u5/i2c_bus.c"] diff --git a/core/site_scons/models/T2B1/trezor_r_v10.py b/core/site_scons/models/T2B1/trezor_r_v10.py index ad4e8e3cef..c85fae5735 100644 --- a/core/site_scons/models/T2B1/trezor_r_v10.py +++ b/core/site_scons/models/T2B1/trezor_r_v10.py @@ -45,8 +45,9 @@ def configure( ("USE_HSE", "1"), ] - sources += ["embed/io/display/vg-2864/display_driver.c"] - paths += ["embed/io/display/inc"] + if "display" in features_wanted: + sources += ["embed/io/display/vg-2864/display_driver.c"] + paths += ["embed/io/display/inc"] if "input" in features_wanted: sources += ["embed/io/button/stm32/button.c"] diff --git a/core/site_scons/models/T2T1/trezor_t.py b/core/site_scons/models/T2T1/trezor_t.py index f0a1a417f9..2ec1f8cc30 100644 --- a/core/site_scons/models/T2T1/trezor_t.py +++ b/core/site_scons/models/T2T1/trezor_t.py @@ -45,20 +45,21 @@ def configure( ("USE_HSE", "1"), ] - sources += ["embed/io/display/st-7789/display_nofb.c"] - sources += ["embed/io/display/st-7789/display_driver.c"] - sources += ["embed/io/display/st-7789/display_io.c"] - sources += ["embed/io/display/st-7789/display_panel.c"] - sources += ["embed/io/display/st-7789/panels/tf15411a.c"] - sources += ["embed/io/display/st-7789/panels/154a.c"] - sources += ["embed/io/display/st-7789/panels/lx154a2411.c"] - sources += ["embed/io/display/st-7789/panels/lx154a2422.c"] - paths += ["embed/io/display/inc"] + if "display" in features_wanted: + sources += ["embed/io/display/st-7789/display_nofb.c"] + sources += ["embed/io/display/st-7789/display_driver.c"] + sources += ["embed/io/display/st-7789/display_io.c"] + sources += ["embed/io/display/st-7789/display_panel.c"] + sources += ["embed/io/display/st-7789/panels/tf15411a.c"] + sources += ["embed/io/display/st-7789/panels/154a.c"] + sources += ["embed/io/display/st-7789/panels/lx154a2411.c"] + sources += ["embed/io/display/st-7789/panels/lx154a2422.c"] + paths += ["embed/io/display/inc"] - features_available.append("backlight") - defines += [("USE_BACKLIGHT", "1")] - sources += ["embed/io/backlight/stm32/tps61043.c"] - paths += ["embed/io/backlight/inc"] + features_available.append("backlight") + defines += [("USE_BACKLIGHT", "1")] + sources += ["embed/io/backlight/stm32/tps61043.c"] + paths += ["embed/io/backlight/inc"] if "input" in features_wanted: sources += ["embed/io/i2c_bus/stm32f4/i2c_bus.c"] diff --git a/core/site_scons/models/T3B1/trezor_t3b1_revB.py b/core/site_scons/models/T3B1/trezor_t3b1_revB.py index 6df3d95340..d3f3d7076b 100644 --- a/core/site_scons/models/T3B1/trezor_t3b1_revB.py +++ b/core/site_scons/models/T3B1/trezor_t3b1_revB.py @@ -44,8 +44,9 @@ def configure( ("HW_REVISION", str(hw_revision)), ] - sources += ["embed/io/display/vg-2864/display_driver.c"] - paths += ["embed/io/display/inc"] + if "display" in features_wanted: + sources += ["embed/io/display/vg-2864/display_driver.c"] + paths += ["embed/io/display/inc"] if "input" in features_wanted: sources += ["embed/io/button/stm32/button.c"] diff --git a/core/site_scons/models/T3T1/trezor_t3t1_revE.py b/core/site_scons/models/T3T1/trezor_t3t1_revE.py index 44d8c187ad..02b9ee3d1d 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_revE.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_revE.py @@ -46,22 +46,23 @@ def configure( ("HW_REVISION", str(hw_revision)), ] - sources += ["embed/io/display/st-7789/display_fb.c"] - sources += ["embed/io/display/st-7789/display_driver.c"] - sources += ["embed/io/display/st-7789/display_io.c"] - sources += ["embed/io/display/st-7789/display_panel.c"] - sources += ["embed/io/display/st-7789/panels/lx154a2482.c"] - sources += ["embed/io/display/fb_queue/fb_queue.c"] - paths += ["embed/io/display/inc"] + if "display" in features_wanted: + sources += ["embed/io/display/st-7789/display_fb.c"] + sources += ["embed/io/display/st-7789/display_driver.c"] + sources += ["embed/io/display/st-7789/display_io.c"] + sources += ["embed/io/display/st-7789/display_panel.c"] + sources += ["embed/io/display/st-7789/panels/lx154a2482.c"] + sources += ["embed/io/display/fb_queue/fb_queue.c"] + paths += ["embed/io/display/inc"] - features_available.append("backlight") - defines += [("USE_BACKLIGHT", "1")] - sources += ["embed/io/backlight/stm32/tps61043.c"] - paths += ["embed/io/backlight/inc"] + features_available.append("backlight") + defines += [("USE_BACKLIGHT", "1")] + sources += ["embed/io/backlight/stm32/tps61043.c"] + paths += ["embed/io/backlight/inc"] - env_constraints = env.get("CONSTRAINTS") - if not (env_constraints and "limited_util_s" in env_constraints): - sources += ["embed/io/display/bg_copy/stm32u5/bg_copy.c"] + env_constraints = env.get("CONSTRAINTS") + if not (env_constraints and "limited_util_s" in env_constraints): + sources += ["embed/io/display/bg_copy/stm32u5/bg_copy.c"] if "input" in features_wanted: sources += ["embed/io/i2c_bus/stm32u5/i2c_bus.c"] diff --git a/core/site_scons/models/T3W1/trezor_t3w1_revA.py b/core/site_scons/models/T3W1/trezor_t3w1_revA.py index 536a2db3bf..8906e60db0 100644 --- a/core/site_scons/models/T3W1/trezor_t3w1_revA.py +++ b/core/site_scons/models/T3W1/trezor_t3w1_revA.py @@ -43,20 +43,21 @@ def configure( ("TERMINAL_Y_PADDING", "12"), ] - sources += [ - "embed/io/display/ltdc_dsi/display_driver.c", - "embed/io/display/ltdc_dsi/panels/lx250a2401a/lx250a2401a.c", - "embed/io/display/ltdc_dsi/display_fb.c", - "embed/io/display/ltdc_dsi/display_fb_rgb888.c", - "embed/io/display/ltdc_dsi/display_gfxmmu.c", - "embed/io/display/fb_queue/fb_queue.c", - ] - paths += ["embed/io/display/inc"] + if "display" in features_wanted: + sources += [ + "embed/io/display/ltdc_dsi/display_driver.c", + "embed/io/display/ltdc_dsi/panels/lx250a2401a/lx250a2401a.c", + "embed/io/display/ltdc_dsi/display_fb.c", + "embed/io/display/ltdc_dsi/display_fb_rgb888.c", + "embed/io/display/ltdc_dsi/display_gfxmmu.c", + "embed/io/display/fb_queue/fb_queue.c", + ] + paths += ["embed/io/display/inc"] - features_available.append("backlight") - defines += [("USE_BACKLIGHT", "1")] - sources += ["embed/io/backlight/stm32u5/tps61062.c"] - paths += ["embed/io/backlight/inc"] + features_available.append("backlight") + defines += [("USE_BACKLIGHT", "1")] + sources += ["embed/io/backlight/stm32u5/tps61062.c"] + paths += ["embed/io/backlight/inc"] if "input" in features_wanted: sources += ["embed/io/touch/ft6x36/ft6x36.c"] diff --git a/core/site_scons/models/T3W1/trezor_t3w1_revB.py b/core/site_scons/models/T3W1/trezor_t3w1_revB.py index 919acdac02..2515a53dd3 100644 --- a/core/site_scons/models/T3W1/trezor_t3w1_revB.py +++ b/core/site_scons/models/T3W1/trezor_t3w1_revB.py @@ -43,20 +43,21 @@ def configure( ("TERMINAL_Y_PADDING", "12"), ] - sources += [ - "embed/io/display/ltdc_dsi/display_driver.c", - "embed/io/display/ltdc_dsi/panels/lx250a2401a/lx250a2401a.c", - "embed/io/display/ltdc_dsi/display_fb.c", - "embed/io/display/ltdc_dsi/display_fb_rgb888.c", - "embed/io/display/ltdc_dsi/display_gfxmmu.c", - "embed/io/display/fb_queue/fb_queue.c", - ] - paths += ["embed/io/display/inc"] + if "display" in features_wanted: + sources += [ + "embed/io/display/ltdc_dsi/display_driver.c", + "embed/io/display/ltdc_dsi/panels/lx250a2401a/lx250a2401a.c", + "embed/io/display/ltdc_dsi/display_fb.c", + "embed/io/display/ltdc_dsi/display_fb_rgb888.c", + "embed/io/display/ltdc_dsi/display_gfxmmu.c", + "embed/io/display/fb_queue/fb_queue.c", + ] + paths += ["embed/io/display/inc"] - features_available.append("backlight") - defines += [("USE_BACKLIGHT", "1")] - sources += ["embed/io/backlight/stm32u5/tps61062.c"] - paths += ["embed/io/backlight/inc"] + features_available.append("backlight") + defines += [("USE_BACKLIGHT", "1")] + sources += ["embed/io/backlight/stm32u5/tps61062.c"] + paths += ["embed/io/backlight/inc"] if "input" in features_wanted: sources += ["embed/io/touch/ft6x36/ft6x36.c"] diff --git a/core/site_scons/models/T3W1/trezor_t3w1_revC.py b/core/site_scons/models/T3W1/trezor_t3w1_revC.py index 483632fdfe..a29f03bee7 100644 --- a/core/site_scons/models/T3W1/trezor_t3w1_revC.py +++ b/core/site_scons/models/T3W1/trezor_t3w1_revC.py @@ -43,20 +43,21 @@ def configure( ("TERMINAL_Y_PADDING", "12"), ] - sources += [ - "embed/io/display/ltdc_dsi/display_driver.c", - "embed/io/display/ltdc_dsi/panels/lx250a2401a/lx250a2401a.c", - "embed/io/display/ltdc_dsi/display_fb.c", - "embed/io/display/ltdc_dsi/display_fb_rgb888.c", - "embed/io/display/ltdc_dsi/display_gfxmmu.c", - "embed/io/display/fb_queue/fb_queue.c", - ] - paths += ["embed/io/display/inc"] + if "display" in features_wanted: + sources += [ + "embed/io/display/ltdc_dsi/display_driver.c", + "embed/io/display/ltdc_dsi/panels/lx250a2401a/lx250a2401a.c", + "embed/io/display/ltdc_dsi/display_fb.c", + "embed/io/display/ltdc_dsi/display_fb_rgb888.c", + "embed/io/display/ltdc_dsi/display_gfxmmu.c", + "embed/io/display/fb_queue/fb_queue.c", + ] + paths += ["embed/io/display/inc"] - features_available.append("backlight") - defines += [("USE_BACKLIGHT", "1")] - sources += ["embed/io/backlight/stm32u5/tps61062.c"] - paths += ["embed/io/backlight/inc"] + features_available.append("backlight") + defines += [("USE_BACKLIGHT", "1")] + sources += ["embed/io/backlight/stm32u5/tps61062.c"] + paths += ["embed/io/backlight/inc"] if "input" in features_wanted: sources += ["embed/io/touch/ft6x36/ft6x36.c"]