Files
BPI-CM9-Linux/aml-comp/kernel/aml-6.12/common_drivers/include/uapi/amlogic/lcd.h
T
2026-08-24 10:03:24 +08:00

251 lines
7.3 KiB
C

/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef _INC_LCD_H
#define _INC_LCD_H
#include <linux/types.h>
enum lcd_type_e {
LCD_RGB = 0,
LCD_LVDS,
LCD_VBYONE,
LCD_MIPI,
LCD_MLVDS,
LCD_P2P,
LCD_EDP,
LCD_BT656,
LCD_BT1120,
LCD_TYPE_MAX,
};
struct aml_lcd_panel_info_s {
enum lcd_type_e lcd_type;
unsigned int status;
};
/* **********************************
* HDR info define
* **********************************
*/
struct lcd_optical_info_s {
unsigned int hdr_support;
unsigned int features;
unsigned int primaries_r_x;
unsigned int primaries_r_y;
unsigned int primaries_g_x;
unsigned int primaries_g_y;
unsigned int primaries_b_x;
unsigned int primaries_b_y;
unsigned int white_point_x;
unsigned int white_point_y;
unsigned int luma_max;
unsigned int luma_min;
unsigned int luma_avg;
unsigned char ldim_support; /* adv_flag_0 */
unsigned char adv_flag_1;
unsigned char adv_flag_2;
unsigned char adv_flag_3;
unsigned int luma_peak;
};
/**************************************
* Ioctl Phy Info
* ************************************
*/
#define CH_LANE_MAX 32
struct ioctl_phy_lane_s {
unsigned int preem;
unsigned int amp;
unsigned int rterm;
unsigned char data_sel;
unsigned char pn_swap;
};
struct ioctl_phy_config_s {
unsigned int lane_num; //read only, can't write
unsigned int vswing;
unsigned int vcm;
unsigned int odt;
unsigned int cv_mode;
struct ioctl_phy_lane_s lane[CH_LANE_MAX];
};
/* **********************************
* IOCTL define
* **********************************
*/
struct aml_lcd_tcon_bin_s {
unsigned int index;
unsigned int size;
union {
void *ptr;
long long ptr_length;
};
};
struct aml_lcd_path_s {
char path[256];
};
struct aml_lcd_ss_ctl_s {
unsigned int level;
unsigned int freq;
unsigned int mode;
};
struct aml_lcd_dccd_config_s {
unsigned int size;
union {
void *ptr;
unsigned long long unuse;
} data;
};
/*tcon lut bit define, for ctrl_mask*/
#define LCD_TCON_LUT_MASK 0x00ffffff
#define LCD_TCON_LUT_VAC 0x00000001
#define LCD_TCON_LUT_DEMURA 0x00000002
#define LCD_TCON_LUT_DITHER 0x00000004
#define LCD_TCON_LUT_ACC 0x00000010
#define LCD_TCON_LUT_PRE_ACC 0x00000020
#define LCD_TCON_LUT_OD 0x00000100
#define LCD_TCON_LUT_LOD 0x00000200
/*tcon ctrl sub cmd, for ctrl_type*/
#define LCD_TCON_CTRL_LUT_VALID_GET 0x1
#define LCD_TCON_CTRL_LUT_DEMO_SET 0x2
#define LCD_TCON_CTRL_LUT_DEMO_GET 0x3
struct aml_lcd_tcon_ctrl_s {
unsigned int ctrl_mask;
unsigned int ctrl_type;
unsigned int ctrl_val;
};
#define LCD_IOC_TYPE 'C'
#define LCD_IOC_NR_GET_HDR_INFO 0x0
#define LCD_IOC_NR_SET_HDR_INFO 0x1
#define LCD_IOC_GET_TCON_BIN_MAX_CNT_INFO 0x2
#define LCD_IOC_SET_TCON_DATA_INDEX_INFO 0x3
#define LCD_IOC_GET_TCON_BIN_PATH_INFO 0x4
#define LCD_IOC_SET_TCON_BIN_DATA_INFO 0x5
#define LCD_IOC_POWER_CTRL 0x6
#define LCD_IOC_MUTE_CTRL 0x7
#define LCD_IOC_GET_FRAME_RATE 0x9
#define LCD_IOC_SET_PHY_PARAM 0xa
#define LCD_IOC_GET_PHY_PARAM 0xb
#define LCD_IOC_SET_SS 0xc
#define LCD_IOC_GET_SS 0xd
#define LCD_IOC_SET_TCON_BIN_DATA_FINISH 0xe
#define LCD_IOC_GET_CONFIG_READY 0xf
#define LCD_IOC_GET_PANEL_INFO 0x10
#define LCD_IOC_GET_TCON_PMU_PATH 0x11
/*
* tcon dccd: use 0x20~0x2f
*/
#define TCON_IOC_SET_DCCD 0x20
#define TCON_IOC_SET_QUICK_REG 0x21
#define TCON_IOC_SET_CORE_BASE 0x22
#define TCON_IOC_GET_DCCD_FLG 0x23
#define TCON_IOC_GET_CALC_BUF 0x24
#define TCON_IOC_GET_CALC_STATUS 0x25
#define TCON_IOC_GET_CALC_CNT 0x26
#define TCON_IOC_SET_DCCD_DONE 0x27
/*
* tcon: use 0x30~0x4f
*/
#define TCON_IOC_SET_CTRL 0x30
#define TCON_IOC_GET_CTRL 0x31
#define TCON_IOC_SET_DATA_EFFECT 0x32
#define TCON_IOC_SET_DATA_EFFECT_TYPE 0x33
#define LCD_IOC_CMD_GET_HDR_INFO \
_IOR(LCD_IOC_TYPE, LCD_IOC_NR_GET_HDR_INFO, struct lcd_optical_info_s)
#define LCD_IOC_CMD_SET_HDR_INFO \
_IOW(LCD_IOC_TYPE, LCD_IOC_NR_SET_HDR_INFO, struct lcd_optical_info_s)
#define LCD_IOC_CMD_GET_TCON_BIN_MAX_CNT_INFO \
_IOR(LCD_IOC_TYPE, LCD_IOC_GET_TCON_BIN_MAX_CNT_INFO, unsigned int)
#define LCD_IOC_CMD_SET_TCON_DATA_INDEX_INFO \
_IOW(LCD_IOC_TYPE, LCD_IOC_SET_TCON_DATA_INDEX_INFO, unsigned int)
#define LCD_IOC_CMD_GET_TCON_BIN_PATH_INFO \
_IOR(LCD_IOC_TYPE, LCD_IOC_GET_TCON_BIN_PATH_INFO, struct aml_lcd_path_s)
#define LCD_IOC_CMD_SET_TCON_BIN_DATA_INFO \
_IOW(LCD_IOC_TYPE, LCD_IOC_SET_TCON_BIN_DATA_INFO, struct aml_lcd_tcon_bin_s)
#define LCD_IOC_CMD_POWER_CTRL \
_IOW(LCD_IOC_TYPE, LCD_IOC_POWER_CTRL, unsigned int)
#define LCD_IOC_CMD_MUTE_CTRL \
_IOW(LCD_IOC_TYPE, LCD_IOC_MUTE_CTRL, unsigned int)
#define LCD_IOC_CMD_SET_PHY_PARAM \
_IOW(LCD_IOC_TYPE, LCD_IOC_SET_PHY_PARAM, struct ioctl_phy_config_s)
#define LCD_IOC_CMD_GET_PHY_PARAM \
_IOR(LCD_IOC_TYPE, LCD_IOC_GET_PHY_PARAM, struct ioctl_phy_config_s)
#define LCD_IOC_CMD_SET_SS \
_IOW(LCD_IOC_TYPE, LCD_IOC_SET_SS, struct aml_lcd_ss_ctl_s)
#define LCD_IOC_CMD_GET_SS \
_IOR(LCD_IOC_TYPE, LCD_IOC_GET_SS, struct aml_lcd_ss_ctl_s)
#define LCD_IOC_CMD_SET_TCON_BIN_DATA_FINISH \
_IOW(LCD_IOC_TYPE, LCD_IOC_SET_TCON_BIN_DATA_FINISH, unsigned int)
#define LCD_IOC_CMD_GET_CONFIG_READY \
_IOW(LCD_IOC_TYPE, LCD_IOC_GET_CONFIG_READY, unsigned int)
#define LCD_IOC_CMD_GET_PANEL_INFO \
_IOW(LCD_IOC_TYPE, LCD_IOC_GET_PANEL_INFO, struct aml_lcd_panel_info_s)
#define LCD_IOC_CMD_GET_TCON_PMU_PATH \
_IOW(LCD_IOC_TYPE, LCD_IOC_GET_TCON_PMU_PATH, unsigned long long)
#define TCON_IOC_CMD_SET_DCCD \
_IOW(LCD_IOC_TYPE, TCON_IOC_SET_DCCD, struct aml_lcd_dccd_config_s)
#define TCON_IOC_CMD_SET_QUICK_REG \
_IOW(LCD_IOC_TYPE, TCON_IOC_SET_QUICK_REG, unsigned int)
#define TCON_IOC_CMD_SET_CORE_BASE \
_IOW(LCD_IOC_TYPE, TCON_IOC_SET_CORE_BASE, struct aml_lcd_dccd_config_s)
#define TCON_IOC_CMD_GET_DCCD_FLG \
_IOR(LCD_IOC_TYPE, TCON_IOC_GET_DCCD_FLG, unsigned int)
#define TCON_IOC_CMD_GET_CALC_BUF \
_IOR(LCD_IOC_TYPE, TCON_IOC_GET_CALC_BUF, struct aml_lcd_dccd_config_s)
#define TCON_IOC_CMD_GET_CALC_STATUS \
_IOR(LCD_IOC_TYPE, TCON_IOC_GET_CALC_STATUS, unsigned int)
#define TCON_IOC_CMD_GET_CALC_CNT \
_IOR(LCD_IOC_TYPE, TCON_IOC_GET_CALC_CNT, unsigned int)
#define TCON_IOC_CMD_SET_DCCD_DONE \
_IOW(LCD_IOC_TYPE, TCON_IOC_SET_DCCD_DONE, unsigned int)
#define TCON_IOC_CMD_SET_CTRL \
_IOW(LCD_IOC_TYPE, TCON_IOC_SET_CTRL, struct aml_lcd_tcon_lut_ctrl_s)
#define TCON_IOC_CMD_GET_CTRL \
_IOR(LCD_IOC_TYPE, TCON_IOC_GET_CTRL, struct aml_lcd_tcon_lut_ctrl_s)
#define TCON_IOC_CMD_SET_DATA_EFFECT \
_IOW(LCD_IOC_TYPE, TCON_IOC_SET_DATA_EFFECT, unsigned int)
#define TCON_IOC_CMD_SET_DATA_EFFECT_TYPE \
_IOW(LCD_IOC_TYPE, TCON_IOC_SET_DATA_TYPE, unsigned int)
/* **********************************
* lcd_extern IOCTL define
* **********************************
*/
struct aml_lcd_extern_bin_s {
unsigned int dev_index;
unsigned int i2c_index;
unsigned int multi_id;
unsigned int bin_size;
union {
void *ptr;
long long ptr_length;
};
};
#define LCD_EXT_IOC_TYPE 'E'
#define LCD_EXT_IOC_NR_SET_BIN 0x01
#define LCD_EXT_IOC_CMD_SET_HDR_INFO \
_IOW(LCD_EXT_IOC_TYPE, LCD_EXT_IOC_NR_SET_BIN, struct aml_lcd_extern_bin_s)
#endif