1: int32_t AG903_DMACMgrSetSimpleTrnsDesc(
AG903_DMACMgrHandle *handle,
void *from,
2: uint32_t from_size,
void *to)
3: {
4: uint32_t unit = ((
AG903_DMACMgrHandleStat*)handle - handle_list);
5:
AG903_DMACMgrDesc dmac_desc;
6:
DMACPrmParamCFG cfg = {0};
7: uint8_t enable;
8:
9:
if(unit >=
AG903_DMAC_UNIT_NUM || &handle_list[unit] != (
AG903_DMACMgrHandleStat*)handle ||
10: NULL == from || NULL == to || 0 == from_size ||
AG903_DMAC_1DTRANS_MAX < from_size)
11: {
12:
return -
AG903_EINVAL;
13: }
14:
15:
16: enable = DMACMgr_CheckEnable(unit);
17:
if(
true == enable) {
18:
return -
AG903_EBUSY;
19: }
20:
21: cfg.ChPri = 1;
22:
AG903_DMACPrmSetCFG_REG(unit, &cfg);
23:
24: dmac_desc.SrcAddr = (uint32_t)from;
25: dmac_desc.DstAddr = (uint32_t)to;
26: dmac_desc.next = 0;
27: dmac_desc.Ctrl.val = 0;
28: dmac_desc.Trns.val = 0;
29: dmac_desc.Trns.d1.TCnt = from_size;
30: dmac_desc.Stride.val = 0;
31:
32:
33: write_desc(&dmac_desc, NULL, get_desc_reg_addr(unit), 1);
34:
35:
return AG903_ENONE;
36: }