blob: 8b49605b858260a63f6a701263bfaada71c4a9df [file] [log] [blame]
/*
* Color Management
* include/linux/amlogic/media/amvecm/cm.h
*
* Copyright (C) 2010 Amlogic Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef _TVOUT_CM_H
#define _TVOUT_CM_H
/* ******************************************************************* */
/* *** enum definitions ********************************************* */
/* ******************************************************************* */
enum cm_region_idx_e {
CM_REGION_IDX_0 = 0,
CM_REGION_IDX_1,
CM_REGION_IDX_2,
CM_REGION_IDX_3,
CM_REGION_IDX_4,
CM_REGION_IDX_5,
CM_REGION_IDX_6,
CM_REGION_IDX_7,
};
enum cm_sat_shape_e {
CM_SAT_SHAPE_RIGHT_BIGGEST = 0,
CM_SAT_SHAPE_LEFT_BIGGEST,
};
enum cm_hue_shape_e {
CM_HUE_SHAPE_LEFT_MORE = 0,
CM_HUE_SHAPE_RIGHT_MORE,
};
enum cm_demo_pos_e {
CM_DEMO_POS_TOP = 0,
CM_DEMO_POS_BOTTOM,
CM_DEMO_POS_LEFT,
CM_DEMO_POS_RIGHT,
};
enum cm_sat_sel_e {
CM_SAT_SEL_U2_V2 = 0,
CM_SAT_SEL_UV_MAX,
};
enum cm_csc_e {
CM_CSC_601 = 0,
CM_CSC_709,
CM_CSC_FULL_601,
CM_CSC_FULL_709,
};
/* ******************************************************************* */
/* *** struct definitions ********************************************* */
/* ******************************************************************* */
struct cm_region_s {
enum cm_region_idx_e region_idx;
/* sym */
unsigned char sym_en;
/* sat - top */
unsigned char sat_en;
unsigned char sat_central_en;
enum cm_sat_shape_e sat_shape;
unsigned char sat_gain;
unsigned char sat_inc;
/* sat - lum */
unsigned char sat_lum_h_slope;
unsigned char sat_lum_l_slope;
unsigned char sat_lum_h;
unsigned char sat_lum_l;
/* sat - sat */
unsigned char sat_sat_h_slope;
unsigned char sat_sat_l_slope;
unsigned char sat_sat_h;
unsigned char sat_sat_l;
/* hue - top */
unsigned char hue_en;
unsigned char hue_central_en;
enum cm_hue_shape_e hue_shape;
unsigned char hue_gain;
unsigned char hue_clockwise;
unsigned char hue_shf_ran;
unsigned short hue_shf_sta;
/* hue - lum */
unsigned char hue_lum_h_slope;
unsigned char hue_lum_l_slope;
unsigned char hue_lum_h;
unsigned char hue_lum_l;
/* hue - sat */
unsigned char hue_sat_h_slope;
unsigned char hue_sat_l_slope;
unsigned char hue_sat_h;
unsigned char hue_sat_l;
};
struct cm_top_s {
unsigned char chroma_en;
enum cm_sat_sel_e sat_sel;
unsigned char uv_adj_en;
unsigned char rgb_to_hue_en;
enum cm_csc_e csc_sel;
};
struct cm_cbar_s {
unsigned char en;
unsigned char wid;
unsigned char cr;
unsigned char cb;
unsigned char y;
};
struct cm_demo_s {
unsigned char en;
enum cm_demo_pos_e pos;
unsigned char hlight_adj;
unsigned short wid;
struct cm_cbar_s cbar;
};
struct cm_regmap_s {
unsigned long reg[50];
};
enum reg_bus_type_e {
REG_TYPE_PHY = 0,
REG_TYPE_CBUS = 1,
REG_TYPE_APB = 2,
REG_TYPE_AXI = 3,
REG_TYPE_AHB = 4,
REG_TYPE_MPEG = 5,
REG_TYPE_INDEX_VPPCHROMA = 6,
REG_TYPE_INDEX_GAMMA = 7,
VALUE_TYPE_CONTRAST_BRIGHTNESS = 8,
REG_TYPE_INDEX_VPP_COEF = 9,
REG_TYPE_VCBUS = 10,
REG_TYPE_MAX,
};
/* Register table structure */
struct am_reg_s {
unsigned int type; /* 32-bits; 0: CBUS; 1: APB BUS... */
unsigned int addr; /* 32-bits; Register address */
unsigned int mask; /* 32-bits; Valid bits */
unsigned int val; /* 32-bits; Register Value */
};
#define am_reg_size 900
struct am_regs_s {
unsigned int length; /* Length of total am_reg */
struct am_reg_s am_reg[am_reg_size];
};
#endif /* _TVOUT_CM_H */