blob: 9546e4f710a9c5855a47cd01a6abb849e4fa7194 [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* include/linux/amlogic/media/di/di.h
*
* Copyright (C) 2017 Amlogic, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
*/
#ifndef DI_H
#define DI_H
void dim_post_keep_cmd_release2(struct vframe_s *vframe);
/************************************************
* dim_polic_cfg
************************************************/
void dim_polic_cfg(unsigned int cmd, bool on);
#define K_DIM_BYPASS_CLEAR_ALL (0)
#define K_DIM_I_FIRST (1)
#define K_DIM_BYPASS_ALL_P (2)
/************************************************
* di_api_get_instance_id
* only for deinterlace
* get current instance_id
************************************************/
u32 di_api_get_instance_id(void);
/************************************************
* di_api_post_disable
* only for deinterlace
************************************************/
void di_api_post_disable(void);
/**************************************************
* function:
* get report information from di;
* version:
*
* spt_bits: bit 0 for decontour,
* is 1 when there are decontour information;
* is 0 when there are no decontour information;
* dct_map_0: DCTR_MAP_HIST_0
* dct_sta_0: DCTR_STA_HIST_0
* dct_sta_1: DCTR_STA_HIST_1
**************************************************/
struct dim_rpt_s {
unsigned int version;
unsigned int spt_bits;/*bit 0: dct*/
unsigned int dct_map_0;
unsigned int dct_map_1;
unsigned int dct_map_2;
unsigned int dct_map_3;
unsigned int dct_map_15;
unsigned int dct_bld_2;
};
enum DIM_DB_SV {
DIM_DB_SV_DCT_BL2, /* DCTR_BLENDING2 */
};
#define DIM_DB_SAVE_NUB 1
/**************************************************
* function:
* get report information from di;
* vfm:
* input vframe;
* return:
* NULL: there is no report information from vfm;
* other: refer to struct dim_rpt_s
**************************************************/
struct dim_rpt_s *dim_api_getrpt(struct vframe_s *vfm);
/**************************************************
* function:
* select db value or pq value;
* idx:
* ref to DIM_DB_SV's define
* mode:
* 0: db value;
* 1: value from pdate;
* pdate: only useful when mode is 1.
* value / mask
**************************************************/
bool dim_pq_db_sel(unsigned int idx, unsigned int mode, unsigned int *pdate);
void dim_pq_db_setreg(unsigned int nub, unsigned int *preg);
bool dim_config_crc_ic(void);
#endif /* VIDEO_H */