![Lior Dotan](/assets/img/avatar_default.png)
Remove typedefs from driver Signed-of-by: Lior Dotan <liodot@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
364 lines
14 KiB
C
364 lines
14 KiB
C
/***************************************************************************
|
|
* Copyright (c) 2005-2009, Broadcom Corporation.
|
|
*
|
|
* Name: crystalhd_fw_if . h
|
|
*
|
|
* Description:
|
|
* BCM70012 Firmware interface definitions.
|
|
*
|
|
* HISTORY:
|
|
*
|
|
**********************************************************************
|
|
* This file is part of the crystalhd device driver.
|
|
*
|
|
* This driver 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, version 2 of the License.
|
|
*
|
|
* This driver 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.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this driver. If not, see <http://www.gnu.org/licenses/>.
|
|
**********************************************************************/
|
|
|
|
#ifndef _CRYSTALHD_FW_IF_H_
|
|
#define _CRYSTALHD_FW_IF_H_
|
|
|
|
/* TBD: Pull in only required defs into this file.. */
|
|
|
|
/* User Data Header */
|
|
struct user_data {
|
|
struct user_data *next;
|
|
uint32_t type;
|
|
uint32_t size;
|
|
};
|
|
|
|
/*------------------------------------------------------*
|
|
* MPEG Extension to the PPB *
|
|
*------------------------------------------------------*/
|
|
struct ppb_mpeg {
|
|
uint32_t to_be_defined;
|
|
uint32_t valid;
|
|
|
|
/* Always valid, defaults to picture size if no
|
|
sequence display extension in the stream. */
|
|
uint32_t display_horizontal_size;
|
|
uint32_t display_vertical_size;
|
|
|
|
/* MPEG_VALID_PANSCAN
|
|
Offsets are a copy values from the MPEG stream. */
|
|
uint32_t offset_count;
|
|
int32_t horizontal_offset[3];
|
|
int32_t vertical_offset[3];
|
|
|
|
/* MPEG_VALID_USERDATA
|
|
User data is in the form of a linked list. */
|
|
int32_t userDataSize;
|
|
struct user_data *userData;
|
|
|
|
};
|
|
|
|
|
|
/*------------------------------------------------------*
|
|
* VC1 Extension to the PPB *
|
|
*------------------------------------------------------*/
|
|
struct ppb_vc1 {
|
|
uint32_t to_be_defined;
|
|
uint32_t valid;
|
|
|
|
/* Always valid, defaults to picture size if no
|
|
sequence display extension in the stream. */
|
|
uint32_t display_horizontal_size;
|
|
uint32_t display_vertical_size;
|
|
|
|
/* VC1 pan scan windows */
|
|
uint32_t num_panscan_windows;
|
|
int32_t ps_horiz_offset[4];
|
|
int32_t ps_vert_offset[4];
|
|
int32_t ps_width[4];
|
|
int32_t ps_height[4];
|
|
|
|
/* VC1_VALID_USERDATA
|
|
User data is in the form of a linked list. */
|
|
int32_t userDataSize;
|
|
struct user_data *userData;
|
|
|
|
};
|
|
|
|
/*------------------------------------------------------*
|
|
* H.264 Extension to the PPB *
|
|
*------------------------------------------------------*/
|
|
|
|
/**
|
|
* @brief Film grain SEI message.
|
|
*
|
|
* Content of the film grain SEI message.
|
|
*/
|
|
|
|
/* maximum number of model-values as for Thomson spec(standard says 5) */
|
|
#define MAX_FGT_MODEL_VALUE (3)
|
|
|
|
/* maximum number of intervals(as many as 256 intervals?) */
|
|
#define MAX_FGT_VALUE_INTERVAL (256)
|
|
|
|
struct fgt_sei {
|
|
struct fgt_sei *next;
|
|
unsigned char model_values[3][MAX_FGT_VALUE_INTERVAL][MAX_FGT_MODEL_VALUE];
|
|
unsigned char upper_bound[3][MAX_FGT_VALUE_INTERVAL];
|
|
unsigned char lower_bound[3][MAX_FGT_VALUE_INTERVAL];
|
|
|
|
unsigned char cancel_flag; /* Cancel flag: 1 no film grain. */
|
|
unsigned char model_id; /* Model id. */
|
|
|
|
/* +unused SE based on Thomson spec */
|
|
unsigned char color_desc_flag; /* Separate color descrition flag. */
|
|
unsigned char bit_depth_luma; /* Bit depth luma minus 8. */
|
|
unsigned char bit_depth_chroma; /* Bit depth chroma minus 8. */
|
|
unsigned char full_range_flag; /* Full range flag. */
|
|
unsigned char color_primaries; /* Color primaries. */
|
|
unsigned char transfer_charact; /* Transfer characteristics. */
|
|
unsigned char matrix_coeff; /*< Matrix coefficients. */
|
|
/* -unused SE based on Thomson spec */
|
|
|
|
unsigned char blending_mode_id; /* Blending mode. */
|
|
unsigned char log2_scale_factor; /* Log2 scale factor (2-7). */
|
|
unsigned char comp_flag[3]; /* Components [0,2] parameters present flag. */
|
|
unsigned char num_intervals_minus1[3]; /* Number of intensity level intervals. */
|
|
unsigned char num_model_values[3]; /* Number of model values. */
|
|
uint16_t repetition_period; /* Repetition period (0-16384) */
|
|
|
|
};
|
|
|
|
struct ppb_h264 {
|
|
/* 'valid' specifies which fields (or sets of
|
|
* fields) below are valid. If the corresponding
|
|
* bit in 'valid' is NOT set then that field(s)
|
|
* is (are) not initialized. */
|
|
uint32_t valid;
|
|
|
|
int32_t poc_top; /* POC for Top Field/Frame */
|
|
int32_t poc_bottom; /* POC for Bottom Field */
|
|
uint32_t idr_pic_id;
|
|
|
|
/* H264_VALID_PANSCAN */
|
|
uint32_t pan_scan_count;
|
|
int32_t pan_scan_left[3];
|
|
int32_t pan_scan_right[3];
|
|
int32_t pan_scan_top[3];
|
|
int32_t pan_scan_bottom[3];
|
|
|
|
/* H264_VALID_CT_TYPE */
|
|
uint32_t ct_type_count;
|
|
uint32_t ct_type[3];
|
|
|
|
/* H264_VALID_SPS_CROP */
|
|
int32_t sps_crop_left;
|
|
int32_t sps_crop_right;
|
|
int32_t sps_crop_top;
|
|
int32_t sps_crop_bottom;
|
|
|
|
/* H264_VALID_VUI */
|
|
uint32_t chroma_top;
|
|
uint32_t chroma_bottom;
|
|
|
|
/* H264_VALID_USER */
|
|
uint32_t user_data_size;
|
|
struct user_data *user_data;
|
|
|
|
/* H264 VALID FGT */
|
|
struct fgt_sei *pfgt;
|
|
|
|
};
|
|
|
|
struct ppb {
|
|
/* Common fields. */
|
|
uint32_t picture_number; /* Ordinal display number */
|
|
uint32_t video_buffer; /* Video (picbuf) number */
|
|
uint32_t video_address; /* Address of picbuf Y */
|
|
uint32_t video_address_uv; /* Address of picbuf UV */
|
|
uint32_t video_stripe; /* Picbuf stripe */
|
|
uint32_t video_width; /* Picbuf width */
|
|
uint32_t video_height; /* Picbuf height */
|
|
|
|
uint32_t channel_id; /* Decoder channel ID */
|
|
uint32_t status; /* reserved */
|
|
uint32_t width; /* pixels */
|
|
uint32_t height; /* pixels */
|
|
uint32_t chroma_format; /* see above */
|
|
uint32_t pulldown; /* see above */
|
|
uint32_t flags; /* see above */
|
|
uint32_t pts; /* 32 LSBs of PTS */
|
|
uint32_t protocol; /* protocolXXX (above) */
|
|
|
|
uint32_t frame_rate; /* see above */
|
|
uint32_t matrix_coeff; /* see above */
|
|
uint32_t aspect_ratio; /* see above */
|
|
uint32_t colour_primaries; /* see above */
|
|
uint32_t transfer_char; /* see above */
|
|
uint32_t pcr_offset; /* 45kHz if PCR type; else 27MHz */
|
|
uint32_t n_drop; /* Number of pictures to be dropped */
|
|
|
|
uint32_t custom_aspect_ratio_width_height;
|
|
/* upper 16-bits is Y and lower 16-bits is X */
|
|
|
|
uint32_t picture_tag; /* Indexing tag from BUD packets */
|
|
uint32_t picture_done_payload;
|
|
uint32_t picture_meta_payload;
|
|
uint32_t reserved[1];
|
|
|
|
/* Protocol-specific extensions. */
|
|
union {
|
|
struct ppb_h264 h264;
|
|
struct ppb_mpeg mpeg;
|
|
struct ppb_vc1 vc1;
|
|
} other;
|
|
|
|
};
|
|
|
|
struct c011_pib {
|
|
uint32_t bFormatChange;
|
|
uint32_t resolution;
|
|
uint32_t channelId;
|
|
uint32_t ppbPtr;
|
|
int32_t ptsStcOffset;
|
|
uint32_t zeroPanscanValid;
|
|
uint32_t dramOutBufAddr;
|
|
uint32_t yComponent;
|
|
struct ppb ppb;
|
|
|
|
};
|
|
|
|
struct dec_rsp_channel_start_video {
|
|
uint32_t command;
|
|
uint32_t sequence;
|
|
uint32_t status;
|
|
uint32_t picBuf;
|
|
uint32_t picRelBuf;
|
|
uint32_t picInfoDeliveryQ;
|
|
uint32_t picInfoReleaseQ;
|
|
uint32_t channelStatus;
|
|
uint32_t userDataDeliveryQ;
|
|
uint32_t userDataReleaseQ;
|
|
uint32_t transportStreamCaptureAddr;
|
|
uint32_t asyncEventQ;
|
|
|
|
};
|
|
|
|
#define eCMD_C011_CMD_BASE (0x73763000)
|
|
|
|
/* host commands */
|
|
enum c011_ts_cmd {
|
|
eCMD_TS_GET_NEXT_PIC = 0x7376F100, /* debug get next picture */
|
|
eCMD_TS_GET_LAST_PIC = 0x7376F102, /* debug get last pic status */
|
|
eCMD_TS_READ_WRITE_MEM = 0x7376F104, /* debug read write memory */
|
|
|
|
/* New API commands */
|
|
/* General commands */
|
|
eCMD_C011_INIT = eCMD_C011_CMD_BASE + 0x01,
|
|
eCMD_C011_RESET = eCMD_C011_CMD_BASE + 0x02,
|
|
eCMD_C011_SELF_TEST = eCMD_C011_CMD_BASE + 0x03,
|
|
eCMD_C011_GET_VERSION = eCMD_C011_CMD_BASE + 0x04,
|
|
eCMD_C011_GPIO = eCMD_C011_CMD_BASE + 0x05,
|
|
eCMD_C011_DEBUG_SETUP = eCMD_C011_CMD_BASE + 0x06,
|
|
|
|
/* Decoding commands */
|
|
eCMD_C011_DEC_CHAN_OPEN = eCMD_C011_CMD_BASE + 0x100,
|
|
eCMD_C011_DEC_CHAN_CLOSE = eCMD_C011_CMD_BASE + 0x101,
|
|
eCMD_C011_DEC_CHAN_ACTIVATE = eCMD_C011_CMD_BASE + 0x102,
|
|
eCMD_C011_DEC_CHAN_STATUS = eCMD_C011_CMD_BASE + 0x103,
|
|
eCMD_C011_DEC_CHAN_FLUSH = eCMD_C011_CMD_BASE + 0x104,
|
|
eCMD_C011_DEC_CHAN_TRICK_PLAY = eCMD_C011_CMD_BASE + 0x105,
|
|
eCMD_C011_DEC_CHAN_TS_PIDS = eCMD_C011_CMD_BASE + 0x106,
|
|
eCMD_C011_DEC_CHAN_PS_STREAM_ID = eCMD_C011_CMD_BASE + 0x107,
|
|
eCMD_C011_DEC_CHAN_INPUT_PARAMS = eCMD_C011_CMD_BASE + 0x108,
|
|
eCMD_C011_DEC_CHAN_VIDEO_OUTPUT = eCMD_C011_CMD_BASE + 0x109,
|
|
eCMD_C011_DEC_CHAN_OUTPUT_FORMAT = eCMD_C011_CMD_BASE + 0x10A,
|
|
eCMD_C011_DEC_CHAN_SCALING_FILTERS = eCMD_C011_CMD_BASE + 0x10B,
|
|
eCMD_C011_DEC_CHAN_OSD_MODE = eCMD_C011_CMD_BASE + 0x10D,
|
|
eCMD_C011_DEC_CHAN_DROP = eCMD_C011_CMD_BASE + 0x10E,
|
|
eCMD_C011_DEC_CHAN_RELEASE = eCMD_C011_CMD_BASE + 0x10F,
|
|
eCMD_C011_DEC_CHAN_STREAM_SETTINGS = eCMD_C011_CMD_BASE + 0x110,
|
|
eCMD_C011_DEC_CHAN_PAUSE_OUTPUT = eCMD_C011_CMD_BASE + 0x111,
|
|
eCMD_C011_DEC_CHAN_CHANGE = eCMD_C011_CMD_BASE + 0x112,
|
|
eCMD_C011_DEC_CHAN_SET_STC = eCMD_C011_CMD_BASE + 0x113,
|
|
eCMD_C011_DEC_CHAN_SET_PTS = eCMD_C011_CMD_BASE + 0x114,
|
|
eCMD_C011_DEC_CHAN_CC_MODE = eCMD_C011_CMD_BASE + 0x115,
|
|
eCMD_C011_DEC_CREATE_AUDIO_CONTEXT = eCMD_C011_CMD_BASE + 0x116,
|
|
eCMD_C011_DEC_COPY_AUDIO_CONTEXT = eCMD_C011_CMD_BASE + 0x117,
|
|
eCMD_C011_DEC_DELETE_AUDIO_CONTEXT = eCMD_C011_CMD_BASE + 0x118,
|
|
eCMD_C011_DEC_CHAN_SET_DECYPTION = eCMD_C011_CMD_BASE + 0x119,
|
|
eCMD_C011_DEC_CHAN_START_VIDEO = eCMD_C011_CMD_BASE + 0x11A,
|
|
eCMD_C011_DEC_CHAN_STOP_VIDEO = eCMD_C011_CMD_BASE + 0x11B,
|
|
eCMD_C011_DEC_CHAN_PIC_CAPTURE = eCMD_C011_CMD_BASE + 0x11C,
|
|
eCMD_C011_DEC_CHAN_PAUSE = eCMD_C011_CMD_BASE + 0x11D,
|
|
eCMD_C011_DEC_CHAN_PAUSE_STATE = eCMD_C011_CMD_BASE + 0x11E,
|
|
eCMD_C011_DEC_CHAN_SET_SLOWM_RATE = eCMD_C011_CMD_BASE + 0x11F,
|
|
eCMD_C011_DEC_CHAN_GET_SLOWM_RATE = eCMD_C011_CMD_BASE + 0x120,
|
|
eCMD_C011_DEC_CHAN_SET_FF_RATE = eCMD_C011_CMD_BASE + 0x121,
|
|
eCMD_C011_DEC_CHAN_GET_FF_RATE = eCMD_C011_CMD_BASE + 0x122,
|
|
eCMD_C011_DEC_CHAN_FRAME_ADVANCE = eCMD_C011_CMD_BASE + 0x123,
|
|
eCMD_C011_DEC_CHAN_SET_SKIP_PIC_MODE = eCMD_C011_CMD_BASE + 0x124,
|
|
eCMD_C011_DEC_CHAN_GET_SKIP_PIC_MODE = eCMD_C011_CMD_BASE + 0x125,
|
|
eCMD_C011_DEC_CHAN_FILL_PIC_BUF = eCMD_C011_CMD_BASE + 0x126,
|
|
eCMD_C011_DEC_CHAN_SET_CONTINUITY_CHECK = eCMD_C011_CMD_BASE + 0x127,
|
|
eCMD_C011_DEC_CHAN_GET_CONTINUITY_CHECK = eCMD_C011_CMD_BASE + 0x128,
|
|
eCMD_C011_DEC_CHAN_SET_BRCM_TRICK_MODE = eCMD_C011_CMD_BASE + 0x129,
|
|
eCMD_C011_DEC_CHAN_GET_BRCM_TRICK_MODE = eCMD_C011_CMD_BASE + 0x12A,
|
|
eCMD_C011_DEC_CHAN_REVERSE_FIELD_STATUS = eCMD_C011_CMD_BASE + 0x12B,
|
|
eCMD_C011_DEC_CHAN_I_PICTURE_FOUND = eCMD_C011_CMD_BASE + 0x12C,
|
|
eCMD_C011_DEC_CHAN_SET_PARAMETER = eCMD_C011_CMD_BASE + 0x12D,
|
|
eCMD_C011_DEC_CHAN_SET_USER_DATA_MODE = eCMD_C011_CMD_BASE + 0x12E,
|
|
eCMD_C011_DEC_CHAN_SET_PAUSE_DISPLAY_MODE = eCMD_C011_CMD_BASE + 0x12F,
|
|
eCMD_C011_DEC_CHAN_SET_SLOW_DISPLAY_MODE = eCMD_C011_CMD_BASE + 0x130,
|
|
eCMD_C011_DEC_CHAN_SET_FF_DISPLAY_MODE = eCMD_C011_CMD_BASE + 0x131,
|
|
eCMD_C011_DEC_CHAN_SET_DISPLAY_TIMING_MODE = eCMD_C011_CMD_BASE + 0x132,
|
|
eCMD_C011_DEC_CHAN_SET_DISPLAY_MODE = eCMD_C011_CMD_BASE + 0x133,
|
|
eCMD_C011_DEC_CHAN_GET_DISPLAY_MODE = eCMD_C011_CMD_BASE + 0x134,
|
|
eCMD_C011_DEC_CHAN_SET_REVERSE_FIELD = eCMD_C011_CMD_BASE + 0x135,
|
|
eCMD_C011_DEC_CHAN_STREAM_OPEN = eCMD_C011_CMD_BASE + 0x136,
|
|
eCMD_C011_DEC_CHAN_SET_PCR_PID = eCMD_C011_CMD_BASE + 0x137,
|
|
eCMD_C011_DEC_CHAN_SET_VID_PID = eCMD_C011_CMD_BASE + 0x138,
|
|
eCMD_C011_DEC_CHAN_SET_PAN_SCAN_MODE = eCMD_C011_CMD_BASE + 0x139,
|
|
eCMD_C011_DEC_CHAN_START_DISPLAY_AT_PTS = eCMD_C011_CMD_BASE + 0x140,
|
|
eCMD_C011_DEC_CHAN_STOP_DISPLAY_AT_PTS = eCMD_C011_CMD_BASE + 0x141,
|
|
eCMD_C011_DEC_CHAN_SET_DISPLAY_ORDER = eCMD_C011_CMD_BASE + 0x142,
|
|
eCMD_C011_DEC_CHAN_GET_DISPLAY_ORDER = eCMD_C011_CMD_BASE + 0x143,
|
|
eCMD_C011_DEC_CHAN_SET_HOST_TRICK_MODE = eCMD_C011_CMD_BASE + 0x144,
|
|
eCMD_C011_DEC_CHAN_SET_OPERATION_MODE = eCMD_C011_CMD_BASE + 0x145,
|
|
eCMD_C011_DEC_CHAN_DISPLAY_PAUSE_UNTO_PTS = eCMD_C011_CMD_BASE + 0x146,
|
|
eCMD_C011_DEC_CHAN_SET_PTS_STC_DIFF_THRESHOLD = eCMD_C011_CMD_BASE + 0x147,
|
|
eCMD_C011_DEC_CHAN_SEND_COMPRESSED_BUF = eCMD_C011_CMD_BASE + 0x148,
|
|
eCMD_C011_DEC_CHAN_SET_CLIPPING = eCMD_C011_CMD_BASE + 0x149,
|
|
eCMD_C011_DEC_CHAN_SET_PARAMETERS_FOR_HARD_RESET_INTERRUPT_TO_HOST
|
|
= eCMD_C011_CMD_BASE + 0x150,
|
|
|
|
/* Decoder RevD commands */
|
|
eCMD_C011_DEC_CHAN_SET_CSC = eCMD_C011_CMD_BASE + 0x180, /* color space conversion */
|
|
eCMD_C011_DEC_CHAN_SET_RANGE_REMAP = eCMD_C011_CMD_BASE + 0x181,
|
|
eCMD_C011_DEC_CHAN_SET_FGT = eCMD_C011_CMD_BASE + 0x182,
|
|
/* Note: 0x183 not implemented yet in Rev D main */
|
|
eCMD_C011_DEC_CHAN_SET_LASTPICTURE_PADDING = eCMD_C011_CMD_BASE + 0x183,
|
|
|
|
/* Decoder 7412 commands (7412-only) */
|
|
eCMD_C011_DEC_CHAN_SET_CONTENT_KEY = eCMD_C011_CMD_BASE + 0x190,
|
|
eCMD_C011_DEC_CHAN_SET_SESSION_KEY = eCMD_C011_CMD_BASE + 0x191,
|
|
eCMD_C011_DEC_CHAN_FMT_CHANGE_ACK = eCMD_C011_CMD_BASE + 0x192,
|
|
|
|
eCMD_C011_DEC_CHAN_CUSTOM_VIDOUT = eCMD_C011_CMD_BASE + 0x1FF,
|
|
|
|
/* Encoding commands */
|
|
eCMD_C011_ENC_CHAN_OPEN = eCMD_C011_CMD_BASE + 0x200,
|
|
eCMD_C011_ENC_CHAN_CLOSE = eCMD_C011_CMD_BASE + 0x201,
|
|
eCMD_C011_ENC_CHAN_ACTIVATE = eCMD_C011_CMD_BASE + 0x202,
|
|
eCMD_C011_ENC_CHAN_CONTROL = eCMD_C011_CMD_BASE + 0x203,
|
|
eCMD_C011_ENC_CHAN_STATISTICS = eCMD_C011_CMD_BASE + 0x204,
|
|
|
|
eNOTIFY_C011_ENC_CHAN_EVENT = eCMD_C011_CMD_BASE + 0x210,
|
|
|
|
};
|
|
|
|
#endif
|