diff --git a/epicardium/modules/hardware.c b/epicardium/modules/hardware.c index 64581269be530cdb89daf51bed6197f005928964..f753d85a0da4dc16496ad1d8e382e9a0e84bbfb6 100644 --- a/epicardium/modules/hardware.c +++ b/epicardium/modules/hardware.c @@ -80,7 +80,11 @@ int hardware_early_init(void) ; } - display_init(); + /* + * The bootloader has already initialized the display, so we only need + * to do the bare minimum here (mostly the gfx datastructures). + */ + display_init_slim(); /* * RGB LEDs diff --git a/lib/card10/display.c b/lib/card10/display.c index 2756ccb7b1a78a2993ad4b96715ad4d846c77475..52bca138023930b9057e92a2081c673774a9f722 100644 --- a/lib/card10/display.c +++ b/lib/card10/display.c @@ -103,3 +103,18 @@ void display_init(void) txt_init(&display_textb, &display_screen, &Font12); gfx_clear(&display_screen); } + +void display_init_slim(void) +{ + if (!portexpander_detected()) { + // Open-drain + MAX77650_setDRV(false); + // Output + MAX77650_setDIR(false); + } + + GPIO_Config(&DEV_DC_PIN); + + display_screen = gfx_screen(LCD_framebuffer()); + txt_init(&display_textb, &display_screen, &Font12); +} diff --git a/lib/card10/display.h b/lib/card10/display.h index 47f82a37f275babff016ab5b32299b0e2e23a475..5d9508be5c2e9ff19281e1b9c6b006ccf8b0f8da 100644 --- a/lib/card10/display.h +++ b/lib/card10/display.h @@ -6,5 +6,6 @@ extern struct gfx_region display_screen; extern struct txt_buffer display_textb; void display_init(void); +void display_init_slim(void); #endif