/* This file is part of linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
 *
 * register descriptions
 *
 * see flexcop.c for copyright information.
 */

/* This file is automatically generated, do not edit things here. */
#ifndef __FLEXCOP_IBI_VALUE_INCLUDED__
#define __FLEXCOP_IBI_VALUE_INCLUDED__

typedef union {
	u32 raw;

	struct {
		u32 dma_address0                   :30;
		u32 dma_0No_update                 : 1;
		u32 dma_0start                     : 1;
	} dma_0x0;

	struct {
		u32 dma_addr_size                  :24;
		u32 DMA_maxpackets                 : 8;
	} dma_0x4_remap;

	struct {
		u32 dma_addr_size                  :24;
		u32 unused                         : 1;
		u32 dma1timer                      : 7;
	} dma_0x4_read;

	struct {
		u32 dma_addr_size                  :24;
		u32 dmatimer                       : 7;
		u32 unused                         : 1;
	} dma_0x4_write;

	struct {
		u32 dma_cur_addr                   :30;
		u32 unused                         : 2;
	} dma_0x8;

	struct {
		u32 dma_address1                   :30;
		u32 remap_enable                   : 1;
		u32 dma_1start                     : 1;
	} dma_0xc;

	struct {
		u32 st_done                        : 1;
		u32 no_base_addr_ack_error         : 1;
		u32 twoWS_port_reg                 : 2;
		u32 total_bytes                    : 2;
		u32 twoWS_rw                       : 1;
		u32 working_start                  : 1;
		u32 data1_reg                      : 8;
		u32 baseaddr                       : 8;
		u32 reserved1                      : 1;
		u32 chipaddr                       : 7;
	} tw_sm_c_100;

	struct {
		u32 unused                         : 6;
		u32 force_stop                     : 1;
		u32 exlicit_stops                  : 1;
		u32 data4_reg                      : 8;
		u32 data3_reg                      : 8;
		u32 data2_reg                      : 8;
	} tw_sm_c_104;

	struct {
		u32 reserved2                      :19;
		u32 tlo1                           : 5;
		u32 reserved1                      : 2;
		u32 thi1                           : 6;
	} tw_sm_c_108;

	struct {
		u32 reserved2                      :19;
		u32 tlo1                           : 5;
		u32 reserved1                      : 2;
		u32 thi1                           : 6;
	} tw_sm_c_10c;

	struct {
		u32 reserved2                      :19;
		u32 tlo1                           : 5;
		u32 reserved1                      : 2;
		u32 thi1                           : 6;
	} tw_sm_c_110;

	struct {
		u32 LNB_CTLPrescaler_sig           : 2;
		u32 LNB_CTLLowCount_sig            :15;
		u32 LNB_CTLHighCount_sig           :15;
	} lnb_switch_freq_200;

	struct {
		u32 Rev_N_sig_reserved2            : 1;
		u32 Rev_N_sig_caps                 : 1;
		u32 Rev_N_sig_reserved1            : 2;
		u32 Rev_N_sig_revision_hi          : 4;
		u32 reserved                       :20;
		u32 Per_reset_sig                  : 1;
		u32 LNB_L_H_sig                    : 1;
		u32 ACPI3_sig                      : 1;
		u32 ACPI1_sig                      : 1;
	} misc_204;

	struct {
		u32 unused                         : 9;
		u32 Mailbox_from_V8_Enable_sig     : 1;
		u32 DMA2_Size_IRQ_Enable_sig       : 1;
		u32 DMA1_Size_IRQ_Enable_sig       : 1;
		u32 DMA2_Timer_Enable_sig          : 1;
		u32 DMA2_IRQ_Enable_sig            : 1;
		u32 DMA1_Timer_Enable_sig          : 1;
		u32 DMA1_IRQ_Enable_sig            : 1;
		u32 Rcv_Data_sig                   : 1;
		u32 MAC_filter_Mode_sig            : 1;
		u32 Multi2_Enable_sig              : 1;
		u32 Per_CA_Enable_sig              : 1;
		u32 SMC_Enable_sig                 : 1;
		u32 CA_Enable_sig                  : 1;
		u32 WAN_CA_Enable_sig              : 1;
		u32 WAN_Enable_sig                 : 1;
		u32 Mask_filter_sig                : 1;
		u32 Null_filter_sig                : 1;
		u32 ECM_filter_sig                 : 1;
		u32 EMM_filter_sig                 : 1;
		u32 PMT_filter_sig                 : 1;
		u32 PCR_filter_sig                 : 1;
		u32 Stream2_filter_sig             : 1;
		u32 Stream1_filter_sig             : 1;
	} ctrl_208;

	struct {
		u32 reserved                       :21;
		u32 Transport_Error                : 1;
		u32 LLC_SNAP_FLAG_set              : 1;
		u32 Continuity_error_flag          : 1;
		u32 Data_receiver_error            : 1;
		u32 Mailbox_from_V8_Status_sig     : 1;
		u32 DMA2_Size_IRQ_Status           : 1;
		u32 DMA1_Size_IRQ_Status           : 1;
		u32 DMA2_Timer_Status              : 1;
		u32 DMA2_IRQ_Status                : 1;
		u32 DMA1_Timer_Status              : 1;
		u32 DMA1_IRQ_Status                : 1;
	} irq_20c;

	struct {
		u32 Special_controls               :16;
		u32 Block_reset_enable             : 8;
		u32 reset_block_700                : 1;
		u32 reset_block_600                : 1;
		u32 reset_block_500                : 1;
		u32 reset_block_400                : 1;
		u32 reset_block_300                : 1;
		u32 reset_block_200                : 1;
		u32 reset_block_100                : 1;
		u32 reset_block_000                : 1;
	} sw_reset_210;

	struct {
		u32 unused2                        :20;
		u32 polarity_PS_ERR_sig            : 1;
		u32 polarity_PS_SYNC_sig           : 1;
		u32 polarity_PS_VALID_sig          : 1;
		u32 polarity_PS_CLK_sig            : 1;
		u32 unused1                        : 3;
		u32 s2p_sel_sig                    : 1;
		u32 section_pkg_enable_sig         : 1;
		u32 halt_V8_sig                    : 1;
		u32 v2WS_oe_sig                    : 1;
		u32 vuart_oe_sig                   : 1;
	} misc_214;

	struct {
		u32 Mailbox_from_V8                :32;
	} mbox_v8_to_host_218;

	struct {
		u32 sysramaccess_busmuster         : 1;
		u32 sysramaccess_write             : 1;
		u32 unused                         : 7;
		u32 sysramaccess_addr              :15;
		u32 sysramaccess_data              : 8;
	} mbox_host_to_v8_21c;

	struct {
		u32 debug_fifo_problem             : 1;
		u32 debug_flag_write_status00      : 1;
		u32 Stream2_trans                  : 1;
		u32 Stream2_PID                    :13;
		u32 debug_flag_pid_saved           : 1;
		u32 MAC_Multicast_filter           : 1;
		u32 Stream1_trans                  : 1;
		u32 Stream1_PID                    :13;
	} pid_filter_300;

	struct {
		u32 reserved                       : 2;
		u32 PMT_trans                      : 1;
		u32 PMT_PID                        :13;
		u32 debug_overrun2                 : 1;
		u32 debug_overrun3                 : 1;
		u32 PCR_trans                      : 1;
		u32 PCR_PID                        :13;
	} pid_filter_304;

	struct {
		u32 reserved                       : 2;
		u32 ECM_trans                      : 1;
		u32 ECM_PID                        :13;
		u32 EMM_filter_6                   : 1;
		u32 EMM_filter_4                   : 1;
		u32 EMM_trans                      : 1;
		u32 EMM_PID                        :13;
	} pid_filter_308;

	struct {
		u32 unused2                        : 3;
		u32 Group_mask                     :13;
		u32 unused1                        : 2;
		u32 Group_trans                    : 1;
		u32 Group_PID                      :13;
	} pid_filter_30c_ext_ind_0_7;

	struct {
		u32 unused                         :15;
		u32 net_master_read                :17;
	} pid_filter_30c_ext_ind_1;

	struct {
		u32 unused                         :15;
		u32 net_master_write               :17;
	} pid_filter_30c_ext_ind_2;

	struct {
		u32 unused                         :15;
		u32 next_net_master_write          :17;
	} pid_filter_30c_ext_ind_3;

	struct {
		u32 reserved2                      : 5;
		u32 stack_read                     :10;
		u32 reserved1                      : 6;
		u32 state_write                    :10;
		u32 unused1                        : 1;
	} pid_filter_30c_ext_ind_4;

	struct {
		u32 unused                         :22;
		u32 stack_cnt                      :10;
	} pid_filter_30c_ext_ind_5;

	struct {
		u32 unused                         : 4;
		u32 data_size_reg                  :12;
		u32 write_status4                  : 2;
		u32 write_status1                  : 2;
		u32 pid_fsm_save_reg300            : 2;
		u32 pid_fsm_save_reg4              : 2;
		u32 pid_fsm_save_reg3              : 2;
		u32 pid_fsm_save_reg2              : 2;
		u32 pid_fsm_save_reg1              : 2;
		u32 pid_fsm_save_reg0              : 2;
	} pid_filter_30c_ext_ind_6;

	struct {
		u32 unused                         :22;
		u32 pass_alltables                 : 1;
		u32 AB_select                      : 1;
		u32 extra_index_reg                : 3;
		u32 index_reg                      : 5;
	} index_reg_310;

	struct {
		u32 reserved                       :17;
		u32 PID_enable_bit                 : 1;
		u32 PID_trans                      : 1;
		u32 PID                            :13;
	} pid_n_reg_314;

	struct {
		u32 reserved                       : 6;
		u32 HighAB_bit                     : 1;
		u32 Enable_bit                     : 1;
		u32 A6_byte                        : 8;
		u32 A5_byte                        : 8;
		u32 A4_byte                        : 8;
	} mac_low_reg_318;

	struct {
		u32 reserved                       : 8;
		u32 A3_byte                        : 8;
		u32 A2_byte                        : 8;
		u32 A1_byte                        : 8;
	} mac_high_reg_31c;

	struct {
		u32 data_Tag_ID                    :16;
		u32 reserved                       :16;
	} data_tag_400;

	struct {
		u32 Card_IDbyte3                   : 8;
		u32 Card_IDbyte4                   : 8;
		u32 Card_IDbyte5                   : 8;
		u32 Card_IDbyte6                   : 8;
	} card_id_408;

	struct {
		u32 Card_IDbyte1                   : 8;
		u32 Card_IDbyte2                   : 8;
	} card_id_40c;

	struct {
		u32 MAC6                           : 8;
		u32 MAC3                           : 8;
		u32 MAC2                           : 8;
		u32 MAC1                           : 8;
	} mac_address_418;

	struct {
		u32 reserved                       :16;
		u32 MAC8                           : 8;
		u32 MAC7                           : 8;
	} mac_address_41c;

	struct {
		u32 reserved                       :21;
		u32 txbuffempty                    : 1;
		u32 ReceiveByteFrameError          : 1;
		u32 ReceiveDataReady               : 1;
		u32 transmitter_data_byte          : 8;
	} ci_600;

	struct {
		u32 pi_component_reg               : 3;
		u32 pi_rw                          : 1;
		u32 pi_ha                          :20;
		u32 pi_d                           : 8;
	} pi_604;

	struct {
		u32 pi_busy_n                      : 1;
		u32 pi_wait_n                      : 1;
		u32 pi_timeout_status              : 1;
		u32 pi_CiMax_IRQ_n                 : 1;
		u32 config_cclk                    : 1;
		u32 config_cs_n                    : 1;
		u32 config_wr_n                    : 1;
		u32 config_Prog_n                  : 1;
		u32 config_Init_stat               : 1;
		u32 config_Done_stat               : 1;
		u32 pcmcia_b_mod_pwr_n             : 1;
		u32 pcmcia_a_mod_pwr_n             : 1;
		u32 reserved                       : 3;
		u32 Timer_addr                     : 5;
		u32 unused                         : 1;
		u32 timer_data                     : 7;
		u32 Timer_Load_req                 : 1;
		u32 Timer_Read_req                 : 1;
		u32 oncecycle_read                 : 1;
		u32 serialReset                    : 1;
	} pi_608;

	struct {
		u32 reserved                       : 6;
		u32 rw_flag                        : 1;
		u32 dvb_en                         : 1;
		u32 key_array_row                  : 5;
		u32 key_array_col                  : 3;
		u32 key_code                       : 2;
		u32 key_enable                     : 1;
		u32 PID                            :13;
	} dvb_reg_60c;

	struct {
		u32 start_sram_ibi                 : 1;
		u32 reserved2                      : 1;
		u32 ce_pin_reg                     : 1;
		u32 oe_pin_reg                     : 1;
		u32 reserved1                      : 3;
		u32 sc_xfer_bit                    : 1;
		u32 sram_data                      : 8;
		u32 sram_rw                        : 1;
		u32 sram_addr                      :15;
	} sram_ctrl_reg_700;

	struct {
		u32 net_addr_write                 :16;
		u32 net_addr_read                  :16;
	} net_buf_reg_704;

	struct {
		u32 cai_cnt                        : 4;
		u32 reserved2                      : 6;
		u32 cai_write                      :11;
		u32 reserved1                      : 5;
		u32 cai_read                       :11;
	} cai_buf_reg_708;

	struct {
		u32 cao_cnt                        : 4;
		u32 reserved2                      : 6;
		u32 cap_write                      :11;
		u32 reserved1                      : 5;
		u32 cao_read                       :11;
	} cao_buf_reg_70c;

	struct {
		u32 media_cnt                      : 4;
		u32 reserved2                      : 6;
		u32 media_write                    :11;
		u32 reserved1                      : 5;
		u32 media_read                     :11;
	} media_buf_reg_710;

	struct {
		u32 reserved                       :17;
		u32 ctrl_maximumfill               : 1;
		u32 ctrl_sramdma                   : 1;
		u32 ctrl_usb_wan                   : 1;
		u32 cao_ovflow_error               : 1;
		u32 cai_ovflow_error               : 1;
		u32 media_ovflow_error             : 1;
		u32 net_ovflow_error               : 1;
		u32 MEDIA_Dest                     : 2;
		u32 CAO_Dest                       : 2;
		u32 CAI_Dest                       : 2;
		u32 NET_Dest                       : 2;
	} sram_dest_reg_714;

	struct {
		u32 reserved3                      :11;
		u32 net_addr_write                 : 1;
		u32 reserved2                      : 3;
		u32 net_addr_read                  : 1;
		u32 reserved1                      : 4;
		u32 net_cnt                        :12;
	} net_buf_reg_718;

	struct {
		u32 reserved3                      : 4;
		u32 wan_pkt_frame                  : 4;
		u32 reserved2                      : 4;
		u32 sram_memmap                    : 2;
		u32 sram_chip                      : 2;
		u32 wan_wait_state                 : 8;
		u32 reserved1                      : 6;
		u32 wan_speed_sig                  : 2;
	} wan_ctrl_reg_71c;
} flexcop_ibi_value;

#endif
