summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/lcd-16bit.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/firmware/drivers/lcd-16bit.c b/firmware/drivers/lcd-16bit.c
index c91d222..020d6bf 100644
--- a/firmware/drivers/lcd-16bit.c
+++ b/firmware/drivers/lcd-16bit.c
@@ -49,6 +49,10 @@ fb_data lcd_framebuffer[LCD_FBHEIGHT][LCD_FBWIDTH]
static fb_data* lcd_backdrop = NULL;
static long lcd_backdrop_offset IDATA_ATTR = 0;
+#ifdef HAVE_LCD_ENABLE
+static void (*lcd_enable_hook)(void) = NULL;
+#endif
+
static struct viewport default_vp =
{
.x = 0,
@@ -84,6 +88,23 @@ void lcd_init(void)
scroll_init();
}
+/*** Helpers - consolidate optional code ***/
+#ifdef HAVE_LCD_ENABLE
+void lcd_set_enable_hook(void (*enable_hook)(void))
+{
+ lcd_enable_hook = enable_hook;
+}
+
+/* To be called by target driver after enabling display and refreshing it */
+void lcd_call_enable_hook(void)
+{
+ void (*enable_hook)(void) = lcd_enable_hook;
+
+ if (enable_hook != NULL)
+ enable_hook();
+}
+#endif
+
/*** Viewports ***/
void lcd_set_viewport(struct viewport* vp)