kernel_samsung_a34x-permissive/drivers/gpu/drm/mediatek/mtk_drm_fbconsole.h
2024-04-28 15:49:01 +02:00

106 lines
2.6 KiB
C
Executable file

/* 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__ */