Lines Matching defs:buf
580 static inline u32 _emit_END(unsigned dry_run, u8 buf[])
585 buf[0] = CMD_DMAEND;
592 static inline u32 _emit_FLUSHP(unsigned dry_run, u8 buf[], u8 peri)
597 buf[0] = CMD_DMAFLUSHP;
601 buf[1] = peri;
608 static inline u32 _emit_LD(unsigned dry_run, u8 buf[], enum pl330_cond cond)
613 buf[0] = CMD_DMALD;
616 buf[0] |= (0 << 1) | (1 << 0);
618 buf[0] |= (1 << 1) | (1 << 0);
626 static inline u32 _emit_LDP(unsigned dry_run, u8 buf[],
632 buf[0] = CMD_DMALDP;
635 buf[0] |= (1 << 1);
639 buf[1] = peri;
647 static inline u32 _emit_LP(unsigned dry_run, u8 buf[],
653 buf[0] = CMD_DMALP;
656 buf[0] |= (1 << 1);
659 buf[1] = cnt;
673 static inline u32 _emit_LPEND(unsigned dry_run, u8 buf[],
684 buf[0] = CMD_DMALPEND;
687 buf[0] |= (1 << 2);
690 buf[0] |= (1 << 4);
693 buf[0] |= (0 << 1) | (1 << 0);
695 buf[0] |= (1 << 1) | (1 << 0);
697 buf[1] = bjump;
708 static inline u32 _emit_KILL(unsigned dry_run, u8 buf[])
713 buf[0] = CMD_DMAKILL;
718 static inline u32 _emit_MOV(unsigned dry_run, u8 buf[],
724 buf[0] = CMD_DMAMOV;
725 buf[1] = dst;
726 buf[2] = val;
727 buf[3] = val >> 8;
728 buf[4] = val >> 16;
729 buf[5] = val >> 24;
737 static inline u32 _emit_RMB(unsigned dry_run, u8 buf[])
742 buf[0] = CMD_DMARMB;
749 static inline u32 _emit_SEV(unsigned dry_run, u8 buf[], u8 ev)
754 buf[0] = CMD_DMASEV;
758 buf[1] = ev;
765 static inline u32 _emit_ST(unsigned dry_run, u8 buf[], enum pl330_cond cond)
770 buf[0] = CMD_DMAST;
773 buf[0] |= (0 << 1) | (1 << 0);
775 buf[0] |= (1 << 1) | (1 << 0);
783 static inline u32 _emit_STP(unsigned dry_run, u8 buf[],
789 buf[0] = CMD_DMASTP;
792 buf[0] |= (1 << 1);
796 buf[1] = peri;
804 static inline u32 _emit_WFP(unsigned dry_run, u8 buf[],
810 buf[0] = CMD_DMAWFP;
813 buf[0] |= (0 << 1) | (0 << 0);
815 buf[0] |= (1 << 1) | (0 << 0);
817 buf[0] |= (0 << 1) | (1 << 0);
821 buf[1] = peri;
829 static inline u32 _emit_WMB(unsigned dry_run, u8 buf[])
834 buf[0] = CMD_DMAWMB;
847 static inline u32 _emit_GO(unsigned dry_run, u8 buf[],
857 buf[0] = CMD_DMAGO;
858 buf[0] |= (ns << 1);
859 buf[1] = chan & 0x7;
860 buf[2] = addr;
861 buf[3] = addr >> 8;
862 buf[4] = addr >> 16;
863 buf[5] = addr >> 24;
1095 static inline int _ldst_memtomem(unsigned dry_run, u8 buf[],
1104 off += _emit_LD(dry_run, &buf[off], ALWAYS);
1105 off += _emit_ST(dry_run, &buf[off], ALWAYS);
1109 off += _emit_LD(dry_run, &buf[off], ALWAYS);
1110 off += _emit_RMB(dry_run, &buf[off]);
1111 off += _emit_ST(dry_run, &buf[off], ALWAYS);
1112 off += _emit_WMB(dry_run, &buf[off]);
1119 static u32 _emit_load(unsigned int dry_run, u8 buf[],
1128 off += _emit_LD(dry_run, &buf[off], cond);
1133 off += _emit_LDP(dry_run, &buf[off], SINGLE,
1135 off += _emit_LDP(dry_run, &buf[off], BURST,
1138 off += _emit_LDP(dry_run, &buf[off], cond,
1152 static inline u32 _emit_store(unsigned int dry_run, u8 buf[],
1161 off += _emit_ST(dry_run, &buf[off], cond);
1166 off += _emit_STP(dry_run, &buf[off], SINGLE,
1168 off += _emit_STP(dry_run, &buf[off], BURST,
1171 off += _emit_STP(dry_run, &buf[off], cond,
1186 unsigned dry_run, u8 buf[],
1197 off += _emit_FLUSHP(dry_run, &buf[off], pxs->desc->peri);
1199 off += _emit_WFP(dry_run, &buf[off], cond, pxs->desc->peri);
1200 off += _emit_load(dry_run, &buf[off], cond, pxs->desc->rqtype,
1202 off += _emit_store(dry_run, &buf[off], cond, pxs->desc->rqtype,
1209 static int _bursts(struct pl330_dmac *pl330, unsigned dry_run, u8 buf[],
1221 off += _ldst_peripheral(pl330, dry_run, &buf[off], pxs, cyc,
1226 off += _ldst_memtomem(dry_run, &buf[off], pxs, cyc);
1243 static int _dregs(struct pl330_dmac *pl330, unsigned int dry_run, u8 buf[],
1270 off += _emit_MOV(dry_run, &buf[off], CCR, dregs_ccr);
1271 off += _ldst_peripheral(pl330, dry_run, &buf[off], pxs, 1,
1276 off += _emit_MOV(dry_run, &buf[off], CCR, dregs_ccr);
1277 off += _ldst_memtomem(dry_run, &buf[off], pxs, 1);
1290 static inline int _loop(struct pl330_dmac *pl330, unsigned dry_run, u8 buf[],
1298 return _bursts(pl330, dry_run, buf, pxs, 1);
1315 szlp = _emit_LP(1, buf, 0, 0);
1316 szbrst = _bursts(pl330, 1, buf, pxs, 1);
1322 szlpend = _emit_LPEND(1, buf, &lpend);
1341 off += _emit_LP(dry_run, &buf[off], 0, lcnt0);
1345 off += _emit_LP(dry_run, &buf[off], 1, lcnt1);
1348 off += _bursts(pl330, dry_run, &buf[off], pxs, cyc);
1354 off += _emit_LPEND(dry_run, &buf[off], &lpend);
1361 off += _emit_LPEND(dry_run, &buf[off], &lpend);
1372 unsigned dry_run, u8 buf[],
1384 off += _loop(pl330, dry_run, &buf[off], &c, pxs);
1387 off += _dregs(pl330, dry_run, &buf[off], pxs, num_dregs);
1393 unsigned dry_run, u8 buf[],
1400 off += _emit_MOV(dry_run, &buf[off], SAR, x->src_addr);
1402 off += _emit_MOV(dry_run, &buf[off], DAR, x->dst_addr);
1405 off += _setup_loops(pl330, dry_run, &buf[off], pxs);
1419 u8 *buf = req->mc_cpu;
1425 off += _emit_MOV(dry_run, &buf[off], CCR, pxs->ccr);
1427 off += _setup_xfer(pl330, dry_run, &buf[off], pxs);
1430 off += _emit_SEV(dry_run, &buf[off], thrd->ev);
1432 off += _emit_END(dry_run, &buf[off]);