blob: cd29d6ac5e2b3a234a59a4597b7acf0d071351f9 [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef _DOBLY_VISION_H_
#define _DOBLY_VISION_H_
#define EXT_MD_AVAIL_LEVEL_1 (1 << 0)
#define EXT_MD_AVAIL_LEVEL_2 (1 << 1)
#define EXT_MD_AVAIL_LEVEL_4 (1 << 2)
#define EXT_MD_AVAIL_LEVEL_5 (1 << 3)
#define EXT_MD_AVAIL_LEVEL_6 (1 << 4)
#define EXT_MD_AVAIL_LEVEL_255 (1 << 31)
#define DOLBY_VISION_OUTPUT_MODE_IPT 0
#define DOLBY_VISION_OUTPUT_MODE_IPT_TUNNEL 1
#define DOLBY_VISION_OUTPUT_MODE_HDR10 2
#define DOLBY_VISION_OUTPUT_MODE_SDR10 3
#define DOLBY_VISION_OUTPUT_MODE_SDR8 4
#define DOLBY_VISION_OUTPUT_MODE_BYPASS 5
#define DOLBY_VISION_LL_DISABLE 0
#define DOLBY_VISION_LL_YUV422 1
#define DOLBY_VISION_LL_RGB444 2
#define DOLBY_VISION_SET_DISABLE "0"
#define DOLBY_VISION_SET_STD "1"
#define DOLBY_VISION_SET_LL_YUV "2"
#define DOLBY_VISION_SET_LL_RGB "3"
enum vpp_matrix_sel_e {
VPP_MATRIX_0 = 0, /* OSD convert matrix - new from GXL */
VPP_MATRIX_1, /* vd1 matrix before post-blend */
VPP_MATRIX_2, /* post matrix */
VPP_MATRIX_3, /* xvycc matrix */
VPP_MATRIX_4, /* in video eotf - new from GXL */
VPP_MATRIX_5, /* in osd eotf - new from GXL */
VPP_MATRIX_6 /* vd2 matrix before pre-blend */
};
#define NUM_MATRIX 6
/* matrix names */
#define VPP_MATRIX_OSD VPP_MATRIX_0
#define VPP_MATRIX_VD1 VPP_MATRIX_1
#define VPP_MATRIX_POST VPP_MATRIX_2
#define VPP_MATRIX_XVYCC VPP_MATRIX_3
#define VPP_MATRIX_EOTF VPP_MATRIX_4
#define VPP_MATRIX_OSD_EOTF VPP_MATRIX_5
#define VPP_MATRIX_VD2 VPP_MATRIX_6
#define CSC_ON 1
#define CSC_OFF 0
enum mtx_en_e {
POST_MTX_EN = 0,
VD2_MTX_EN = 4,
VD1_MTX_EN,
XVY_MTX_EN,
OSD1_MTX_EN
};
struct dovi_mode_s {
u8 dv_rgb_444_8bit;
u8 ll_ycbcr_422_12bit;
u8 ll_rgb_444_10bit;
u8 ll_rgb_444_12bit;
u8 sup_2160p60hz;
};
#define POST_MTX_EN_MASK (1 << POST_MTX_EN)
#define VD2_MTX_EN_MASK (1 << VD2_MTX_EN)
#define VD1_MTX_EN_MASK (1 << VD1_MTX_EN)
#define XVY_MTX_EN_MASK (1 << XVY_MTX_EN)
#define OSD1_MTX_EN_MASK (1 << OSD1_MTX_EN)
#define DEF_G2L_LUT_SIZE_2P 8
#define DEF_G2L_LUT_SIZE (1 << DEF_G2L_LUT_SIZE_2P)
void dolby_vision_process(void);
void send_hdmi_pkt(void);
int apply_stb_core_settings(void);
unsigned int dv_read_reg(unsigned int addr);
void dv_write_reg(unsigned int addr, unsigned int value);
void dolbyvision_dump_setting(void);
void dolbyvision_debug(int enable_debug);
#ifdef CONFIG_AML_DOLBY
extern int is_dolby_enable(void);
extern bool request_ll_mode(void);
extern bool check_dolby_vision_on(void);
#else
int __attribute__((weak))is_dolby_enable(void)
{
return 0;
}
bool __attribute__((weak))request_ll_mode(void)
{
return false;
}
bool __attribute__((weak))check_dolby_vision_on(void)
{
return false;
}
#endif
#endif