From 3134af6e926a539016aa6ef4586f64859b951db9 Mon Sep 17 00:00:00 2001 From: CTCaer Date: Tue, 20 Jan 2026 06:13:02 +0200 Subject: [PATCH] bdk: display: reduce display off waiting time And align oled panel inside vblank. Assumes display deinit happens before the rest of deinit. --- bdk/display/di.c | 4 ++-- bdk/soc/hw_init.c | 16 +++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/bdk/display/di.c b/bdk/display/di.c index 7a540e73..57f96061 100644 --- a/bdk/display/di.c +++ b/bdk/display/di.c @@ -694,8 +694,8 @@ static void _display_panel_and_hw_end(bool no_panel_deinit) DSI(DSI_WR_DATA) = (MIPI_DCS_SET_DISPLAY_OFF << 8) | MIPI_DSI_DCS_SHORT_WRITE; // Wait for 5 frames (HOST1X_CH0_SYNC_SYNCPT_9). - // Not here. Wait for 1 frame manually. - usleep(20000); + // Not here. Wait for 1 frame + transmission manually. + usleep((_panel_id == PANEL_SAM_AMS699VC01) ? (15933 + 195) : (16666 + 230)); // Propagate changes to all register buffers and disable host cmd packets during video. DISPLAY_A(DC_CMD_STATE_ACCESS) = READ_MUX_ACTIVE | WRITE_MUX_ACTIVE; diff --git a/bdk/soc/hw_init.c b/bdk/soc/hw_init.c index 15687a34..9d3d961d 100644 --- a/bdk/soc/hw_init.c +++ b/bdk/soc/hw_init.c @@ -470,7 +470,12 @@ void hw_init() void hw_deinit(bool keep_display) { - bool tegra_t210 = hw_get_chip_id() == GP_HIDREV_MAJOR_T210; + // Seamless display or display power off. + if (!keep_display) + { + display_end(); + clock_disable_host1x(); + } // Scale down BPMP clock. bpmp_clk_rate_set(BPMP_CLK_NORMAL); @@ -495,16 +500,9 @@ void hw_deinit(bool keep_display) hw_config_arbiter(true); // Re-enable clocks to Audio Processing Engine as a workaround to rerunning mbist war. - if (tegra_t210) + if (hw_get_chip_id() == GP_HIDREV_MAJOR_T210) { CLOCK(CLK_RST_CONTROLLER_CLK_ENB_V_SET) = BIT(CLK_V_AHUB); CLOCK(CLK_RST_CONTROLLER_CLK_ENB_Y_SET) = BIT(CLK_Y_APE); } - - // Seamless display or display power off. - if (!keep_display) - { - display_end(); - clock_disable_host1x(); - } }