blob: 75d9d9be15ccb390b6655a57661b3f129c09a223 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001#ifndef _UBM_EXPORT_INC
2#define _UBM_EXPORT_INC
3
4#include "ubm_type.h"
5#include "usbc_custom.h"
6
7#include "lhif_if.h"
8
9#ifndef __UBM_UT__
10#include "hif_common.h"
11#include "hifusb_qmu.h"
12#endif
13
14/* Init */
15void ubm_init();
16
17/* FHB */
18kal_uint8 ubm_set_fhb(const void* headerPattern, kal_uint8 size, const char* headerName);
19kal_bool ubm_update_fhb(const void* headerPattern, kal_uint8 size, const char* headerName);
20kal_bool ubm_clean_fhb(const char* headerName);
21kal_uint8 ubm_get_fhb_type(const char* headerName);
22
23/* NFHB */
24kal_uint8* ubm_allocate_nfhb(kal_uint8 txQueNo, kal_uint32 allocSize);
25void ubm_release_nfhb(kal_uint8 txQueNo, void* nfhbAddr, kal_uint32 relSize);
26
27/* VRB address virtual/physical translate */
28ubm_vrb_phy_addr ubm_addr_vir2phy_and_save(kal_uint8 txQueNo, kal_uint32 virAddr, kal_uint16 virLen);
29kal_uint32 ubm_addr_phy2vir_and_delete(kal_uint8 txQueNo, kal_uint32 phyAddr);
30
31/* VRB release */
32void ubm_vrb_virtual_addr_release(void* vrbVirAddr, kal_uint16 relLen);
33
34/* DRB */
35void ubm_drb_init_properties();
36kal_bool ubm_drb_quest_unused(kal_uint8 txQueNo, kal_uint32 alloCount);
37kal_bool ubm_drb_submit(kal_uint8 txQueNo, kal_uint32 submitCount);
38void ubm_drb_repay(kal_uint8 txQueNo);
39kal_bool ubm_drb_release(kal_uint8 txQueNo, kal_uint32 headIdx, kal_uint32 relCount);
40kal_uint32 ubm_drb_poll(kal_uint8 txQueNo, kal_uint32* headIdx, kal_uint32* tailIdx);
41kal_bool ubm_drb_get_one_writable_Idx(kal_uint8 txQueNo, kal_uint32* writeIdx);
42kal_bool ubm_drb_revert_one_write(kal_uint8 txQueNo);
43usbq_dl_pd_drb* ubm_drb_idx2addr(kal_uint8 txQueNo, kal_uint32 drbIndex);
44kal_uint32 ubm_drb_addr2idx(kal_uint8 txQueNo, usbq_dl_pd_drb* drbPtr);
45kal_bool ubm_drb_flush(kal_uint8 txQueNo, kal_uint32* headIdx, kal_uint32* tailIdx, kal_uint32* num);
46
47/* XIT */
48kal_bool ubm_xit_release(kal_uint8 rxQueNo, kal_uint16 headIdx, kal_uint32 relCount);
49kal_uint32 ubm_xit_poll(kal_uint8 rxQueNo, kal_uint16* headIdx, kal_uint16* tailIdx, kal_uint16* relIdx);
50usbq_ul_xit* ubm_xit_idx2addr(kal_uint8 rxQueNo, kal_uint32 xitIndex);
51kal_uint32 ubm_xit_addr2idx(kal_uint8 rxQueNo, usbq_ul_xit* xitPtr);
52kal_uint32 ubm_xit_get_next_idx(kal_uint8 rxQueNo, kal_uint32 xitIndex);
53kal_bool ubm_xit_flush(kal_uint8 rxQueNo, kal_uint32* headIdx, kal_uint32* tailIdx, kal_uint32* num);
54
55/* UL META */
56lhif_meta_tbl_t* ubm_ul_meta_idx2addr(kal_uint8 rxQueNo, kal_uint16 xitIndex);
57kal_uint16 ubm_ul_meta_get_next_idx(kal_uint8 rxQueNo, kal_uint16 xitIndex);
58void ubm_ul_meta_init_properties();
59LHIF_NET_TYPE ubm_ul_meta_get_lhif_net_type(kal_uint8 rxQueNo, usb_class_type_e classType);
60kal_bool ubm_ul_meta_enqueue_lhif_ul_queue(kal_uint8 rxQueNo, LHIF_NET_TYPE lhifNetType,kal_uint8 usbclassDevId, void* dataAddr, kal_uint16 dataLen);
61kal_bool ubm_ul_meta_enqueue_lhif_ul_queue_did(kal_uint8 rxQueNo, LHIF_NET_TYPE lhifNetType, kal_uint8 usbclassDevId, LHIF_NET_IF net_if, void* did);
62lhif_meta_tbl_t* ubm_ul_meta_get_base();
63
64/****************************************************************************/
65#endif /* _UBM_EXPORT_INC */
66