176 lines
7.1 KiB
C
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);
|