diff options
Diffstat (limited to 'drivers/mxc/vpu-malone/Malone_Firmware/Incl/mediaip_fw_defines.h')
-rwxr-xr-x | drivers/mxc/vpu-malone/Malone_Firmware/Incl/mediaip_fw_defines.h | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/drivers/mxc/vpu-malone/Malone_Firmware/Incl/mediaip_fw_defines.h b/drivers/mxc/vpu-malone/Malone_Firmware/Incl/mediaip_fw_defines.h new file mode 100755 index 000000000000..ed825ce6e7f8 --- /dev/null +++ b/drivers/mxc/vpu-malone/Malone_Firmware/Incl/mediaip_fw_defines.h @@ -0,0 +1,249 @@ +/*************************************************** + Copyright (c) 2015 Amphion Semiconductor Ltd + All rights reserved. + *************************************************** + * The code contained herein is licensed under the GNU General Public + * License. You may obtain a copy of the GNU General Public License + * Version 2 or later at the following locations: + * + * http://www.opensource.org/licenses/gpl-license.html + * http://www.gnu.org/copyleft/gpl.html + **************************************************** + + Filename: mediaip_fw_defines.h + Description: Contains general definitions for + module based architecture + Author: Media IP FW team - Belfast + + TODO-KMC - Should remove this file!! + **************************************************/ + +#ifndef _MEDIAIP_FW_DEFINES_H_ +#define _MEDIAIP_FW_DEFINES_H_ + +/* In use MACROS for use by types shared across modules */ +/* When adding new modules, endeavour to maintain the same 'position' as that suggested by the */ +/* module's position in the MEDIAIP_FW_HANDLE_TYPE enumeration - see Modules/Public/handle.h */ + +#define IN_USE_DECODER ( 1 << 0x0 ) +#define IN_USE_ENCODER ( 1 << 0x1 ) +#define IN_USE_IMG_PORT ( 1 << 0x2 ) +#define IN_USE_DISPLAY ( 1 << 0x3 ) +#define IN_USE_VAMUX ( 1 << 0x4 ) +#define IN_USE_VIPP ( 1 << 0x5 ) +#define IN_USE_SYS_API ( 1 << 0x10 ) + +///////////////////////////////////////////////// +// Frame Store Display Data make-up + +// Read +#define FRAME_STORE_DISP_DATA_FSID(r) ((r>>0)&0x3f) +#define FRAME_STORE_DISP_DATA_RPT_FIRST_FLD(r) ((r>>15)&0x1) // IDJ: Pass RFF (borrow a bit from unused base addr field) +#define FRAME_STORE_DISP_DATA_SPS_IDC_BITS(r) ((r>>16)&0x7) +#define FRAME_STORE_DISP_DATA_DANG_FIELD_BIT(r) ((r>>19)&0x1) +#define FRAME_STORE_DISP_DATA_FIELD_MODE_BIT(r) ((r>>20)&0x1) +#define FRAME_STORE_DISP_DATA_BOT_FIRST_BIT(r) ((r>>21)&0x1) +#define FRAME_STORE_DISP_DATA_SKIP_PIC_BITS(r) ((r>>22)&0x3) +#define FRAME_STORE_DISP_DATA_SYS_DATA_BITS(r) ((r>>24)&0xFF) +#define FRAME_STORE_DISP_DATA_FRAME_BADDR(r) ((r>>0)&0x7FFF) +#define FRAME_STORE_DATAFIELDS(a) (a&0xffff8000) // IDJ - bit 15 used above + +// Write +#define FRAME_STORE_DISP_DATA_PUT_FSID(a) ((a&0x3f) << 0) +#define FRAME_STORE_DISP_DATA_PUT_FRAME_BADDR(a) ((a&0x7fff) << 0) +#define FRAME_STORE_DISP_DATA_PUT_DUPLC_FRAME_SENT(a) ((a&0x1) << 14) // RayC/JKD: but used to control when duplicate frames are sent +#define FRAME_STORE_DISP_DATA_PUT_DUPLC_FRAME_SENT_GET(a) ((a>>14)&0x1) +#define FRAME_STORE_DISP_DATA_PUT_RPT_FIRST_FIELD(a) ((a&0x1) << 15) // IDJ Borrow a bit from BADDR field (not used) +#define FRAME_STORE_DISP_DATA_PUT_DISP_PARAM_ID(a) ((a&0x7) << 16) +#define FRAME_STORE_DISP_DATA_PUT_DANGLING_FIELD(a) ((a&0x1) << 19) +#define FRAME_STORE_DISP_DATA_PUT_FIELD_MODE(a) ((a&0x1) << 20) +#define FRAME_STORE_DISP_DATA_PUT_BOT_FIELD_FIRST(a) ((a&0x1) << 21) +#define FRAME_STORE_DISP_DATA_PUT_TOP_SKIPPED(a) ((a&0x1) << 22) +#define FRAME_STORE_DISP_DATA_PUT_BOT_SKIPPED(a) ((a&0x1) << 23) +#define FRAME_STORE_DISP_DATA_PUT_SYS_DATA(a) ((a&0xff) << 24) + +#define NUM_DISP_PUSHES_MASK 0xFF00 +#define NUM_DISP_PUSHES_POS 8 +#define NUM_DISP_PUSHES_SET(x) (x<<NUM_DISP_PUSHES_POS) +#define NUM_DISP_PUSHES_GET(x) ( (x&NUM_DISP_PUSHES_MASK) >> NUM_DISP_PUSHES_POS) + +///////////////////////////////////////////////// +// Display Params + +#define DISP_INFO_USER_DATA_ATTACHED_MASK 0x1 +#define DISP_INFO_USER_DATA_ATTACHED_POS 0 +#define DISP_INFO_GET_USER_DATA_ATTACHED(x) ((x&DISP_INFO_USER_DATA_ATTACHED_MASK)>>DISP_INFO_USER_DATA_ATTACHED_POS) +#define DISP_INFO_USER_DATA_MASK 0xFFFF +#define DISP_INFO_USER_DATA_POS 16 +#define DISP_INFO_GET_USER_DATA(x) ((x>>DISP_INFO_USER_DATA_POS)&DISP_INFO_USER_DATA_MASK) + +// uScanFormat defines + +#define DISP_SCAN_FORMAT_INTERLACED 0x0 +#define DISP_SCAN_FORMAT_PROGRESSIVE 0x1 +#define DISP_SCAN_FORMAT_VALID_GET(r) (r&0x1) +#define DISP_SCAN_FORMAT_GET(r) ((r&0x2)>>1) +#define DISP_SCAN_FORMAT_VALID_SET(r) ((r&0x1)<<0) +#define DISP_SCAN_FORMAT_SET(r) ((r&0x1)<<1) + +///////////////////////////////////////////////// +// General defines - base on Stream descriptor for Pecos + +#define STOP_IMMEDIATE 0x0 +#define STOP_COMPLETE_DISPLAY 0x1 + +#define FORMAT_VC1 0x2 +#define FORMAT_MPEG2 0x1 +#define FORMAT_MPEG4 0x0 +#define FORMAT_MPEG2_DBEN 0x1 +#define FORMAT_MPEG2_DBDRNGEN 0x2 + +#define STREAM_MODE_ES 0x1 +#define STREAM_MODE_PES 0x0 + +#define DELIVERY_MODE_TSP_DIRECT 0x0 +#define DELIVERY_MODE_BSP 0x1 +#define DELIVERY_MODE_BSDMA 0x2 + +// Buffer Indices +#define SD_BUFIND_ESBUF_MASK 0xFF +#define SD_BUFIND_ESBUF_SHIFT 0 +#define SD_BUFIND_STC_MASK 0x30000 +#define SD_BUFIND_STC_SHIFT 16 +#define SD_BUFIND_ESBUF_GET(x) ((x&SD_BUFIND_ESBUF_MASK)>>SD_BUFIND_ESBUF_SHIFT) +#define SD_BUFIND_STC_GET(x) ((x&SD_BUFIND_STC_MASK)>>SD_BUFIND_STC_SHIFT) + +#define UD_ORDER_DECODE 0x1 +#define UD_ORDER_DISPLAY 0x2 +#define UD_ORDER_DECODEANDDISPLAY 0x3 + +#define PRINT_UART4(a,b,c,d) +#define PRINT_UART5(a,b,c,d,e) + +#define DISPLAY_ASPECT_RATIO_4_3 0x2 +#define DISPLAY_ASPECT_RATIO_16_9 0x3 + + +///////////////////////////////////////////////// +// PTS capture descriptor flags +#define PTS_DESCRIPTOR_PTS_LO 0x00000000 +#define PTS_DESCRIPTOR_DTS_LO 0x00000004 +#define PTS_DESCRIPTOR_FLAGS 0x00000008 +#define PTS_DESCRIPTOR_WRAP_COUNT 0x00000009 +#define PTS_DESCRIPTOR_TIMEBASE_ID 0x0000000A +#define PTS_DESCRIPTOR_MATURITY_ADDRESS 0x0000000C + +#define PTS_DESCRIPTOR_FLAG_PTS_HI_MASK 0x00000001 +#define PTS_DESCRIPTOR_FLAG_PTS_HI_BIT 0 +#define PTS_DESCRIPTOR_FLAG_DTS_HI_MASK 0x00000002 +#define PTS_DESCRIPTOR_FLAG_DTS_HI_BIT 1 +#define PTS_DESCRIPTOR_FLAG_STC_PARITY_MASK 0x00000004 +#define PTS_DESCRIPTOR_FLAG_STC_PARITY_BIT 2 +#define PTS_DESCRIPTOR_FLAG_PENDING_MASK 0x00000008 +#define PTS_DESCRIPTOR_FLAG_PENDING_BIT 3 +#define PTS_DESCRIPTOR_FLAG_PESERROR_MASK 0x00000010 +#define PTS_DESCRIPTOR_FLAG_PESERROR_BIT 4 + +#define PTS_DESCRIPTOR_FLAG_ADDRESS_WRAP_COUNT_BIT 8 +#define PTS_DESCRIPTOR_FLAG_ADDRESS_WRAP_COUNT_MASK 0x0000FF00 +#define PTS_DESCRIPTOR_FLAG_TIMEBASE_ID_BIT 16 +#define PTS_DESCRIPTOR_FLAG_TIMEBASE_ID_MASK 0x000F0000 +#define PTS_DESCRIPTOR_FLAG_AVC_TAG_BIT 24 +#define PTS_DESCRIPTOR_FLAG_AVC_TAG_MASK 0xFF000000 + +// PTS debug descriptor extensions +#define PTS_DESCRIPTOR_DEBUG 0x00000010 +#define PTS_DESCRIPTOR_DEBUG_PTS_DTS 0x00000010 +#define PTS_DESCRIPTOR_DEBUG_STC_SNAPSHOT 0x00000014 +#define PTS_DESCRIPTOR_DEBUG_DIFFERENCE 0x00000018 +#define PTS_DESCRIPTOR_DEBUG_FLAGS 0x0000001C + +#define PTS_DESCRIPTOR_DEBUG_FLAG_NO_PTS 0x00000001 +#define PTS_DESCRIPTOR_DEBUG_FLAG_NO_STC 0x00000002 +#define PTS_DESCRIPTOR_DEBUG_FLAG_IS_DTS 0x00000004 +#define PTS_DESCRIPTOR_DEBUG_FLAG_RUNNING 0x00000008 +#define PTS_DESCRIPTOR_DEBUG_FLAG_INSANE 0x00000010 +#define PTS_DESCRIPTOR_DEBUG_FLAG_STC_B 0x00000020 +#define PTS_DESCRIPTOR_DEBUG_FLAG_STC_CURRENT 0x00000040 +#define PTS_DESCRIPTOR_DEBUG_FLAG_TIMEBASE_MISMATCH 0x00000080 +#define PTS_DESCRIPTOR_DEBUG_FLAG_LATE 0x00000100 +#define PTS_DESCRIPTOR_DEBUG_FLAG_EARLY 0x00000200 +#define PTS_DESCRIPTOR_DEBUG_FLAG_VERY_LATE 0x00000100 + +///////////////////////////////////////////////// +// Tag descriptor defines +// Flag definitions +#define TAGLIST_SEI_PIC_STRUCT_FLAG_MASK 0x1 +#define TAGLIST_SEI_PIC_STRUCT_FLAG_SHIFT 0 +#define TAGLIST_SEI_FRAME_FREEZE_FLAG_MASK 0x2 +#define TAGLIST_SEI_FRAME_FREEZE_FLAG_SHIFT 1 +#define TAGLIST_SEI_FRAME_RELEASE_FLAG_MASK 0x4 +#define TAGLIST_SEI_FRAME_RELEASE_FLAG_SHIFT 2 +#define TAGLIST_SEI_SKIP_FLAG_MASK 0x8 +#define TAGLIST_SEI_SKIP_FLAG_SHIFT 3 + +////////////////////////////////////////////////////////////// +// Frame status ~ TEMP +#define FRAME_INUSE_BYIPP 0x1 +#define FRAME_FREE 0x0 + +////////////////////////////////////////////////////////////// +// Scan format ~ TEMP +#define SCAN_FORMAT_INTERLACED 0x0 +#define SCAN_FORMAT_PROGRESSIVE 0x1 +#define SCAN_FORMAT_VALID_GET(r) (r&0x1) +#define SCAN_FORMAT_GET(r) ((r&0x2)>>1) +#define SCAN_FORMAT_VALID_SET(r) ((r&0x1)<<0) +#define SCAN_FORMAT_SET(r) ((r&0x1)<<1) + +////////////////////////////////////////////////////////////// +// Internal System Control Defines + +#define NO_INTERNAL_CONTROL 0xFF +#define SFD_INTERNAL_CONTROL 0x1 +#define AUTORECOVER_INTERNAL_CONTROL 0x2 + +////////////////////////////////////////////////////////////// +// SVC specific defines +#define MEDIAIP_MAX_SVC_DID 0x3 +#define MEDIAIP_MAX_SVC_STR_BUFFERS 0x3 + +////////////////////////////////////////////////////////////// +// Malone specific defines +#define MEDIAIP_MAX_NUM_MALONES 0x2 +#define MEDIAIP_MAX_NUM_MALONE_IRQ_PINS 0x2 + +#define MEDIAIP_MAX_NUM_FSLCACHES 0x4 + +////////////////////////////////////////////////////////////// +// Windsor specific defines +#define MEDIAIP_MAX_NUM_WINDSORS 0x1 +#define MEDIAIP_MAX_NUM_WINDSOR_IRQ_PINS 0x2 + +////////////////////////////////////////////////////////////// +// Subsystem specific defines +#define MEDIAIP_MAX_NUM_IRQ_PINS 0x10 +#define MEDIAIP_MAX_NUM_CMD_IRQ_PINS 0x2 +#define MEDIAIP_MAX_NUM_MSG_IRQ_PINS 0x1 +#define MEDIAIP_MAX_NUM_TIMER_IRQ_PINS 0x4 +#define MEDIAIP_MAX_NUM_TIMER_IRQ_SLOTS 0x4 + +#define SUBSYSTEM_CFG_MAGIC_COOKIE 0xB0B1B2B3 + +////////////////////////////////////////////////////////////// +// Max supported picture resolution, except H.264 and JPEG + +#define MEDIAIP_MAX_PIC_WIDTH 2048 +#define MEDIAIP_MAX_PIC_HEIGHT 2048 + +////////////////////////////////////////////////////////////// +// Encoder user data programming vals + +#define MEDIAIP_ENC_USER_DATA_WORDS 16 +#define MEDIAIP_ENC_USER_DATA_BYTES ( MEDIAIP_ENC_USER_DATA_WORDS << 2 ) + + + +#endif /* _MEDIAIP_FW_DEFINES_H_ */ + +/* End of File */ |