510 lines
18 KiB
C
510 lines
18 KiB
C
//***************************************************************************
|
|
// Decoder board register header
|
|
//
|
|
//***************************************************************************
|
|
|
|
//===========================================================================
|
|
// PCI I/F REGISTERS
|
|
//===========================================================================
|
|
#define PCIF_CNTL 0x00 // PCI I/F control
|
|
#define PCIF_INTF 0x04 // Interrupt flags
|
|
#define PCIF_MADRLL 0x08 // DMA address low-low
|
|
#define PCIF_MADRLH 0x09 // DMA address low-high
|
|
#define PCIF_MADRHL 0x0a // DMA address high-low
|
|
#define PCIF_MADRHH 0x0b // DMA address high-high
|
|
#define PCIF_MTCLL 0x0c // DMA counter low-low
|
|
#define PCIF_MTCLH 0x0d // DMA counter low-high
|
|
#define PCIF_MTCHL 0x0e // DMA counter high-low
|
|
#define PCIF_MTCHH 0x0f // DMA counter high-high
|
|
|
|
#define PCIF_CPLT 0x10 // Color palette
|
|
#define PCIF_CPCNT 0x11 // Color palette control
|
|
|
|
#define PCIF_VMODE 0x14 // video mode
|
|
#define PCIF_HSCNT 0x15 // HSYNC count
|
|
#define PCIF_VSCNT 0x16 // VSYNC count
|
|
#define PCIF_HSVS 0x17 // HS/VS porarity
|
|
|
|
#define PCIF_EEPROM 0x20 // EEPROM access
|
|
|
|
#define PCIF_PSCNT 0x22 // PS coontrol
|
|
#define PCIF_TEST 0x23 // test control
|
|
#define PCIF_SCNT 0x24 // serial access control
|
|
#define PCIF_SW 0x25 // serial write
|
|
#define PCIF_SR 0x26 // serial read
|
|
|
|
#define PCIF_SNOLL 0x28 // board serial # LL
|
|
#define PCIF_SNOLH 0x29 // board serial # LH
|
|
#define PCIF_SNOMM 0x2a // board serial # MM
|
|
#define PCIF_SNOHL 0x2b // board serial # HL
|
|
#define PCIF_SNOHH 0x2c // board serail # HH
|
|
|
|
//===========================================================================
|
|
// MPEG DECODER(TC81201F) REGISTERS
|
|
//===========================================================================
|
|
#define TC812_DATA1 0x80 // data1
|
|
#define TC812_DATA2 0x81 // data2
|
|
#define TC812_DATA3 0x82 // data3
|
|
#define TC812_DATA4 0x83 // data4
|
|
#define TC812_DATA5 0x84 // data5
|
|
#define TC812_DATA6 0x85 // data6
|
|
#define TC812_DATA7 0x86 // data7
|
|
#define TC812_CMDR1 0x87 // command1
|
|
//#define TC812_CMDR2 0x88 // command2
|
|
|
|
#define TC812_DSPL 0x8b // filter
|
|
|
|
#define TC812_STT1 0x8e // status1
|
|
#define TC812_STT2 0x8f // status2
|
|
#define TC812_IRF 0x90 // interrupt flags
|
|
#define TC812_IRM 0x91 // interrupt masks
|
|
#define TC812_DEF 0x92 // decode end flag
|
|
#define TC812_WEF 0x93 // packet end flag
|
|
#define TC812_ERF 0x94 // error interrupt flag
|
|
|
|
#define TC812_UOF 0x96 // under/over flow flag
|
|
|
|
#define TC812_DEM 0x97 // Decode end mask (R/W)
|
|
#define TC812_WEM 0x98 // Packet end mask (R/W)
|
|
#define TC812_ERM 0x99 // Error interrupt mask (R/W)
|
|
|
|
#define TC812_UOM 0x9B // Under/Over flow mask (R/W)
|
|
#define TC812_UDAT 0x9C // User data read (R)
|
|
#define TC812_BST 0x9D // Bit stream write (R/W)
|
|
#define TC812_UAR 0x9E // User area data read (R)
|
|
#define TC812_IVEC 0x9F // Interrupt vector (R/W)
|
|
|
|
//======= Command Definitions (values for CMDR1 register) =============
|
|
#define V_SET_SYS 0x01 // Set System decode mode
|
|
#define V_GET_SYS 0x21 // Get System decode mode
|
|
|
|
#define V_SET_DEC_MODE 0x02 // Set decode mode
|
|
#define V_GET_DEC_MODE 0x22 // Get decode mode
|
|
|
|
#define V_SET_INT_ID 0x03 // Set internal decode stream id
|
|
#define V_GET_INT_ID 0x23 // Get internal decode stream id
|
|
|
|
#define V_SET_PRSO_ID 0x04 // Set PRSO stream id
|
|
#define V_GET_PRSO_ID 0x24 // Get PRSO stream id
|
|
|
|
#define V_SET_USER_ID 0x06 // Set USER1/2 stream id
|
|
#define V_GET_USER_ID 0x26 // Get USER1/2 stream id
|
|
|
|
#define V_SET_UOF_SIZE 0x07 // Set under/overflow size
|
|
#define V_GET_UOF_SIZE 0x27 // Get under/overflow size
|
|
|
|
#define V_GET_STD_CODE 0x29 // Get STD buffer size
|
|
|
|
#define V_SET_STCA 0x0B // Set STCA value
|
|
#define V_GET_STCA 0x2B // Get STCA value
|
|
|
|
#define V_SET_STCS 0x0C // Set STCS value
|
|
#define V_GET_STCS 0x2C // Get STCS value
|
|
|
|
#define V_GET_STCC 0x2D // Get STCC value
|
|
|
|
#define V_GET_SCR 0x2E // Get SCR value
|
|
|
|
#define V_SET_STCR_END 0x0D // Set STC/SCR read end
|
|
|
|
#define V_USER1_CLEAR 0x0F // USER1 area clear
|
|
#define V_USER2_CLEAR 0x10 // USER2 area clear
|
|
|
|
#define V_SET_PVSIN 0x11 // Set PVSIN enable
|
|
#define V_GET_PVSIN 0x31 // Get PVSIN state
|
|
|
|
#define V_SET_WRITE_MEM 0x13 // Set write mem mode
|
|
#define V_WRITE_MEMORY 0x14 // Write memory
|
|
#define V_READ_MEMORY 0x34 // Read memory
|
|
#define V_STOP_MEMORY 0x15 // Stop memory access
|
|
|
|
#define V_SET_DECODE 0x41 // Start decode
|
|
#define V_GET_DECODE 0x61 // Stop decode
|
|
|
|
#define V_TRICK_NORMAL 0x42 // Play normal mode
|
|
#define V_TRICK_FAST 0x43 // Play fast mode
|
|
#define V_TRICK_SLOW 0x44 // Play slow mode
|
|
#define V_TRICK_FREEZE 0x45 // Play freeze mode
|
|
#define V_TRICK_STILL 0X46 // Play still mode
|
|
|
|
#define V_GET_TRICK 0x67 // Get trick mode
|
|
|
|
#define V_STD_CLEAR 0x48 // STD buffer clear
|
|
|
|
#define V_SET_UDATA 0x4F // Set USER data mode
|
|
#define V_GET_UDATA 0x6F // Get USER data mode
|
|
|
|
#define V_SET_DTS 0x50 // Set DTS
|
|
#define V_GET_DTS 0x70 // Get DTS
|
|
|
|
#define V_SET_PTS 0x51 // Set PTS
|
|
#define V_GET_PTS 0x71 // Get PTS
|
|
|
|
#define V_SET_SEEMLES 0x55 // Set seemless mode
|
|
|
|
#define V_SET_VFMODE 0x58 // Set video frame mode
|
|
|
|
#define V_SET_STD_SIZE 0x59 // Set STD buffer size
|
|
#define V_GET_STD_SIZE 0x79 // Get STD buffer size
|
|
#define V_SET_USER_SIZE 0x5B // Set USER area size
|
|
#define V_GET_USER_SIZE 0x7B // Get USER area size
|
|
#define V_SET_MEM_MAP 0x5F // Set memory mapping
|
|
|
|
#define V_SET_VCD 0x5C // Set Video-CD static mode
|
|
|
|
#define V_CHK_DEC_STATE 0x5D // Check decode state
|
|
#define V_GET_DEC_STATE 0x7D // Get Decoding state
|
|
|
|
#define V_UF_CURB 0x5E // Under-flow curb mode
|
|
|
|
#define V_SET_DMODE 0x81 // Set display mode
|
|
#define V_GET_DMODE 0xA1 // Get display mode
|
|
|
|
#define V_SET_HOFFSET 0x82 // Set horizontal offset
|
|
#define V_GET_HOFFSET 0xA2 // Get horizontal offset
|
|
|
|
#define V_SET_VOFFSET 0x83 // Set virtical offset
|
|
#define V_GET_VOFFSET 0xA3 // Get virtical offset
|
|
|
|
#define V_SET_HAREA 0x84 // Set horizontal area
|
|
#define V_GET_HAREA 0xA4 // Get horizontal area
|
|
|
|
#define V_SET_VAREA 0x85 // Set horizontal area
|
|
#define V_GET_VAREA 0xA5 // Get horizontal area
|
|
|
|
#define V_GET_V_DTS 0xB0 // Get decoding DTS value
|
|
|
|
#define V_RESET 0xC1 // Reset & set default mode
|
|
|
|
//===========================================================================
|
|
// VIDEO PROCESSOR(TC90A09F) REGISTERS
|
|
//===========================================================================
|
|
#define SUBP_RESET 0x40 // Sub-Pic Reset
|
|
#define SUBP_COMMAND 0x41 // Command
|
|
#define SUBP_STSINT 0x42 // Status & Interrupt mask
|
|
//#define SUBP_OFFSET 0x43 // Offset
|
|
#define SUBP_STCHH 0x44 // STC 32:25
|
|
#define SUBP_STCHL 0x45 // STC 24:17
|
|
#define SUBP_STCLH 0x46 // STC 16:09
|
|
#define SUBP_STCLL 0x47 // STC 08:01
|
|
#define SUBP_LCINFHH 0x48 // LCINF 32:25
|
|
#define SUBP_LCINFHL 0x49 // LCINF 24:17
|
|
#define SUBP_LCINFLH 0x4A // LCINF 16:09
|
|
#define SUBP_LCINFLL 0x4B // LCINF 08:01
|
|
#define SUBP_PCINFSHH 0x4C // PCINFS 47:40
|
|
#define SUBP_PCINFSHL 0x4D // PCINFS 39:32
|
|
#define SUBP_PCINFSMH 0x4E // PCINFS 31:24
|
|
#define SUBP_PCINFSML 0x4F // PCINFS 23:16
|
|
#define SUBP_PCINFSLH 0x50 // PCINFS 15:08
|
|
#define SUBP_PCINFSLL 0x51 // PCINFS 07:01
|
|
#define SUBP_PCINFEHH 0x52 // PCINFE 47:40
|
|
#define SUBP_PCINFEHL 0x53 // PCINFE 39:32
|
|
#define SUBP_PCINFEMH 0x54 // PCINFE 31:24
|
|
#define SUBP_PCINFEML 0x55 // PCINFE 23:16
|
|
#define SUBP_PCINFELH 0x56 // PCINFE 15:08
|
|
#define SUBP_PCINFELL 0x57 // PCINFE 07:01
|
|
#define SUBP_MODE 0x58 // Audio word alignment
|
|
#define SUBP_STCCNT 0x59 // STC Count
|
|
#define SUBP_SPID 0x5A // Sub-Pic sub-stream id
|
|
#define SUBP_ASEL 0x5B // Audio select(sub/stream id?)
|
|
#define SUBP_CC1 0x5C // Closed caption data1
|
|
#define SUBP_CC2 0x5D // Closed caption data2
|
|
#define SUBP_AAID 0x5E // Audio-A (sub)stream id
|
|
#define SUBP_ABID 0x5F // Audio-B (sub)stream id
|
|
|
|
#define VPRO_RESET 0x60 // V-PRO Reset
|
|
#define VPRO_VMODE 0x61 // Video mode & US caption
|
|
#define VPRO_CPSET 0x62 // Color palette setting
|
|
#define VPRO_CPSP 0x63 // Color palette (Sub-pic)
|
|
#define VPRO_AVM 0x64 // Analog video mode
|
|
#define VPRO_DVEN 0x65 // Digital output
|
|
#define VPRO_CPG 0x66 // Copy guard
|
|
#define VPRO_CAGC 0x68 // AGC puls(Composit)
|
|
#define VPRO_YAGC 0x69 // AGC puls(Y)
|
|
#define VPRO_LAGC 0x6A // AGC low-bit
|
|
#define VPRO_CPOSD 0x6B // Color palette (OSD)
|
|
|
|
//===========================================================================
|
|
// VIDEO ANALOG COPY GUARD PROCESSOR(TC6802AF) REGISTERS
|
|
//===========================================================================
|
|
#define CPGD_RESET 0xA0 // Reset
|
|
#define CPGD_VMODE 0xA1 // Video mode
|
|
#define CPGD_CPSET 0xA2 // Color palette setteing
|
|
#define CPGD_CPSP 0xA3 // Color palette
|
|
#define CPGD_AVM 0xA4 // Analog video mode
|
|
#define CPGD_DVEN 0xA5 // Digital output
|
|
#define CPGD_CPG 0xA6 // Copy guard setting
|
|
|
|
#define CPGD_CAGC 0xA8 // AGC(Composit)
|
|
#define CPGD_YAGC 0xA9 // AGC(Y)
|
|
#define CPGD_LAGC 0xAA // AGC(low bit)
|
|
#define CPGD_CDG 0xAB // CDG
|
|
#define CPGD_BSTLN 0xAC // Burst Inv number
|
|
#define CPGD_BSTSE 0xAD // Burst Inv timing
|
|
#define CPGD_BSTLSL 0xAE // Burst Inv line(Low)
|
|
#define CPGD_BSTLSH 0xAF // Burst Inv line(High)
|
|
#define CPGD_CGMSAL 0xB0 // CGMS-A(Low)
|
|
#define CPGD_CGMSAM 0xB1 // CGMS-A(Middle)
|
|
#define CPGD_CGMSAH 0xB2 // CGMS-A(High)
|
|
#define CPGD_BSTINT 0xB3 // Color burst interval
|
|
#define CPGD_BSTONY 0xB4 // Burst(Y)
|
|
|
|
//***************************************************************************
|
|
// M I S S I O L I N O U S D E F I N I T I O N S
|
|
//***************************************************************************
|
|
//===========================================================================
|
|
// MPEG (SUB-)STREAM ID
|
|
//===========================================================================
|
|
#define STRMID_MPEG_AUDIO 0xc0
|
|
#define STRMID_MPEG_VIDEO 0xe0
|
|
#define STRMID_PRIVATE_1 0xbd
|
|
#define STRMID_PRIVATE_2 0xbf
|
|
|
|
#define SUB_STRMID_SUBP 0x20
|
|
#define SUB_STRMID_VBI 0x48
|
|
#define SUB_STRMID_AC3 0x80
|
|
#define SUB_STRMID_SRSV_DTS 0x88
|
|
#define SUB_STRMID_SRSV_SDDS 0x90
|
|
#define SUB_STRMID_PCM 0xa0
|
|
|
|
#define SUB_STRMID_PCI 0x00
|
|
#define SUB_STRMID_DSI 0x01
|
|
|
|
//===========================================================================
|
|
// STREAM MODE
|
|
//===========================================================================
|
|
#define STREAM_MODE_VELS 0x01
|
|
#define STREAM_MODE_PES 0x03
|
|
#define STREAM_MODE_PS 0x07
|
|
#define STREAM_MODE_DVD 0x0F
|
|
#define STREAM_MODE_VCD 0x10
|
|
|
|
|
|
//===========================================================================
|
|
// PLAY STOP STATE
|
|
//===========================================================================
|
|
#define STOP_KEEP 0x01
|
|
#define STOP_FLASH 0x02
|
|
|
|
//===========================================================================
|
|
// UFLOW EVENT STATE
|
|
//===========================================================================
|
|
#define EVENT_FATAL_UFLOW 0x01
|
|
#define EVENT_NORMAL_UFLOW 0x02
|
|
|
|
//===========================================================================
|
|
// AUDIO MUTE STATE
|
|
//===========================================================================
|
|
#define AUDIO_MUTE_ON 0x00
|
|
#define AUDIO_MUTE_OFF 0x01
|
|
|
|
//===========================================================================
|
|
// AUDIO OUT MODE
|
|
//===========================================================================
|
|
#define AUDIO_OUT_DIGITAL 0x00
|
|
#define AUDIO_OUT_ANALOG 0x01
|
|
|
|
//===========================================================================
|
|
// AUDIO COPY PROTECT
|
|
//===========================================================================
|
|
#define AUDIO_COPY_ON 0x00
|
|
#define AUDIO_COPY_OFF 0x01
|
|
|
|
//===========================================================================
|
|
// SUBPIC MUTE STATE
|
|
//===========================================================================
|
|
#define SUBPIC_MUTE_ON 0x00
|
|
#define SUBPIC_MUTE_OFF 0x01
|
|
|
|
//===========================================================================
|
|
// SUBPIC Hi-LITE STATE
|
|
//===========================================================================
|
|
#define SUBPIC_HLITE_ON 0x00
|
|
#define SUBPIC_HLITE_OFF 0x01
|
|
|
|
//===========================================================================
|
|
// OSD MUTE STATE
|
|
//===========================================================================
|
|
#define OSD_MUTE_ON 0x00
|
|
#define OSD_MUTE_OFF 0x01
|
|
|
|
//===========================================================================
|
|
// OSD BLINK STATE
|
|
//===========================================================================
|
|
#define OSD_BLINK_ON 0x00
|
|
#define OSD_BLINK_OFF 0x01
|
|
|
|
//===========================================================================
|
|
// OSD REVERSE STATE
|
|
//===========================================================================
|
|
#define OSD_REVERSE_ON 0x00
|
|
#define OSD_REVERSE_OFF 0x01
|
|
|
|
//===========================================================================
|
|
// VIDEO MUTE STATE
|
|
//===========================================================================
|
|
#define VIDEO_MUTE_ON 0x00
|
|
#define VIDEO_MUTE_OFF 0x01
|
|
|
|
//===========================================================================
|
|
// LETTER BOX STATE
|
|
//===========================================================================
|
|
#define LETTER_BOX_ON 0x00
|
|
#define LETTER_BOX_OFF 0x01
|
|
|
|
//===========================================================================
|
|
// PAN-SCAN STATE
|
|
//===========================================================================
|
|
#define PANSCAN_ON 0x00
|
|
#define PANSCAN_OFF 0x01
|
|
|
|
//===========================================================================
|
|
// DECODE FALSE STATE
|
|
//===========================================================================
|
|
#define VIDEO_NO_DATA 0x01
|
|
|
|
//===========================================================================
|
|
// COLOR PALTTE SELECTION
|
|
//===========================================================================
|
|
#define PALETTE_Y 0x01
|
|
#define PALETTE_CB 0x02
|
|
#define PALETTE_CR 0x03
|
|
|
|
//===========================================================================
|
|
// ANALOG IMAGE COPY GURAD MODE
|
|
//===========================================================================
|
|
#define APS_TYPE_OFF 0x00
|
|
#define APS_TYPE_1 0x01
|
|
#define APS_TYPE_2 0x02
|
|
#define APS_TYPE_3 0x03
|
|
|
|
//===========================================================================
|
|
// FREEZE COUNTER STATE
|
|
//===========================================================================
|
|
#define FREEZE_ONCE 0x00
|
|
#define FREEZE_PLURAL 0x01
|
|
|
|
//===========================================================================
|
|
// I-PICTURE INTERRUPT SWITCH
|
|
//===========================================================================
|
|
#define IPIC_SW_ON 0x00
|
|
#define IPIC_SW_OFF 0x01
|
|
|
|
//===========================================================================
|
|
// FLAG for CATCH_IPIC return OK or not
|
|
//===========================================================================
|
|
#define IPIC_RET_ON 0x00
|
|
#define IPIC_RET_OFF 0x01
|
|
|
|
//***************************************************************************
|
|
// S T R U C T U R E D E F I N I T I O N S
|
|
//***************************************************************************
|
|
//===========================================================================
|
|
// AUDIO_MODE structure
|
|
//===========================================================================
|
|
/*
|
|
AUDIO_MODE_STRUC STRUC
|
|
dwATYPE dd ?
|
|
dwAFS dd ?
|
|
dwAQUANT dd ?
|
|
dwACOPY dd ?
|
|
dwACHANNEL dd ?
|
|
AUDIO_MODE_STRUC ENDS
|
|
*/
|
|
#define AUDIO_TYPE_AC3 0x01
|
|
#define AUDIO_TYPE_MPEG_F1 0x02
|
|
#define AUDIO_TYPE_MPEG_F2 0x03
|
|
#define AUDIO_TYPE_PCM 0x04
|
|
|
|
#define AUDIO_FS_32 0x01
|
|
#define AUDIO_FS_44 0x02
|
|
#define AUDIO_FS_48 0x03
|
|
#define AUDIO_FS_96 0x04
|
|
|
|
#define AUDIO_QUANT_16 0x01
|
|
#define AUDIO_QUANT_20 0x02
|
|
#define AUDIO_QUANT_24 0x03
|
|
|
|
#define AUDIO_CGMS_03 0x03 // No Copying is permitted.
|
|
#define AUDIO_CGMS_02 0x02 // One generation of copies may be made
|
|
#define AUDIO_CGMS_00 0x00 // Copying is permitted without restriction
|
|
|
|
//===========================================================================
|
|
// PLAY_MODE structure
|
|
//===========================================================================
|
|
/*
|
|
PLAY_MODE_STRUC STRUC
|
|
dwPLAYTYPE dd ?
|
|
dwPLAYFlags dd ?
|
|
PLAY_MODE_STRUC ENDS
|
|
*/
|
|
#define PLAY_MODE_NORMAL 0x01
|
|
#define PLAY_MODE_FAST 0x02
|
|
#define PLAY_MODE_SLOW 0x03
|
|
#define PLAY_MODE_FREEZE 0x04
|
|
#define PLAY_MODE_STILL 0x05
|
|
|
|
#define FAST_ONLYI 0x01
|
|
#define FAST_IANDP 0x02
|
|
|
|
//===========================================================================
|
|
// SUBP_HLITE structure
|
|
//===========================================================================
|
|
/*
|
|
SUBP_HLITE_STRUC STRUC
|
|
dwHLITE_TYPE dd ?
|
|
dwHLITE_Y dw ?
|
|
dwHLITE_H dw ?
|
|
dwHLITE_X dw ?
|
|
dwHLITE_W dw ?
|
|
dwHLITE_COLOR dd ?
|
|
SUBP_HLITE_STRUC ENDS
|
|
*/
|
|
#define SUBPIC_HLITE_ON 0x00
|
|
#define SUBPIC_HLITE_OFF 0x01
|
|
|
|
//===========================================================================
|
|
// VBUFF_SIZE structure
|
|
//===========================================================================
|
|
/*
|
|
VBUFF_SIZE_STRUC STRUC
|
|
dwVBUFF_WHOLE dd ?
|
|
dwVBUFF_STD dd ?
|
|
VBUFF_SIZE_STRUC ENDS
|
|
*/
|
|
//===========================================================================
|
|
// VDVD_VER structure
|
|
//===========================================================================
|
|
/*
|
|
VDVD_VER_STRUC STRUC
|
|
bVER_MAJOR db ?
|
|
bVER_MINOR db ?
|
|
VDVD_VER_STRUC ENDS
|
|
*/
|
|
//===========================================================================
|
|
// DISPLAY_MODE structure
|
|
//===========================================================================
|
|
/*
|
|
DISPLAY_MODE_STRUC STRUC
|
|
dwDISP_MODE dd ?
|
|
dwASPECT_RATIO dd ?
|
|
DISPLAY_MODE_STRUC ENDS
|
|
*/
|
|
#define DISPLAY_MODE_NTSC 0x01
|
|
#define DISPLAY_MODE_PAL 0x02
|
|
|
|
#define ASPECT_04_03 0x00
|
|
#define ASPECT_16_09 0x01
|
|
|
|
//===========================================================================
|
|
// OSD_CHAR structure
|
|
//===========================================================================
|
|
/*
|
|
OSD_CHAR_STRUC STRUC
|
|
dwCHAR_CODE dd ?
|
|
dwOSD_LINE dd ?
|
|
dwOSD_COLUM dd ?
|
|
dwOSD_FLAGS dd ?
|
|
OSD_CHAR_STRUC ENDS
|
|
*/
|