android_kernel_modules_leno.../intel_media/video/decode/psb_msvdx_ec.h

176 lines
7.1 KiB
C

/**************************************************************************
*
* Copyright (c) 2012 Intel Corporation, Hillsboro, OR, USA
* Copyright (c) Imagination Technologies Limited, UK
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope 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 program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*
* Authors:
* Li Zeng <li.zeng@intel.com>
*
**************************************************************************/
#define _PSB_MSVDX_EC_H_
#define MSVDX_CMDS_BASE 0x1000
#define MSVDX_CMDS_DISPLAY_PICTURE_SIZE_OFFSET (0x0000)
/* MSVDX_CMDS, DISPLAY_PICTURE_SIZE, DISPLAY_PICTURE_HEIGHT */
#define MSVDX_CMDS_DISPLAY_PICTURE_SIZE_DISPLAY_PICTURE_HEIGHT_MASK (0x00FFF000)
#define MSVDX_CMDS_DISPLAY_PICTURE_SIZE_DISPLAY_PICTURE_HEIGHT_SHIFT (12)
/* MSVDX_CMDS, DISPLAY_PICTURE_SIZE, DISPLAY_PICTURE_WIDTH */
#define MSVDX_CMDS_DISPLAY_PICTURE_SIZE_DISPLAY_PICTURE_WIDTH_MASK (0x00000FFF)
#define MSVDX_CMDS_DISPLAY_PICTURE_SIZE_DISPLAY_PICTURE_WIDTH_SHIFT (0)
#define MSVDX_CMDS_CODED_PICTURE_SIZE_OFFSET (0x0004)
/* MSVDX_CMDS, CODED_PICTURE_SIZE, CODED_PICTURE_HEIGHT */
#define MSVDX_CMDS_CODED_PICTURE_SIZE_CODED_PICTURE_HEIGHT_MASK (0x00FFF000)
#define MSVDX_CMDS_CODED_PICTURE_SIZE_CODED_PICTURE_HEIGHT_SHIFT (12)
/* MSVDX_CMDS, CODED_PICTURE_SIZE, CODED_PICTURE_WIDTH */
#define MSVDX_CMDS_CODED_PICTURE_SIZE_CODED_PICTURE_WIDTH_MASK (0x00000FFF)
#define MSVDX_CMDS_CODED_PICTURE_SIZE_CODED_PICTURE_WIDTH_SHIFT (0)
#define MSVDX_CMDS_OPERATING_MODE_OFFSET (0x0008)
/* MSVDX_CMDS, OPERATING_MODE, RPR_ENABLE */
#define MSVDX_CMDS_OPERATING_MODE_RPR_ENABLE_MASK (0x20000000)
#define MSVDX_CMDS_OPERATING_MODE_RPR_ENABLE_SHIFT (29)
/* MSVDX_CMDS, OPERATING_MODE, USE_EXT_ROW_STRIDE */
#define MSVDX_CMDS_OPERATING_MODE_USE_EXT_ROW_STRIDE_MASK (0x10000000)
#define MSVDX_CMDS_OPERATING_MODE_USE_EXT_ROW_STRIDE_SHIFT (28)
/* MSVDX_CMDS, OPERATING_MODE, CHROMA_INTERLEAVED */
#define MSVDX_CMDS_OPERATING_MODE_CHROMA_INTERLEAVED_MASK (0x08000000)
#define MSVDX_CMDS_OPERATING_MODE_CHROMA_INTERLEAVED_SHIFT (27)
/* MSVDX_CMDS, OPERATING_MODE, ROW_STRIDE */
#define MSVDX_CMDS_OPERATING_MODE_ROW_STRIDE_MASK (0x07000000)
#define MSVDX_CMDS_OPERATING_MODE_ROW_STRIDE_SHIFT (24)
/* MSVDX_CMDS, OPERATING_MODE, CODEC_PROFILE */
#define MSVDX_CMDS_OPERATING_MODE_CODEC_PROFILE_MASK (0x00300000)
#define MSVDX_CMDS_OPERATING_MODE_CODEC_PROFILE_SHIFT (20)
/* MSVDX_CMDS, OPERATING_MODE, CODEC_MODE */
#define MSVDX_CMDS_OPERATING_MODE_CODEC_MODE_MASK (0x000F0000)
#define MSVDX_CMDS_OPERATING_MODE_CODEC_MODE_SHIFT (16)
/* MSVDX_CMDS, OPERATING_MODE, ASYNC_MODE */
#define MSVDX_CMDS_OPERATING_MODE_ASYNC_MODE_MASK (0x00006000)
#define MSVDX_CMDS_OPERATING_MODE_ASYNC_MODE_SHIFT (13)
/* MSVDX_CMDS, OPERATING_MODE, CHROMA_FORMAT */
#define MSVDX_CMDS_OPERATING_MODE_CHROMA_FORMAT_MASK (0x00001000)
#define MSVDX_CMDS_OPERATING_MODE_CHROMA_FORMAT_SHIFT (12)
/* MSVDX_CMDS, OPERATING_MODE, INTERLACED */
#define MSVDX_CMDS_OPERATING_MODE_INTERLACED_MASK (0x00000800)
#define MSVDX_CMDS_OPERATING_MODE_INTERLACED_SHIFT (11)
/* MSVDX_CMDS, OPERATING_MODE, OVERLAP */
#define MSVDX_CMDS_OPERATING_MODE_OVERLAP_MASK (0x00000400)
#define MSVDX_CMDS_OPERATING_MODE_OVERLAP_SHIFT (10)
/* MSVDX_CMDS, OPERATING_MODE, PIC_CONDOVER */
#define MSVDX_CMDS_OPERATING_MODE_PIC_CONDOVER_MASK (0x00000300)
#define MSVDX_CMDS_OPERATING_MODE_PIC_CONDOVER_SHIFT (8)
/* MSVDX_CMDS, OPERATING_MODE, DEBLOCK_STRENGTH */
#define MSVDX_CMDS_OPERATING_MODE_DEBLOCK_STRENGTH_MASK (0x000000E0)
#define MSVDX_CMDS_OPERATING_MODE_DEBLOCK_STRENGTH_SHIFT (5)
/* MSVDX_CMDS, OPERATING_MODE, PIC_QUANT */
#define MSVDX_CMDS_OPERATING_MODE_PIC_QUANT_MASK (0x0000001F)
#define MSVDX_CMDS_OPERATING_MODE_PIC_QUANT_SHIFT (0)
#define MSVDX_CMDS_LUMA_RECONSTRUCTED_PICTURE_BASE_ADDRESSES_OFFSET (0x000C)
#define MSVDX_CMDS_CHROMA_RECONSTRUCTED_PICTURE_BASE_ADDRESSES_OFFSET (0x0010)
#define MSVDX_CMDS_REFERENCE_PICTURE_BASE_ADDRESSES_OFFSET (0x0100)
#define MSVDX_CMDS_SLICE_PARAMS_OFFSET (0x0400)
/* MSVDX_CMDS, SLICE_PARAMS, SLICE_FIELD_TYPE */
#define MSVDX_CMDS_SLICE_PARAMS_SLICE_FIELD_TYPE_MASK (0x0000000C)
#define MSVDX_CMDS_SLICE_PARAMS_SLICE_FIELD_TYPE_SHIFT (2)
/* MSVDX_CMDS, SLICE_PARAMS, SLICE_CODE_TYPE */
#define MSVDX_CMDS_SLICE_PARAMS_SLICE_CODE_TYPE_MASK (0x00000003)
#define MSVDX_CMDS_SLICE_PARAMS_SLICE_CODE_TYPE_SHIFT (0)
#define MSVDX_CMDS_ALTERNATIVE_OUTPUT_PICTURE_ROTATION_OFFSET (0x003C)
#define MSVDX_CMDS_VC1_LUMA_RANGE_MAPPING_BASE_ADDRESS_OFFSET (0x0028)
#define MSVDX_CMDS_VC1_CHROMA_RANGE_MAPPING_BASE_ADDRESS_OFFSET (0x002C)
#define MSVDX_CMDS_VC1_RANGE_MAPPING_FLAGS_OFFSET (0x0030)
#define MSVDX_CMDS_EXTENDED_ROW_STRIDE_OFFSET (0x0040)
#define MSVDX_CMDS_END_SLICE_PICTURE_OFFSET (0x0404)
#define MSVDX_CMDS_MACROBLOCK_NUMBER_OFFSET (0x0408)
/* MSVDX_CMDS, MACROBLOCK_NUMBER, MB_CODE_TYPE */
#define MSVDX_CMDS_MACROBLOCK_NUMBER_MB_CODE_TYPE_MASK (0x00030000)
#define MSVDX_CMDS_MACROBLOCK_NUMBER_MB_CODE_TYPE_SHIFT (16)
/* MSVDX_CMDS, MACROBLOCK_NUMBER, MB_NO_Y */
#define MSVDX_CMDS_MACROBLOCK_NUMBER_MB_NO_Y_MASK (0x0000FF00)
#define MSVDX_CMDS_MACROBLOCK_NUMBER_MB_NO_Y_SHIFT (8)
/* MSVDX_CMDS, MACROBLOCK_NUMBER, MB_NO_X */
#define MSVDX_CMDS_MACROBLOCK_NUMBER_MB_NO_X_MASK (0x000000FF)
#define MSVDX_CMDS_MACROBLOCK_NUMBER_MB_NO_X_SHIFT (0)
#define MSVDX_CMDS_MACROBLOCK_RESIDUAL_FORMAT_OFFSET (0x0418)
#define MSVDX_CMDS_INTER_BLOCK_PREDICTION_OFFSET (0x0430)
/* MSVDX_CMDS, INTER_BLOCK_PREDICTION, REF_INDEX_A_VALID */
#define MSVDX_CMDS_INTER_BLOCK_PREDICTION_REF_INDEX_A_VALID_MASK (0x00000020)
#define MSVDX_CMDS_INTER_BLOCK_PREDICTION_REF_INDEX_A_VALID_SHIFT (5)
/* MSVDX_CMDS, INTER_BLOCK_PREDICTION, INTER_PRED_BLOCK_SIZE */
#define MSVDX_CMDS_INTER_BLOCK_PREDICTION_INTER_PRED_BLOCK_SIZE_MASK (0x70000)
#define MSVDX_CMDS_INTER_BLOCK_PREDICTION_INTER_PRED_BLOCK_SIZE_SHIFT (16)
/* MSVDX_CMDS, INTER_BLOCK_PREDICTION, REF_INDEX_A */
#define MSVDX_CMDS_INTER_BLOCK_PREDICTION_REF_INDEX_A_MASK (0x0000000F)
#define MSVDX_CMDS_INTER_BLOCK_PREDICTION_REF_INDEX_A_SHIFT (0)
/* MSVDX_CMDS, INTER_BLOCK_PREDICTION, REF_INDEX_B */
#define MSVDX_CMDS_INTER_BLOCK_PREDICTION_REF_INDEX_B_MASK (0x00000F00)
#define MSVDX_CMDS_INTER_BLOCK_PREDICTION_REF_INDEX_B_SHIFT (8)
#define MSVDX_CMDS_MOTION_VECTOR_OFFSET (0x0500)
#define MSVDX_CORE_CR_MSVDX_COMMAND_SPACE_OFFSET (0x0028)
#define MSVDX_CORE_BASE (0x600)
void psb_msvdx_update_frame_info(struct msvdx_private *msvdx_priv,
struct ttm_object_file *tfile,
void *cmd);
void psb_msvdx_backup_cmd(struct msvdx_private *msvdx_priv,
struct ttm_object_file *tfile,
void *cmd,
uint32_t cmd_size,
uint32_t deblock_cmd_offset);
void psb_msvdx_mtx_message_dump(struct drm_device *dev);
void psb_msvdx_do_concealment(struct work_struct *work);