blob: 787c32bd245e46f79099b6b9c4762b98364f1833 [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef _HDMI_INFO_GLOBAL_H
#define _HDMI_INFO_GLOBAL_H
#include "hdmi_common.h"
#include "../hdmi_tx_ext.h"
enum hdmi_pixel_repeat {
NO_REPEAT = 0,
HDMI_2_TIMES_REPEAT,
HDMI_3_TIMES_REPEAT,
HDMI_4_TIMES_REPEAT,
HDMI_5_TIMES_REPEAT,
HDMI_6_TIMES_REPEAT,
HDMI_7_TIMES_REPEAT,
HDMI_8_TIMES_REPEAT,
HDMI_9_TIMES_REPEAT,
HDMI_10_TIMES_REPEAT,
MAX_TIMES_REPEAT,
};
enum hdmi_scan {
SS_NO_DATA = 0,
/* where some active pixelsand lines at the edges are not displayed. */
SS_SCAN_OVER,
/* where all active pixels&lines are displayed,
* with or withouta border.
*/
SS_SCAN_UNDER,
SS_RSV
};
enum hdmi_barinfo {
B_INVALID = 0, B_BAR_VERT, /* Vert. Bar Infovalid */
B_BAR_HORIZ, /* Horiz. Bar Infovalid */
B_BAR_VERT_HORIZ,
/* Vert.and Horiz. Bar Info valid */
};
enum hdmi_colourimetry {
CC_NO_DATA = 0, CC_ITU601, CC_ITU709, CC_XVYCC601, CC_XVYCC709,
};
enum hdmi_slacing {
SC_NO_UINFORM = 0,
/* Picture has been scaled horizontally */
SC_SCALE_HORIZ,
SC_SCALE_VERT, /* Picture has been scaled verticallv */
SC_SCALE_HORIZ_VERT,
/* Picture has been scaled horizontally & SC_SCALE_H_V */
};
struct hdmi_videoinfo {
enum hdmi_vic VIC;
enum hdmi_color_space color;
enum hdmi_color_depth color_depth;
enum hdmi_barinfo bar_info;
enum hdmi_pixel_repeat repeat_time;
enum hdmi_aspect_ratio aspect_ratio;
enum hdmi_colourimetry cc;
enum hdmi_scan ss;
enum hdmi_slacing sc;
};
/* -------------------HDMI VIDEO END---------------------------- */
/* -----------------------HDMI TX---------------------------------- */
struct hdmitx_vidpara {
unsigned int VIC;
enum hdmi_color_space color_prefer;
enum hdmi_color_space color;
enum hdmi_color_depth color_depth;
enum hdmi_barinfo bar_info;
enum hdmi_pixel_repeat repeat_time;
enum hdmi_aspect_ratio aspect_ratio;
enum hdmi_colourimetry cc;
enum hdmi_scan ss;
enum hdmi_slacing sc;
};
struct hdmitx_audpara {
enum hdmi_audio_type type;
enum hdmi_audio_chnnum channel_num;
enum hdmi_audio_fs sample_rate;
enum hdmi_audio_sampsize sample_size;
};
/* ACR packet CTS parameters have 3 types: */
/* 1. HW auto calculated */
/* 2. Fixed values defined by Spec */
/* 3. Calculated by clock meter */
enum hdmitx_audcts {
AUD_CTS_AUTO = 0, AUD_CTS_FIXED, AUD_CTS_CALC,
};
struct dispmode_vic {
const char *disp_mode;
enum hdmi_vic VIC;
};
struct hdmitx_audinfo {
/* !< Signal decoding type -- TvAudioType */
enum hdmi_audio_type type;
enum hdmi_audio_format format;
/* !< active audio channels bit mask. */
enum hdmi_audio_chnnum channels;
enum hdmi_audio_fs fs; /* !< Signal sample rate in Hz */
enum hdmi_audio_sampsize ss;
};
#define Y420CMDB_MAX 32
struct hdmitx_info {
struct hdmi_rx_audioinfo audio_info;
/* Hdmi_tx_video_info_t video_info; */
/* -----------------Source Physical Address--------------- */
struct vsdb_phyaddr vsdb_phy_addr;
/* ------------------------------------------------------- */
/* for total = 32*8 = 256 VICs */
/* for Y420CMDB bitmap */
unsigned char bitmap_valid;
unsigned char bitmap_length;
unsigned char y420_all_vic;
unsigned char y420cmdb_bitmap[Y420CMDB_MAX];
/* ------------------------------------------------------- */
};
#endif /* _HDMI_RX_GLOBAL_H */