/**
 * @file hv_cal_Osd.h
 * @brief Osd Cal layer interface.
 * @verbatim
 * ==============================================================================
 *                        ##### How to use this driver #####
 * ==============================================================================
 * (+) Use Hv_Cal_OsdInit to init OSD.
 *
 * @endverbatim
 * @author HiView SoC Software Team
 * @version 0.0.1
 * @date 2022-08-22
 */

#ifndef _HV_CAL_OSD_H
#define _HV_CAL_OSD_H

#include "hv_chip_Config.h"

#include "hv_cal_OsdRegs.h"
#include "hv_cal_OsdWindow.h"
#include "hv_cal_OsdRect.h"
#include "hv_cal_OsdGrid.h"
#include "hv_cal_OsdLine.h"
#include "hv_cal_OsdDMA.h"
#include "hv_cal_OsdBlend.h"
#include "hv_cal_OsdGraphic.h"
#include "hv_cal_OsdDDR.h"
#include "hv_cal_OsdScaler.h"
#include "hv_cal_OsdFrame.h"
#include "hv_cal_OsdIndex.h"
#include "hv_cal_OsdTiming.h"
#include "hv_cal_OsdDataPath.h"

#define AXI_BIT_WIDTH 128

#define OSD_HNUM_MAX 14 /* 0-14 */
#define OSD_VNUM_MAX 15 /* 1-15 */
#define OSD_HL_HNUM_MAX 14 /* 0-14 */
#define OSD_HL_VNUM_MAX 14 /* 0-14 */
#define OSD_BORDER_SIZE_MAX 15 /* 0-15 */
#define OSD_SHADOW_SIZE_MAX 15 /* 0-15 */


/**
 * @brief get bits of pixel format
 * @param[in] enFormat pixel format
 * @return bits of the format
 */
UCHAR8 Hv_Cal_Osd_GetPixelBits(OsdPixelFormat enFormat);

/**
 * @brief delay Ms by running nop instruction
 * @param[in] uiDelayMs time in ms
 * @return VOID without return
 */
VOID Hv_Cal_Osd_TimeDelayMs(UINT32 uiDelayMs);
/**
 * @brief Osd Cal init entrance function
 * @param[in] None
 * @return VOID without return
 */
VOID Hv_Cal_Osd_InitSync(VOID);
VOID Hv_Cal_OsdInit(VOID);

#endif
