76 lines
2.7 KiB
C
76 lines
2.7 KiB
C
|
#ifndef DTV_TSC_HAL_H
|
||
|
#define DTV_TSC_HAL_H
|
||
|
#include "tsc_type.h"
|
||
|
|
||
|
#define TSC_CHAN_NUM 32 //* channel number for one port, there are one port in A64 tsc module.
|
||
|
#define PID_ALL 8192 //* there are 8192 pids at most
|
||
|
#define PID_PAT 0 //* pid for PAT table
|
||
|
#define PKT_LEN 188 //* packet length
|
||
|
#define NEW_SWITCH_METHOD (0)
|
||
|
#define TSF_INTR_THRESHOLD (1)//defines when to interrupt
|
||
|
|
||
|
|
||
|
typedef enum TSF_CHAN_TYPE_E {
|
||
|
TSF_TP_CHAN = 0, TSF_PES_CHAN = 1
|
||
|
} tsf_chan_type_e;
|
||
|
|
||
|
//typedef enum TSF_PORT_E {
|
||
|
// TSF_PORT_0 = 0
|
||
|
//} tsf_port_e;
|
||
|
|
||
|
typedef enum CA_TYPE_E {
|
||
|
CA_TYPE_DVBCSA_1_1 = 0, CA_TYPE_UNKNOW
|
||
|
} ca_type_e;
|
||
|
|
||
|
typedef enum CW_TYPE_E {
|
||
|
CW_ODD_LOW_32BITS = 0,
|
||
|
CW_ODD_HIGH_32BITS = 1,
|
||
|
CW_EVEN_LOW_32BITS = 2,
|
||
|
CW_EVEN_HIGH_32_BITS = 3,
|
||
|
} cw_type_e;
|
||
|
|
||
|
typedef struct PORT_STATUS_T {
|
||
|
uint32_t chan_open_flag;
|
||
|
uint32_t chan_pes_flag;
|
||
|
uint32_t chan_buf_size[TSC_CHAN_NUM];
|
||
|
uint8_t* chan_buf[TSC_CHAN_NUM];
|
||
|
} port_status_t;
|
||
|
|
||
|
typedef struct TSC_CONTEXT_T {
|
||
|
void* tsc_registers;
|
||
|
port_status_t port;
|
||
|
} tsc_ctx_t;
|
||
|
|
||
|
//************************* TSC functions **************************//
|
||
|
void *tsc_init(void *regs);
|
||
|
void tsc_exit(void *handle);
|
||
|
int32_t tsc_open(void * handle);
|
||
|
void tsc_close(void *handle);
|
||
|
|
||
|
void tsf_get_status(void *handle, int32_t* port0_chan_intr_flags, int32_t* port0_pcr_intr_flag,
|
||
|
int32_t* port1_chan_intr_flags, int32_t* port1_pcr_intr_flag);
|
||
|
|
||
|
//************************* TSF functions **************************//
|
||
|
int32_t tsf_open_chan(void* handle, uint32_t pid, uint8_t* virt_addr, uint8_t *phy_addr,
|
||
|
uint32_t buf_size, tsf_chan_type_e chan_type, uint32_t chan_id, uint32_t interrupt_enable);
|
||
|
void tsf_close_chan(void *handle, uint32_t chan_id);
|
||
|
int32_t tsf_flush_chan(void *handle, uint32_t chan_id, uint32_t byte_count);
|
||
|
int32_t tsf_reset_chan(void *handle, uint32_t chan_id);
|
||
|
int32_t tsf_request_data(void *handle, uint32_t chan_id, uint8_t** data,
|
||
|
uint32_t* size, uint8_t** ring_data, uint32_t* ring_size);
|
||
|
int32_t tsf_check_data_size(void *handle, uint32_t chan_id);
|
||
|
uint32_t tsf_get_pcr(void *handle);
|
||
|
void tsf_open_pcr_detect(void *handle, uint32_t chan_id);
|
||
|
void tsf_close_pcr_detect(void *handle );
|
||
|
int32_t tsf_set_ca_enable(void *handle, uint32_t chan_id, uint32_t en);
|
||
|
int32_t tsf_set_cw_index(void *handle, uint32_t chan_id, uint32_t cw_index);
|
||
|
void dump_register(void *handle, int chan);
|
||
|
//************************* TSD functions **************************//
|
||
|
int32_t tsd_set_ca_type(void *handle, ca_type_e ca_type);
|
||
|
int32_t tsd_set_cw(void *handle, uint32_t cw_index, cw_type_e cw_type, uint32_t cw_value);
|
||
|
|
||
|
//for debug
|
||
|
void tsf_dump_chan_register(void *handle, int chan);
|
||
|
void ts_dump_registers(void *handle);
|
||
|
#endif
|