cmicx_sim_pcid.h (3049B)
1 /* 2 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 3 * 4 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 5 */ 6 7 8 /* 9 * cmicx_sim_pcid.h 10 * 11 * header for the cmic module 12 */ 13 14 15 #ifndef _CMICX_SIM_PCID_H_ 16 #define _CMICX_SIM_PCID_H_ 17 18 19 /* includes */ 20 #include "pcid.h" 21 22 23 /* pcid functions */ 24 bool cmicx_update(pcid_info_t *pcid_info); 25 bool cmicx_pcid_register_add(addr_t,pcid_read_func_t*,pcid_write_func_t*); 26 bool cmicx_pcid_register_read(addr_t addr,reg_t *reg); 27 bool cmicx_pcid_register_write(addr_t addr,reg_t reg); 28 bool cmicx_pcid_interrupt_send(pcid_info_t *pcid_info); 29 bool cmicx_pcid_mem_read(pcid_info_t *pcid_info, addr_t addr,void *mem,int amount); 30 bool cmicx_pcid_mem_write(pcid_info_t *pcid_info, addr_t addr,void *mem,int amount); 31 void cmicx_pcid_mem_dump(void); 32 33 34 /* main schan access functions */ 35 bool cmicx_schan_init(cmicx_schan_data_t *schan_data,char *id_string); 36 bool cmicx_schan_update(pcid_info_t *pcid_info, cmicx_schan_data_t *schan_data); 37 38 /* schan support functions */ 39 bool cmic_schan_access_start(cmicx_schan_data_t *schan_data); 40 bool cmic_schan_access_abort(cmicx_schan_data_t *schan_data); 41 bool cmic_schan_ctrl_read(reg_t *val,cmicx_schan_data_t *schan_data); 42 bool cmic_schan_ctrl_write(reg_t val,cmicx_schan_data_t *schan_data); 43 bool cmic_schan_err_read(reg_t *val,cmicx_schan_data_t *schan_data); 44 bool cmic_schan_ack_data_beat_count_read(reg_t *val,cmicx_schan_data_t *schan_data); 45 46 /* sbus specific support functions (may be used by sbus dma also) */ 47 void cmic_schan_command_build(schan_command_opcode opcode,int dport,int dlen,bool err,char ecode,bool dma,char bank,bool nack,reg_t *command); 48 void cmic_schan_sbus_ring_get(int blockid,int *ringnum); 49 bool cmic_schan_sbus_command_start(reg_t sbus_command,bool *is_write); 50 bool cmic_schan_sbus_command_complete(pcid_info_t *pcid_info, reg_t *sbus_command,reg_t *sbus_command_ack,int expected_resp_words,int *num_words_in_command); 51 52 /* main sbus_dma access functions */ 53 bool cmicx_sbus_dma_init(cmicx_sbus_dma_data_t *sbus_dma_data,char *id_string); 54 bool cmicx_sbus_dma_update(pcid_info_t *pcid_info, cmicx_sbus_dma_data_t *sbus_dma_data); 55 56 /* main packet dma access functions */ 57 bool cmicx_packet_dma_global_init(char *ip_file_name,char *ep_file_name,char *loopback_file_name); 58 bool cmicx_packet_dma_init(cmicx_packet_dma_data_t *packet_dma_data,char *id_string,int chan); 59 bool cmicx_packet_dma_global_update(void); 60 bool cmicx_packet_dma_update(pcid_info_t *pcid_info, cmicx_packet_dma_data_t *packet_dma_data); 61 62 /* support functions */ 63 bool cmic_pktdma_access_start(cmicx_packet_dma_data_t *packet_dma_data); 64 bool cmic_pktdma_access_abort(cmicx_packet_dma_data_t *packet_dma_data); 65 void cmic_packet_dma_descriptor_done(pcid_info_t *pcid_info, cmicx_packet_dma_data_t *packet_dma_data); 66 void cmic_packet_dma_chain_done(cmicx_packet_dma_data_t *packet_dma_data); 67 void cmic_packet_dma_interrupts_post(cmicx_packet_dma_data_t *packet_dma_data); 68 69 70 71 #endif /* CMICX_SIM_PCID_H */ 72