/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (c) 2019 MediaTek Inc. */ #ifndef __MTK_FB_CONSOLE_H__ #define __MTK_FB_CONSOLE_H__ #ifdef __cplusplus extern "C" { #endif #define UINT8 unsigned char #define UINT32 unsigned int #define INT32 int #define BYTE unsigned char #define MFC_CHECK_RET(expr) \ do { \ enum MFC_STATUS ret = (expr); \ ASSERT(!(ret == MFC_STATUS_OK)); \ } while (0) enum MFC_STATUS { MFC_STATUS_OK = 0, MFC_STATUS_INVALID_ARGUMENT = -1, MFC_STATUS_NOT_IMPLEMENTED = -2, MFC_STATUS_OUT_OF_MEMORY = -3, MFC_STATUS_LOCK_FAIL = -4, MFC_STATUS_FATAL_ERROR = -5, }; #define MFC_HANDLE void * struct MFC_CONTEXT { struct semaphore sem; UINT8 *fb_addr; UINT32 fb_width; UINT32 fb_height; UINT32 fb_bpp; UINT32 fg_color; UINT32 bg_color; UINT32 screen_color; UINT32 rows; UINT32 cols; UINT32 cursor_row; UINT32 cursor_col; UINT32 font_width; UINT32 font_height; UINT32 scale; /*Avoid Kmemleak scan*/ struct file *filp; }; /* MTK Framebuffer Console API */ enum MFC_STATUS MFC_Open(MFC_HANDLE *handle, void *fb_addr, unsigned int fb_width, unsigned int fb_height, unsigned int fb_bpp, unsigned int fg_color, unsigned int bg_color, struct file *filp); enum MFC_STATUS MFC_Open_Ex(MFC_HANDLE *handle, void *fb_addr, unsigned int fb_width, unsigned int fb_height, unsigned int fb_pitch, unsigned int fb_bpp, unsigned int fg_color, unsigned int bg_color, struct file *filp); enum MFC_STATUS MFC_Close(MFC_HANDLE handle); enum MFC_STATUS MFC_SetColor(MFC_HANDLE handle, unsigned int fg_color, unsigned int bg_color); enum MFC_STATUS MFC_ResetCursor(MFC_HANDLE handle); enum MFC_STATUS MFC_Print(MFC_HANDLE handle, const char *str); enum MFC_STATUS MFC_LowMemory_Printf(MFC_HANDLE handle, const char *str, UINT32 fg_color, UINT32 bg_color); enum MFC_STATUS MFC_SetMem(MFC_HANDLE handle, const char *str, UINT32 color); UINT32 MFC_Get_Cursor_Offset(MFC_HANDLE handle); /* -------- screen logger -------- */ struct screen_logger { struct list_head list; char *obj; char *message; }; enum message_mode { MESSAGE_REPLACE = 0, MESSAGE_APPEND = 1 }; void screen_logger_init(void); void screen_logger_add_message(char *obj, enum message_mode mode, char *message); void screen_logger_remove_message(const char *obj); void screen_logger_print(MFC_HANDLE handle); void screen_logger_empty(void); void screen_logger_test_case(MFC_HANDLE handle); #ifdef __cplusplus } #endif #endif /* __MTK_FB_CONSOLE_H__ */