GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)

This commit is contained in:
lai
2026-09-06 03:52:57 +08:00
commit b1928b41c0
21813 changed files with 4413081 additions and 0 deletions
+99
View File
@@ -0,0 +1,99 @@
#ifndef __DRV_MISC_H__
#define __DRV_MISC_H__
#include "xmedia_debug.h"
#include "xmedia_type.h"
#include "drv_type_ioctl.h"
//#define SUPPORT_OSD_TIME 1
//#define SUPPORT_SENSOR_PWDN_MODE 1
//#define APP_STANDBY_SENSOR 1
#ifdef SUPPORT_OSD_TIME
#include "xmedia_region.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
CMD_MISC_AOV_INIT = 0,
CMD_MISC_AOV_SET_SENSOR_MODE,
#ifdef SUPPORT_OSD_TIME
CMD_MISC_OSD_TIME_CREATE,
CMD_MISC_OSD_TIME_UPDATE,
CMD_MISC_OSD_TIME_UPDATE_TIMEZONE,
CMD_MISC_OSD_TIME_DESTROY,
#endif
#ifdef SUPPORT_SENSOR_PWDN_MODE
CMD_MISC_SENSOR_PWDN_STANDBY,
CMD_MISC_SENSOR_PWDN_RESUME,
#endif
CMD_MISC_END = 0xFFFF,
} misc_ioctl_cmd;
// ioctl cmd 对应的函数指针
typedef xmedia_s32 (*misc_ctl_ptr_func)(xmedia_ulong arg);
typedef struct misc_ioctl_func_item {
xmedia_u32 cmd;
misc_ctl_ptr_func ptr_func;
} misc_ioctl_func_item;
#ifdef SUPPORT_OSD_TIME
typedef struct __misc_osd_time_attach_info_ {
xmedia_chn_info mpp_chn;
xmedia_rgn_chn_attr chn_attr;
}misc_osd_time_attach_info_t;
typedef struct _misc_osd_time_ {
xmedia_s32 rgn_hdl;
xmedia_rgn_attr rgn_attr;
xmedia_u16 rgn_attach_num;
misc_osd_time_attach_info_t attach_obj[4];
xmedia_u16 font_size_scale;
xmedia_u16 text_color;
xmedia_u16 bg_color;
} misc_osd_time_attr_t;
#endif
typedef struct misc_aov_isp_info{
xmedia_s32 isp_pipe_num;
xmedia_u32 isp_pipe[VI_MAX_DEV_NUM];
#ifdef SUPPORT_SENSOR_PWDN_MODE
xmedia_bool support_sensor_pwdn_standby[VI_MAX_DEV_NUM];
#endif
} misc_aov_isp_info;
typedef struct misc_aov_state{
xmedia_bool en_aov_mode;
xmedia_s32 frame_num;
} misc_aov_state;
#define XMEDIA_MISC_AOV_INIT _IOWR(IOC_TYPE_MISC, CMD_MISC_AOV_INIT, misc_aov_isp_info)
#define XMEDIA_MISC_AOV_SET_SENSOR_MODE _IOWR(IOC_TYPE_MISC, CMD_MISC_AOV_SET_SENSOR_MODE, misc_aov_state)
#ifdef SUPPORT_OSD_TIME
#define XMEDIA_MISC_OSD_TIME_CREATE_CTRL _IOW(IOC_TYPE_MISC, CMD_MISC_OSD_TIME_CREATE, misc_osd_time_attr_t)
#define XMEDIA_MISC_OSD_TIME_UPDATE_CTRL _IOW(IOC_TYPE_MISC, CMD_MISC_OSD_TIME_UPDATE, misc_osd_time_attr_t)
#define XMEDIA_MISC_OSD_TIME_UPDATE_TIMEZONE_CTRL _IOW(IOC_TYPE_MISC, CMD_MISC_OSD_TIME_UPDATE_TIMEZONE, xmedia_s32)
#define XMEDIA_MISC_OSD_TIME_DESTROY_CTRL _IOW(IOC_TYPE_MISC, CMD_MISC_OSD_TIME_DESTROY, misc_osd_time_attr_t)
#endif
#ifdef SUPPORT_SENSOR_PWDN_MODE
#define XMEDIA_MISC_SENSOR_PWDN_STANDBY _IOWR(IOC_TYPE_MISC, CMD_MISC_SENSOR_PWDN_STANDBY, xmedia_s32)
#define XMEDIA_MISC_SENSOR_PWDN_RESUME _IOWR(IOC_TYPE_MISC, CMD_MISC_SENSOR_PWDN_RESUME, xmedia_s32)
#endif
#define MISC_TRACE(level, fmt, ...) \
do { \
MODULE_TRACE(level, MOD_ID_MISC, "[Func]:%s [Line]:%d [Info]:" fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
} while (0)
#ifdef __cplusplus
}
#endif
#endif /* __DRV_MISC_H__ */
@@ -0,0 +1,80 @@
#ifndef DRV_OSD_DRAW_TIME_H
#define DRV_OSD_DRAW_TIME_H
#ifdef __KERNEL__
#include <linux/types.h>
#endif
#include "xmedia_type.h"
#include "drv_misc.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifdef SUPPORT_OSD_TIME
// ARGB1555颜色定义 (1位alpha + 5位RGB)
typedef unsigned short argb1555_t;
// 颜色宏定义
#define ARGB1555(a, r, g, b) (((a) ? 0x8000 : 0) | (((r) & 0xF8) << 7) | (((g) & 0xF8) << 2) | (((b) & 0xF8) >> 3))
#define ARGB1555_BLACK ARGB1555(1, 0, 0, 0)
#define ARGB1555_WHITE ARGB1555(1, 255, 255, 255)
#define ARGB1555_RED ARGB1555(1, 255, 0, 0)
#define ARGB1555_GREEN ARGB1555(1, 0, 255, 0)
#define ARGB1555_BLUE ARGB1555(1, 0, 0, 255)
#define ARGB1555_YELLOW ARGB1555(1, 255, 255, 0)
#define ARGB1555_CYAN ARGB1555(1, 0, 255, 255)
#define ARGB1555_MAGENTA ARGB1555(1, 255, 0, 255)
#define ARGB1555_GRAY ARGB1555(1, 128, 128, 128)
#define ARGB1555_DARKBLUE ARGB1555(1, 0, 0, 128)
#define ARGB1555_ORANGE ARGB1555(1, 255, 165, 0)
// 时间字符串长度是8 "HH:MM:SS"
#define TIME_STRING_LEN 8
// 日期字符串长度是10 "YYYY-MM-DD"
#define DATE_STRING_LEN 10
// 总文本宽度:时间(8字符) + 空格(1字符) + 日期(10字符) + 结束符=20字符
#define TOTAL_OSD_STRING_LEN 20
// 显示上下文结构体
typedef struct {
unsigned char *buffer; // 显示buffer地址
int width; // 屏幕宽度
int height; // 屏幕高度
int stride;
int font_size; // 字体大小
argb1555_t text_color; // 文字颜色
argb1555_t bg_color; // 背景颜色
// 缓存上一次显示的内容,用于增量更新
char last_draw_str[TOTAL_OSD_STRING_LEN];
int display_initialized; // 是否已经初始化显示
} osd_draw_context_t;
// 函数声明
void osd_draw_context_init(osd_draw_context_t *ctx, int width, int height, int stride, int font_size_scale);
void osd_set_colors(osd_draw_context_t *ctx, argb1555_t text_color, argb1555_t bg_color);
void osd_clear_screen(osd_draw_context_t *ctx);
//void draw_pixel(osd_draw_context_t *ctx, int x, int y, argb1555_t color);
//void draw_char(osd_draw_context_t *ctx, int x, int y, char c, argb1555_t color);
void osd_draw_str(osd_draw_context_t *ctx, int x, int y, const char *draw_str, int draw_str_size, argb1555_t color);
void osd_draw_str_ex(osd_draw_context_t *ctx, const char *draw_str, int draw_str_size, unsigned char *buffer);
void osd_get_min_size(osd_draw_context_t *ctx, int *width, int *height);
xmedia_s32 misc_ctl_osd_time_create(xmedia_ulong arg);
xmedia_s32 misc_ctl_osd_time_destroy(xmedia_ulong arg);
xmedia_s32 misc_ctl_osd_time_update(xmedia_ulong arg);
xmedia_s32 misc_ctl_osd_time_update_timezone(xmedia_ulong arg);
xmedia_s32 osd_time_update_all(xmedia_void);
#endif //SUPPORT_OSD_TIME
#ifdef __cplusplus
}
#endif
#endif
+38
View File
@@ -0,0 +1,38 @@
#ifndef __DRV_SENSOR_H__
#define __DRV_SENSOR_H__
#include "xmedia_debug.h"
#include "xmedia_type.h"
#include "drv_type_ioctl.h"
#include <linux/gpio.h>
#include <linux/pwm.h>
#include "common.h"
#include "osal.h"
#include "xmedia_errcode.h"
#include "drv_dev_defines.h"
#include "drv_misc.h"
#include "drv_export.h"
#ifdef __cplusplus
extern "C" {
#endif
xmedia_s32 misc_sensor_init(xmedia_void);
xmedia_s32 misc_sensor_exit(xmedia_void);
xmedia_s32 misc_sensor_resume(xmedia_void);
xmedia_s32 misc_media_suspend(xmedia_void);
xmedia_s32 misc_ctl_aov_init(xmedia_ulong arg);
xmedia_s32 misc_ctl_aov_set_sensor_mode(xmedia_ulong arg);
#ifdef SUPPORT_SENSOR_PWDN_MODE
xmedia_s32 misc_ctl_sensor_pwdn_standby(xmedia_ulong arg);
xmedia_s32 misc_ctl_sensor_pwdn_resume(xmedia_ulong arg);
#endif
#ifdef __cplusplus
}
#endif
#endif /* __DRV_SENSOR_H__ */