1:
11:
12:
16:
17:
18:
#include "AG903_common.h"
19:
20:
#include "bmu/bmuprm.h"
21:
22:
30:
void AG903_BMUPrmSetCTRL(uint8_t unit, uint8_t en)
31: {
32:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
33:
ASSERT(en <= 1);
34:
35:
AG903_BMUn(unit)->CTRL = (en <<
AG903_BMUn_CTRL_EN_POS) &
AG903_BMUn_CTRL_EN_MSK;
36: }
37:
38:
46:
void AG903_BMUPrmGetCTRL(uint8_t unit, uint8_t *en)
47: {
48:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
49:
ASSERT(en != NULL);
50:
51: *en = (
AG903_BMUn(unit)->CTRL &
AG903_BMUn_CTRL_EN_MSK) >>
AG903_BMUn_CTRL_EN_POS;
52: }
53:
54:
64:
void AG903_BMUPrmSetMOD(uint8_t unit, uint8_t ini, uint8_t mgr, uint8_t src)
65: {
66:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
67:
ASSERT(ini <= 1);
68:
ASSERT(mgr <= 3);
69:
70: uint32_t reg = 0;
71: reg |= (ini <<
AG903_BMUn_MOD_INI_POS) &
AG903_BMUn_MOD_INI_MSK;
72: reg |= (mgr <<
AG903_BMUn_MOD_MGR_POS) &
AG903_BMUn_MOD_MGR_MSK;
73: reg |= (src <<
AG903_BMUn_MOD_SRC_POS) &
AG903_BMUn_MOD_SRC_MSK;
74:
AG903_BMUn(unit)->MOD = reg;
75: }
76:
77:
87:
void AG903_BMUPrmGetMOD(uint8_t unit, uint8_t *ini, uint8_t *mgr, uint8_t *src)
88: {
89:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
90:
ASSERT(ini != NULL);
91:
ASSERT(mgr != NULL);
92:
93: uint32_t reg =
AG903_BMUn(unit)->MOD;
94: *ini = (reg &
AG903_BMUn_MOD_INI_MSK) >>
AG903_BMUn_MOD_INI_POS;
95: *mgr = (reg &
AG903_BMUn_MOD_MGR_MSK) >>
AG903_BMUn_MOD_MGR_POS;
96: *src = (reg &
AG903_BMUn_MOD_SRC_MSK) >>
AG903_BMUn_MOD_SRC_POS;
97: }
98:
99:
107:
void AG903_BMUPrmSetSINKMODULE(uint8_t unit, uint32_t valid)
108: {
109:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
110:
ASSERT((valid & 0xFFFF0000) == 0);
111:
112:
AG903_BMUn(unit)->SINKMODULE = valid;
113: }
114:
115:
123:
void AG903_BMUPrmGetSINKMODULE(uint8_t unit, uint32_t* valid)
124: {
125:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
126:
ASSERT(valid != NULL);
127:
128: *valid =
AG903_BMUn(unit)->SINKMODULE;
129: }
130:
131:
139:
void AG903_BMUPrmGetSINKSTAT(uint8_t unit, uint32_t* stat)
140: {
141:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
142:
ASSERT(stat != NULL);
143:
144: *stat =
AG903_BMUn(unit)->SINKSTAT;
145: }
146:
147:
155:
void AG903_BMUPrmSetBASEADR(uint8_t unit, uint32_t adr)
156: {
157:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
158:
159:
AG903_BMUn(unit)->BASEADR = (adr &
AG903_BMUn_BASEADR_ADR_MSK);
160: }
161:
162:
170:
void AG903_BMUPrmGetBASEADR(uint8_t unit, uint32_t *adr)
171: {
172:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
173:
ASSERT(adr != NULL);
174:
175: *adr =
AG903_BMUn(unit)->BASEADR;
176: }
177:
178:
186:
void AG903_BMUPrmSetSTRIDE(uint8_t unit, uint32_t stride)
187: {
188:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
189:
190:
AG903_BMUn(unit)->STRIDE = (stride &
AG903_BMUn_STRIDE_STRIDE_MSK);
191: }
192:
193:
201:
void AG903_BMUPrmGetSTRIDE(uint8_t unit, uint32_t *stride)
202: {
203:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
204:
ASSERT(stride != NULL);
205:
206: *stride =
AG903_BMUn(unit)->STRIDE;
207: }
208:
209:
217:
void AG903_BMUPrmSetBUFNUM(uint8_t unit, uint32_t num)
218: {
219:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
220:
ASSERT(num <= 8);
221:
222:
AG903_BMUn(unit)->BUFNUM = (num <<
AG903_BMUn_BUFNUM_NUM_POS) &
AG903_BMUn_BUFNUM_NUM_MSK;
223: }
224:
225:
233:
void AG903_BMUPrmGetBUFNUM(uint8_t unit, uint32_t *num)
234: {
235:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
236:
ASSERT(num != NULL);
237:
238: *num = (
AG903_BMUn(unit)->BUFNUM &
AG903_BMUn_BUFNUM_NUM_MSK) >>
AG903_BMUn_BUFNUM_NUM_POS;
239: }
240:
241:
261:
void AG903_BMUPrmGetSTAT(uint8_t unit,
BMUPrmParamSTAT *stat)
262: {
263:
ASSERT(unit <
AG903_BMU_UNIT_NUM);
264:
ASSERT(stat != NULL);
265:
266: uint32_t reg =
AG903_BMUn(unit)->STAT;
267: stat->val = (reg &
AG903_BMUn_STAT_VAL_MSK ) >>
AG903_BMUn_STAT_VAL_POS;
268: stat->empty = (reg &
AG903_BMUn_STAT_EMPTY_MSK) >>
AG903_BMUn_STAT_EMPTY_POS;
269: stat->rwa = (reg &
AG903_BMUn_STAT_RWA_MSK ) >>
AG903_BMUn_STAT_RWA_POS;
270: stat->rbsy = (reg &
AG903_BMUn_STAT_RBSY_MSK ) >>
AG903_BMUn_STAT_RBSY_POS;
271: stat->rnum = (reg &
AG903_BMUn_STAT_RNUM_MSK ) >>
AG903_BMUn_STAT_RNUM_POS;
272: stat->full = (reg &
AG903_BMUn_STAT_FULL_MSK ) >>
AG903_BMUn_STAT_FULL_POS;
273: stat->wwa = (reg &
AG903_BMUn_STAT_WWA_MSK ) >>
AG903_BMUn_STAT_WWA_POS;
274: stat->wbsy = (reg &
AG903_BMUn_STAT_WBSY_MSK ) >>
AG903_BMUn_STAT_WBSY_POS;
275: stat->wnum = (reg &
AG903_BMUn_STAT_WNUM_MSK ) >>
AG903_BMUn_STAT_WNUM_POS;
276: }