Lines Matching refs:bd

820 static void pl08x_choose_master_bus(struct pl08x_lli_build_data *bd,  in pl08x_choose_master_bus()  argument
824 *mbus = &bd->dstbus; in pl08x_choose_master_bus()
825 *sbus = &bd->srcbus; in pl08x_choose_master_bus()
827 *mbus = &bd->srcbus; in pl08x_choose_master_bus()
828 *sbus = &bd->dstbus; in pl08x_choose_master_bus()
830 if (bd->dstbus.buswidth >= bd->srcbus.buswidth) { in pl08x_choose_master_bus()
831 *mbus = &bd->dstbus; in pl08x_choose_master_bus()
832 *sbus = &bd->srcbus; in pl08x_choose_master_bus()
834 *mbus = &bd->srcbus; in pl08x_choose_master_bus()
835 *sbus = &bd->dstbus; in pl08x_choose_master_bus()
844 struct pl08x_lli_build_data *bd, in pl08x_fill_lli_for_desc() argument
848 u32 *llis_va = bd->txd->llis_va + offset; in pl08x_fill_lli_for_desc()
849 dma_addr_t llis_bus = bd->txd->llis_bus; in pl08x_fill_lli_for_desc()
856 llis_va[PL080_LLI_SRC] = bd->srcbus.addr; in pl08x_fill_lli_for_desc()
857 llis_va[PL080_LLI_DST] = bd->dstbus.addr; in pl08x_fill_lli_for_desc()
859 llis_va[PL080_LLI_LLI] |= bd->lli_bus; in pl08x_fill_lli_for_desc()
865 bd->srcbus.addr += len; in pl08x_fill_lli_for_desc()
867 bd->dstbus.addr += len; in pl08x_fill_lli_for_desc()
869 BUG_ON(bd->remainder < len); in pl08x_fill_lli_for_desc()
871 bd->remainder -= len; in pl08x_fill_lli_for_desc()
875 struct pl08x_lli_build_data *bd, u32 *cctl, u32 len, in prep_byte_width_lli() argument
879 pl08x_fill_lli_for_desc(pl08x, bd, num_llis, len, *cctl, len); in prep_byte_width_lli()
930 struct pl08x_lli_build_data bd; in pl08x_fill_llis_for_desc() local
943 bd.txd = txd; in pl08x_fill_llis_for_desc()
944 bd.lli_bus = (pl08x->lli_buses & PL08X_AHB2) ? PL080_LLI_LM_AHB2 : 0; in pl08x_fill_llis_for_desc()
948 bd.srcbus.maxwidth = in pl08x_fill_llis_for_desc()
953 bd.dstbus.maxwidth = in pl08x_fill_llis_for_desc()
961 bd.srcbus.addr = dsg->src_addr; in pl08x_fill_llis_for_desc()
962 bd.dstbus.addr = dsg->dst_addr; in pl08x_fill_llis_for_desc()
963 bd.remainder = dsg->len; in pl08x_fill_llis_for_desc()
964 bd.srcbus.buswidth = bd.srcbus.maxwidth; in pl08x_fill_llis_for_desc()
965 bd.dstbus.buswidth = bd.dstbus.maxwidth; in pl08x_fill_llis_for_desc()
967 pl08x_choose_master_bus(&bd, &mbus, &sbus, cctl); in pl08x_fill_llis_for_desc()
971 (u64)bd.srcbus.addr, in pl08x_fill_llis_for_desc()
973 bd.srcbus.buswidth, in pl08x_fill_llis_for_desc()
974 (u64)bd.dstbus.addr, in pl08x_fill_llis_for_desc()
976 bd.dstbus.buswidth, in pl08x_fill_llis_for_desc()
977 bd.remainder); in pl08x_fill_llis_for_desc()
979 mbus == &bd.srcbus ? "src" : "dst", in pl08x_fill_llis_for_desc()
980 sbus == &bd.srcbus ? "src" : "dst"); in pl08x_fill_llis_for_desc()
1003 if (!bd.remainder) { in pl08x_fill_llis_for_desc()
1013 if (!IS_BUS_ALIGNED(&bd.srcbus) || in pl08x_fill_llis_for_desc()
1014 !IS_BUS_ALIGNED(&bd.dstbus)) { in pl08x_fill_llis_for_desc()
1022 cctl = pl08x_cctl_bits(cctl, bd.srcbus.buswidth, in pl08x_fill_llis_for_desc()
1023 bd.dstbus.buswidth, 0); in pl08x_fill_llis_for_desc()
1024 pl08x_fill_lli_for_desc(pl08x, &bd, num_llis++, in pl08x_fill_llis_for_desc()
1034 if (bd.remainder < mbus->buswidth) in pl08x_fill_llis_for_desc()
1035 early_bytes = bd.remainder; in pl08x_fill_llis_for_desc()
1039 if ((bd.remainder - early_bytes) < mbus->buswidth) in pl08x_fill_llis_for_desc()
1040 early_bytes = bd.remainder; in pl08x_fill_llis_for_desc()
1046 __func__, bd.remainder); in pl08x_fill_llis_for_desc()
1047 prep_byte_width_lli(pl08x, &bd, &cctl, early_bytes, in pl08x_fill_llis_for_desc()
1051 if (bd.remainder) { in pl08x_fill_llis_for_desc()
1068 max_bytes_per_lli = bd.srcbus.buswidth * in pl08x_fill_llis_for_desc()
1078 while (bd.remainder > (mbus->buswidth - 1)) { in pl08x_fill_llis_for_desc()
1085 lli_len = min(bd.remainder, max_bytes_per_lli); in pl08x_fill_llis_for_desc()
1095 tsize = lli_len / bd.srcbus.buswidth; in pl08x_fill_llis_for_desc()
1100 __func__, lli_len, bd.remainder); in pl08x_fill_llis_for_desc()
1102 cctl = pl08x_cctl_bits(cctl, bd.srcbus.buswidth, in pl08x_fill_llis_for_desc()
1103 bd.dstbus.buswidth, tsize); in pl08x_fill_llis_for_desc()
1104 pl08x_fill_lli_for_desc(pl08x, &bd, num_llis++, in pl08x_fill_llis_for_desc()
1112 if (bd.remainder) { in pl08x_fill_llis_for_desc()
1115 __func__, bd.remainder); in pl08x_fill_llis_for_desc()
1116 prep_byte_width_lli(pl08x, &bd, &cctl, in pl08x_fill_llis_for_desc()
1117 bd.remainder, num_llis++, &total_bytes); in pl08x_fill_llis_for_desc()
1141 last_lli[PL080_LLI_LLI] = txd->llis_bus | bd.lli_bus; in pl08x_fill_llis_for_desc()