cs46xx_dsp_scb_types.h
来自「Linux Kernel 2.6.9 for OMAP1710」· C头文件 代码 · 共 1,217 行 · 第 1/2 页
H
1,217 行
u32 dec2_reserved2; u32 dec2_input_nuf_strm_config; /* inputBufStrmConfig: rsConfig for the input buffer to the decimator (buffer size = decimationFactor * 32 dwords) */ ___DSP_DUAL_16BIT_ALLOC( dec2_phi_incr, dec2_input_buf_consumer_ptr ) /* inputBufConsumerPtr: Input buffer read pointer (into SRC filter) phiIncr = decimationFactor * 4 */ u32 dec2_reserved3; ___DSP_DUAL_16BIT_ALLOC( dec2_exp_vol_change_rate, dec2_input_buf_producer_ptr ) /* inputBufProducerPtr: Input buffer write pointer expVolChangeRate: Exponential volume change rate for possible future mixer on input streams */ ___DSP_DUAL_16BIT_ALLOC( dec2_next_scb, dec2_sub_list_ptr ) ___DSP_DUAL_16BIT_ALLOC( dec2_entry_point, dec2_this_spb ) u32 dec2_strm_rs_config; u32 dec2_strm_buf_ptr; u32 dec2_reserved4; volume_control_t dec2_vol_ctrl; /* Not used! */} decimate_by_pow2_scb_t;typedef struct _vari_decimate_scb_t { ___DSP_DUAL_16BIT_ALLOC( vdec_frames_left_in_gof, vdec_gofs_left_in_sec ) ___DSP_DUAL_16BIT_ALLOC( vdec_const2_thirds, vdec_extra_in_samples ) /* extraInSamples: # of accumulated, unused input samples (init. to 0) const2thirds: constant 2/3 in 16Q0 format (sign.15) */ ___DSP_DUAL_16BIT_ALLOC( vdec_cor_per_gof, vdec_correction_per_sec ) ___DSP_DUAL_16BIT_ALLOC( vdec_output_buf_producer_ptr, vdec_input_buf_consumer_ptr ) /* inputBufConsumerPtr: Input buffer read pointer (into SRC filter) */ ___DSP_DUAL_16BIT_ALLOC( vdec_gof_length, vdec_gofs_per_sec ) u32 vdec_input_buf_strm_config; /* inputBufStrmConfig: rsConfig for the input buffer to the decimator (buffer size = 64 dwords) */ u32 vdec_coef_increment; /* coefIncrement = - 128.0 / decimationFactor (as a 32Q15 number) */ u32 vdec_accumphi; /* accumPhi: accumulated fractional phase increment (6.26) */ ___DSP_DUAL_16BIT_ALLOC( vdec_exp_vol_change_rate, vdec_input_buf_producer_ptr ) /* inputBufProducerPtr: Input buffer write pointer expVolChangeRate: Exponential volume change rate for possible future mixer on input streams */ ___DSP_DUAL_16BIT_ALLOC( vdec_next_scb, vdec_sub_list_ptr ) ___DSP_DUAL_16BIT_ALLOC( vdec_entry_point, vdec_this_spb ) u32 vdec_strm_rs_config; u32 vdec_strm_buf_ptr; u32 vdec_phi_incr_6int_26frac; volume_control_t vdec_vol_ctrl;} vari_decimate_scb_t;/* SCB for MIX_TO_OSTREAM algorithm family */typedef struct _mix2_ostream_scb_t { /* First 13 dwords from generic_scb_t */ basic_dma_req_t basic_req; /* Optional */ scatter_gather_ext_t sg_ext; /* Optional */ ___DSP_DUAL_16BIT_ALLOC( next_scb, /* REQUIRED */ sub_list_ptr /* REQUIRED */ ) ___DSP_DUAL_16BIT_ALLOC( entry_point, /* REQUIRED */ this_spb /* REQUIRED */ ) u32 strm_rs_config; /* REQUIRED */ u32 strm_buf_ptr; /* REQUIRED */ /* hi: Number of mixed-down input triplets computed since start of group lo: Number of frames remaining to be processed in the current group of frames */ ___DSP_DUAL_16BIT_ALLOC( frames_left_in_group, accum_input_triplets ) /* hi: Exponential volume change rate for mixer on input streams lo: Number of frames in the group */ ___DSP_DUAL_16BIT_ALLOC( frame_group_length, exp_vol_change_rate ) ___DSP_DUAL_16BIT_ALLOC( const_FFFF, const_zero )} mix2_ostream_scb_t;/* SCB for S16_MIX algorithm */typedef struct _mix_only_scb_t { /* First 13 dwords from generic_scb_t */ basic_dma_req_t basic_req; /* Optional */ scatter_gather_ext_t sg_ext; /* Optional */ ___DSP_DUAL_16BIT_ALLOC( next_scb, /* REQUIRED */ sub_list_ptr /* REQUIRED */ ) ___DSP_DUAL_16BIT_ALLOC( entry_point, /* REQUIRED */ this_spb /* REQUIRED */ ) u32 strm_rs_config; /* REQUIRED */ u32 strm_buf_ptr; /* REQUIRED */ u32 reserved; volume_control_t vol_ctrl;} mix_only_scb_t;/* SCB for the async. CODEC input algorithm */typedef struct _async_codec_input_scb_t { u32 io_free2; u32 io_current_total; u32 io_previous_total; u16 io_count; u16 io_count_limit; u16 o_fifo_base_addr; u16 ost_mo_format; /* 1 = stereo; 0 = mono xxx for ASER 1 (not allowed); 118 for ASER2 */ u32 ostrm_rs_config; u32 ostrm_buf_ptr; ___DSP_DUAL_16BIT_ALLOC( io_sclks_per_lr_clk, io_io_enable ) u32 io_free4; ___DSP_DUAL_16BIT_ALLOC( io_next_scb, io_sub_list_ptr ) ___DSP_DUAL_16BIT_ALLOC( io_entry_point, io_this_spb ) u32 istrm_rs_config; u32 istrm_buf_ptr; /* Init. 0000:8042: for ASER1 0000:8044: for ASER2 */ ___DSP_DUAL_16BIT_ALLOC( io_stat_reg_addr, iofifo_pointer ) /* Init 1 stero:100 ASER1 Init 0 mono:110 ASER2 */ ___DSP_DUAL_16BIT_ALLOC( ififo_base_addr, ist_mo_format ) u32 i_free;} async_codec_input_scb_t;/* SCB for the SP/DIF CODEC input and output */typedef struct _spdifiscb_t { ___DSP_DUAL_16BIT_ALLOC( status_ptr, status_start_ptr ) u32 current_total; u32 previous_total; ___DSP_DUAL_16BIT_ALLOC( count, count_limit ) u32 status_data; ___DSP_DUAL_16BIT_ALLOC( status, free4 ) u32 free3; ___DSP_DUAL_16BIT_ALLOC( free2, bit_count ) u32 temp_status; ___DSP_DUAL_16BIT_ALLOC( next_SCB, sub_list_ptr ) ___DSP_DUAL_16BIT_ALLOC( entry_point, this_spb ) u32 strm_rs_config; u32 strm_buf_ptr; ___DSP_DUAL_16BIT_ALLOC( stat_reg_addr, fifo_pointer ) ___DSP_DUAL_16BIT_ALLOC( fifo_base_addr, st_mo_format ) u32 free1;} spdifiscb_t;/* SCB for the SP/DIF CODEC input and output */typedef struct _spdifoscb_t { u32 free2; u32 free3[4]; /* Need to be here for compatibility with AsynchFGTxCode */ u32 strm_rs_config; u32 strm_buf_ptr; ___DSP_DUAL_16BIT_ALLOC( status, free5 ) u32 free4; ___DSP_DUAL_16BIT_ALLOC( next_scb, sub_list_ptr ) ___DSP_DUAL_16BIT_ALLOC( entry_point, this_spb ) u32 free6[2]; ___DSP_DUAL_16BIT_ALLOC( stat_reg_addr, fifo_pointer ) ___DSP_DUAL_16BIT_ALLOC( fifo_base_addr, st_mo_format ) u32 free1; } spdifoscb_t;typedef struct _asynch_fg_rx_scb_t { ___DSP_DUAL_16BIT_ALLOC( bot_buf_mask, buf_Mask ) ___DSP_DUAL_16BIT_ALLOC( max, min ) ___DSP_DUAL_16BIT_ALLOC( old_producer_pointer, hfg_scb_ptr ) ___DSP_DUAL_16BIT_ALLOC( delta, adjust_count ) u32 unused2[5]; ___DSP_DUAL_16BIT_ALLOC( sibling_ptr, child_ptr ) ___DSP_DUAL_16BIT_ALLOC( code_ptr, this_ptr ) u32 strm_rs_config; u32 strm_buf_ptr; u32 unused_phi_incr; ___DSP_DUAL_16BIT_ALLOC( right_targ, left_targ ) ___DSP_DUAL_16BIT_ALLOC( right_vol, left_vol )} asynch_fg_rx_scb_t;typedef struct _asynch_fg_tx_scb_t { ___DSP_DUAL_16BIT_ALLOC( not_buf_mask, buf_mask ) ___DSP_DUAL_16BIT_ALLOC( max, min ) ___DSP_DUAL_16BIT_ALLOC( unused1, hfg_scb_ptr ) ___DSP_DUAL_16BIT_ALLOC( delta, adjust_count ) u32 accum_phi; ___DSP_DUAL_16BIT_ALLOC( unused2, const_one_third ) u32 unused3[3]; ___DSP_DUAL_16BIT_ALLOC( sibling_ptr, child_ptr ) ___DSP_DUAL_16BIT_ALLOC( codePtr, this_ptr ) u32 strm_rs_config; u32 strm_buf_ptr; u32 phi_incr; ___DSP_DUAL_16BIT_ALLOC( unused_right_targ, unused_left_targ ) ___DSP_DUAL_16BIT_ALLOC( unused_right_vol, unused_left_vol )} asynch_fg_tx_scb_t;typedef struct _output_snoop_scb_t { /* First 13 dwords from generic_scb_t */ basic_dma_req_t basic_req; /* Optional */ scatter_gather_ext_t sg_ext; /* Optional */ ___DSP_DUAL_16BIT_ALLOC( next_scb, /* REQUIRED */ sub_list_ptr /* REQUIRED */ ) ___DSP_DUAL_16BIT_ALLOC( entry_point, /* REQUIRED */ this_spb /* REQUIRED */ ) u32 strm_rs_config; /* REQUIRED */ u32 strm_buf_ptr; /* REQUIRED */ ___DSP_DUAL_16BIT_ALLOC( init_snoop_input_link, snoop_child_input_scb ) u32 snoop_input_buf_ptr; ___DSP_DUAL_16BIT_ALLOC( reserved, input_scb )} output_snoop_scb_t;typedef struct _spio_write_scb_t { ___DSP_DUAL_16BIT_ALLOC( address1, address2 ) u32 data1; u32 data2; ___DSP_DUAL_16BIT_ALLOC( address3, address4 ) u32 data3; u32 data4; ___DSP_DUAL_16BIT_ALLOC( unused1, data_ptr ) u32 unused2[2]; ___DSP_DUAL_16BIT_ALLOC( sibling_ptr, child_ptr ) ___DSP_DUAL_16BIT_ALLOC( entry_point, this_ptr ) u32 unused3[5];} spio_write_scb_t;typedef struct _magic_snoop_task_t { u32 i0; u32 i1; u32 strm_buf_ptr1; u16 i2; u16 snoop_scb; u32 i3; u32 i4; u32 i5; u32 i6; u32 i7; ___DSP_DUAL_16BIT_ALLOC( next_scb, sub_list_ptr ) ___DSP_DUAL_16BIT_ALLOC( entry_point, this_ptr ) u32 strm_buf_config; u32 strm_buf_ptr2; u32 i8; volume_control_t vdec_vol_ctrl;} magic_snoop_task_t;typedef struct _filter_scb_t { ___DSP_DUAL_16BIT_ALLOC( a0_right, /* 0x00 */ a0_left ) ___DSP_DUAL_16BIT_ALLOC( a1_right, /* 0x01 */ a1_left ) ___DSP_DUAL_16BIT_ALLOC( a2_right, /* 0x02 */ a2_left ) ___DSP_DUAL_16BIT_ALLOC( output_buf_ptr, /* 0x03 */ init ) ___DSP_DUAL_16BIT_ALLOC( filter_unused3, /* 0x04 */ filter_unused2 ) u32 prev_sample_output1; /* 0x05 */ u32 prev_sample_output2; /* 0x06 */ u32 prev_sample_input1; /* 0x07 */ u32 prev_sample_input2; /* 0x08 */ ___DSP_DUAL_16BIT_ALLOC( next_scb_ptr, /* 0x09 */ sub_list_ptr ) ___DSP_DUAL_16BIT_ALLOC( entry_point, /* 0x0A */ spb_ptr ) u32 strm_rs_config; /* 0x0B */ u32 strm_buf_ptr; /* 0x0C */ ___DSP_DUAL_16BIT_ALLOC( b0_right, /* 0x0D */ b0_left ) ___DSP_DUAL_16BIT_ALLOC( b1_right, /* 0x0E */ b1_left ) ___DSP_DUAL_16BIT_ALLOC( b2_right, /* 0x0F */ b2_left )} filter_scb_t;#endif /* __DSP_SCB_TYPES_H__ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?