Lines Matching refs:bd

822 static void pl08x_choose_master_bus(struct pl08x_lli_build_data *bd,  in pl08x_choose_master_bus()  argument
826 *mbus = &bd->dstbus; in pl08x_choose_master_bus()
827 *sbus = &bd->srcbus; in pl08x_choose_master_bus()
829 *mbus = &bd->srcbus; in pl08x_choose_master_bus()
830 *sbus = &bd->dstbus; in pl08x_choose_master_bus()
832 if (bd->dstbus.buswidth >= bd->srcbus.buswidth) { in pl08x_choose_master_bus()
833 *mbus = &bd->dstbus; in pl08x_choose_master_bus()
834 *sbus = &bd->srcbus; in pl08x_choose_master_bus()
836 *mbus = &bd->srcbus; in pl08x_choose_master_bus()
837 *sbus = &bd->dstbus; in pl08x_choose_master_bus()
846 struct pl08x_lli_build_data *bd, in pl08x_fill_lli_for_desc() argument
850 u32 *llis_va = bd->txd->llis_va + offset; in pl08x_fill_lli_for_desc()
851 dma_addr_t llis_bus = bd->txd->llis_bus; in pl08x_fill_lli_for_desc()
858 llis_va[PL080_LLI_SRC] = bd->srcbus.addr; in pl08x_fill_lli_for_desc()
859 llis_va[PL080_LLI_DST] = bd->dstbus.addr; in pl08x_fill_lli_for_desc()
861 llis_va[PL080_LLI_LLI] |= bd->lli_bus; in pl08x_fill_lli_for_desc()
867 bd->srcbus.addr += len; in pl08x_fill_lli_for_desc()
869 bd->dstbus.addr += len; in pl08x_fill_lli_for_desc()
871 BUG_ON(bd->remainder < len); in pl08x_fill_lli_for_desc()
873 bd->remainder -= len; in pl08x_fill_lli_for_desc()
877 struct pl08x_lli_build_data *bd, u32 *cctl, u32 len, in prep_byte_width_lli() argument
881 pl08x_fill_lli_for_desc(pl08x, bd, num_llis, len, *cctl, len); in prep_byte_width_lli()
932 struct pl08x_lli_build_data bd; in pl08x_fill_llis_for_desc() local
945 bd.txd = txd; in pl08x_fill_llis_for_desc()
946 bd.lli_bus = (pl08x->lli_buses & PL08X_AHB2) ? PL080_LLI_LM_AHB2 : 0; in pl08x_fill_llis_for_desc()
950 bd.srcbus.maxwidth = in pl08x_fill_llis_for_desc()
955 bd.dstbus.maxwidth = in pl08x_fill_llis_for_desc()
963 bd.srcbus.addr = dsg->src_addr; in pl08x_fill_llis_for_desc()
964 bd.dstbus.addr = dsg->dst_addr; in pl08x_fill_llis_for_desc()
965 bd.remainder = dsg->len; in pl08x_fill_llis_for_desc()
966 bd.srcbus.buswidth = bd.srcbus.maxwidth; in pl08x_fill_llis_for_desc()
967 bd.dstbus.buswidth = bd.dstbus.maxwidth; in pl08x_fill_llis_for_desc()
969 pl08x_choose_master_bus(&bd, &mbus, &sbus, cctl); in pl08x_fill_llis_for_desc()
973 (u64)bd.srcbus.addr, in pl08x_fill_llis_for_desc()
975 bd.srcbus.buswidth, in pl08x_fill_llis_for_desc()
976 (u64)bd.dstbus.addr, in pl08x_fill_llis_for_desc()
978 bd.dstbus.buswidth, in pl08x_fill_llis_for_desc()
979 bd.remainder); in pl08x_fill_llis_for_desc()
981 mbus == &bd.srcbus ? "src" : "dst", in pl08x_fill_llis_for_desc()
982 sbus == &bd.srcbus ? "src" : "dst"); in pl08x_fill_llis_for_desc()
1005 if (!bd.remainder) { in pl08x_fill_llis_for_desc()
1015 if (!IS_BUS_ALIGNED(&bd.srcbus) || in pl08x_fill_llis_for_desc()
1016 !IS_BUS_ALIGNED(&bd.dstbus)) { in pl08x_fill_llis_for_desc()
1024 cctl = pl08x_cctl_bits(cctl, bd.srcbus.buswidth, in pl08x_fill_llis_for_desc()
1025 bd.dstbus.buswidth, 0); in pl08x_fill_llis_for_desc()
1026 pl08x_fill_lli_for_desc(pl08x, &bd, num_llis++, in pl08x_fill_llis_for_desc()
1036 if (bd.remainder < mbus->buswidth) in pl08x_fill_llis_for_desc()
1037 early_bytes = bd.remainder; in pl08x_fill_llis_for_desc()
1041 if ((bd.remainder - early_bytes) < mbus->buswidth) in pl08x_fill_llis_for_desc()
1042 early_bytes = bd.remainder; in pl08x_fill_llis_for_desc()
1048 __func__, bd.remainder); in pl08x_fill_llis_for_desc()
1049 prep_byte_width_lli(pl08x, &bd, &cctl, early_bytes, in pl08x_fill_llis_for_desc()
1053 if (bd.remainder) { in pl08x_fill_llis_for_desc()
1070 max_bytes_per_lli = bd.srcbus.buswidth * in pl08x_fill_llis_for_desc()
1080 while (bd.remainder > (mbus->buswidth - 1)) { in pl08x_fill_llis_for_desc()
1087 lli_len = min(bd.remainder, max_bytes_per_lli); in pl08x_fill_llis_for_desc()
1097 tsize = lli_len / bd.srcbus.buswidth; in pl08x_fill_llis_for_desc()
1102 __func__, lli_len, bd.remainder); in pl08x_fill_llis_for_desc()
1104 cctl = pl08x_cctl_bits(cctl, bd.srcbus.buswidth, in pl08x_fill_llis_for_desc()
1105 bd.dstbus.buswidth, tsize); in pl08x_fill_llis_for_desc()
1106 pl08x_fill_lli_for_desc(pl08x, &bd, num_llis++, in pl08x_fill_llis_for_desc()
1114 if (bd.remainder) { in pl08x_fill_llis_for_desc()
1117 __func__, bd.remainder); in pl08x_fill_llis_for_desc()
1118 prep_byte_width_lli(pl08x, &bd, &cctl, in pl08x_fill_llis_for_desc()
1119 bd.remainder, num_llis++, &total_bytes); in pl08x_fill_llis_for_desc()
1143 last_lli[PL080_LLI_LLI] = txd->llis_bus | bd.lli_bus; in pl08x_fill_llis_for_desc()