xref: /OK3568_Linux_fs/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/nci.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Misc utility routines for accessing chip-specific features
3  * of the BOOKER NCI (non coherent interconnect) based Broadcom chips.
4  *
5  * Broadcom Proprietary and Confidential. Copyright (C) 2020,
6  * All Rights Reserved.
7  *
8  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom;
9  * the contents of this file may not be disclosed to third parties,
10  * copied or duplicated in any form, in whole or in part, without
11  * the prior written permission of Broadcom.
12  *
13  *
14  * <<Broadcom-WL-IPTag/Proprietary:>>
15  *
16  */
17 
18 #ifndef _NCI_H
19 #define _NCI_H
20 
21 #include <siutils.h>
22 
23 #ifdef SOCI_NCI_BUS
24 void nci_uninit(void *nci);
25 uint32 nci_scan(si_t *sih);
26 void nci_dump_erom(void *nci);
27 void* nci_init(si_t *sih, chipcregs_t *cc, uint bustype);
28 volatile void *nci_setcore(si_t *sih, uint coreid, uint coreunit);
29 volatile void *nci_setcoreidx(si_t *sih, uint coreidx);
30 uint nci_findcoreidx(const si_t *sih, uint coreid, uint coreunit);
31 volatile uint32 *nci_corereg_addr(si_t *sih, uint coreidx, uint regoff);
32 uint nci_corereg_writeonly(si_t *sih, uint coreidx, uint regoff, uint mask, uint val);
33 uint nci_corereg(si_t *sih, uint coreidx, uint regoff, uint mask, uint val);
34 uint nci_corerev_minor(const si_t *sih);
35 uint nci_corerev(const si_t *sih);
36 uint nci_corevendor(const si_t *sih);
37 uint nci_get_wrap_reg(const si_t *sih, uint32 offset, uint32 mask, uint32 val);
38 void nci_core_reset(const si_t *sih, uint32 bits, uint32 resetbits);
39 void nci_core_disable(const si_t *sih, uint32 bits);
40 bool nci_iscoreup(const si_t *sih);
41 uint32 nci_coreid(const si_t *sih, uint coreidx);
42 uint nci_numcoreunits(const si_t *sih, uint coreid);
43 uint32 nci_addr_space(const si_t *sih, uint spidx, uint baidx);
44 uint32 nci_addr_space_size(const si_t *sih, uint spidx, uint baidx);
45 bool nci_iscoreup(const si_t *sih);
46 uint nci_intflag(si_t *sih);
47 uint nci_flag(si_t *sih);
48 uint nci_flag_alt(const si_t *sih);
49 void nci_setint(const si_t *sih, int siflag);
50 uint32 nci_oobr_baseaddr(const si_t *sih, bool second);
51 uint nci_coreunit(const si_t *sih);
52 uint nci_corelist(const si_t *sih, uint coreid[]);
53 int nci_numaddrspaces(const si_t *sih);
54 uint32 nci_addrspace(const si_t *sih, uint spidx, uint baidx);
55 uint32 nci_addrspacesize(const si_t *sih, uint spidx, uint baidx);
56 void nci_coreaddrspaceX(const si_t *sih, uint asidx, uint32 *addr, uint32 *size);
57 uint32 nci_core_cflags(const si_t *sih, uint32 mask, uint32 val);
58 void nci_core_cflags_wo(const si_t *sih, uint32 mask, uint32 val);
59 uint32 nci_core_sflags(const si_t *sih, uint32 mask, uint32 val);
60 uint nci_wrapperreg(const si_t *sih, uint32 offset, uint32 mask, uint32 val);
61 void nci_invalidate_second_bar0win(si_t *sih);
62 int nci_backplane_access(si_t *sih, uint addr, uint size, uint *val, bool read);
63 int nci_backplane_access_64(si_t *sih, uint addr, uint size, uint64 *val, bool read);
64 uint nci_num_slaveports(const si_t *sih, uint coreid);
65 #if defined(BCMDBG) || defined(BCMDBG_DUMP) || defined(BCMDBG_PHYDUMP)
66 void nci_dumpregs(const si_t *sih, struct bcmstrbuf *b);
67 #endif  /* BCMDBG || BCMDBG_DUMP || BCMDBG_PHYDUMP */
68 #ifdef BCMDBG
69 void nci_view(si_t *sih, bool verbose);
70 void nci_viewall(si_t *sih, bool verbose);
71 #endif /* BCMDBG */
72 uint32 nci_get_nth_wrapper(const si_t *sih, int32 wrap_pos);
73 uint32 nci_get_axi_addr(const si_t *sih, uint32 *size);
74 uint32* nci_wrapper_dump_binary_one(const si_info_t *sii, uint32 *p32, uint32 wrap_ba);
75 uint32 nci_wrapper_dump_binary(const si_t *sih, uchar *p);
76 uint32 nci_wrapper_dump_last_timeout(const si_t *sih, uint32 *error,
77 	uint32 *core, uint32 *ba, uchar *p);
78 bool nci_check_enable_backplane_log(const si_t *sih);
79 uint32 nci_get_core_baaddr(const si_t *sih, uint32 *size, int32 baidx);
80 uint32 nci_clear_backplane_to(si_t *sih);
81 uint32 nci_clear_backplane_to_per_core(si_t *sih, uint coreid, uint coreunit, void *wrap);
82 bool nci_ignore_errlog(const si_info_t *sii, const aidmp_t *ai,
83 	uint32 lo_addr, uint32 hi_addr, uint32 err_axi_id, uint32 errsts);
84 void nci_wrapper_get_last_error(const si_t *sih, uint32 *error_status, uint32 *core, uint32 *lo,
85 	uint32 *hi, uint32 *id);
86 uint32 nci_get_axi_timeout_reg(void);
87 uint32 nci_findcoreidx_by_axiid(const si_t *sih, uint32 axiid);
88 uint32* nci_wrapper_dump_binary_one(const si_info_t *sii, uint32 *p32, uint32 wrap_ba);
89 uint32 nci_wrapper_dump_binary(const si_t *sih, uchar *p);
90 uint32 nci_wrapper_dump_last_timeout(const si_t *sih, uint32 *error,
91 	uint32 *core, uint32 *ba, uchar *p);
92 bool nci_check_enable_backplane_log(const si_t *sih);
93 uint32 ai_wrapper_dump_buf_size(const si_t *sih);
94 uint32 nci_wrapper_dump_buf_size(const si_t *sih);
95 #endif /* SOCI_NCI_BUS */
96 #endif /* _NCI_H */
97