Lines Matching refs:itr
49 void vcap_iter_set(struct vcap_stream_iter *itr, int sw_width, in vcap_iter_set() argument
52 memset(itr, 0, sizeof(*itr)); in vcap_iter_set()
53 itr->offset = offset; in vcap_iter_set()
54 itr->sw_width = sw_width; in vcap_iter_set()
55 itr->regs_per_sw = DIV_ROUND_UP(sw_width, 32); in vcap_iter_set()
56 itr->tg = tg; in vcap_iter_set()
59 static void vcap_iter_skip_tg(struct vcap_stream_iter *itr) in vcap_iter_skip_tg() argument
64 while (itr->tg->width && itr->offset >= itr->tg->offset) { in vcap_iter_skip_tg()
65 itr->offset += itr->tg->width; in vcap_iter_skip_tg()
66 itr->tg++; /* next typegroup */ in vcap_iter_skip_tg()
70 void vcap_iter_update(struct vcap_stream_iter *itr) in vcap_iter_update() argument
75 sw_idx = itr->offset / itr->sw_width; in vcap_iter_update()
76 sw_bitpos = itr->offset % itr->sw_width; in vcap_iter_update()
78 itr->reg_idx = (sw_idx * itr->regs_per_sw) + (sw_bitpos / 32); in vcap_iter_update()
79 itr->reg_bitpos = sw_bitpos % 32; in vcap_iter_update()
82 void vcap_iter_init(struct vcap_stream_iter *itr, int sw_width, in vcap_iter_init() argument
85 vcap_iter_set(itr, sw_width, tg, offset); in vcap_iter_init()
86 vcap_iter_skip_tg(itr); in vcap_iter_init()
87 vcap_iter_update(itr); in vcap_iter_init()
90 void vcap_iter_next(struct vcap_stream_iter *itr) in vcap_iter_next() argument
92 itr->offset++; in vcap_iter_next()
93 vcap_iter_skip_tg(itr); in vcap_iter_next()
94 vcap_iter_update(itr); in vcap_iter_next()
97 static void vcap_set_bit(u32 *stream, struct vcap_stream_iter *itr, bool value) in vcap_set_bit() argument
99 u32 mask = BIT(itr->reg_bitpos); in vcap_set_bit()
100 u32 *p = &stream[itr->reg_idx]; in vcap_set_bit()
108 static void vcap_encode_bit(u32 *stream, struct vcap_stream_iter *itr, bool val) in vcap_encode_bit() argument
113 while (itr->tg->width && in vcap_encode_bit()
114 itr->offset >= itr->tg->offset && in vcap_encode_bit()
115 itr->offset < itr->tg->offset + itr->tg->width) { in vcap_encode_bit()
116 int tg_bitpos = itr->tg->offset - itr->offset; in vcap_encode_bit()
118 vcap_set_bit(stream, itr, (itr->tg->value >> tg_bitpos) & 0x1); in vcap_encode_bit()
119 itr->offset++; in vcap_encode_bit()
120 vcap_iter_update(itr); in vcap_encode_bit()
122 vcap_set_bit(stream, itr, val); in vcap_encode_bit()
125 static void vcap_encode_field(u32 *stream, struct vcap_stream_iter *itr, in vcap_encode_field() argument
137 vcap_encode_bit(stream, itr, (value[idx / 8] >> bidx) & 0x1); in vcap_encode_field()
138 vcap_iter_next(itr); in vcap_encode_field()
189 static bool vcap_get_bit(u32 *stream, struct vcap_stream_iter *itr) in vcap_get_bit() argument
191 u32 mask = BIT(itr->reg_bitpos); in vcap_get_bit()
192 u32 *p = &stream[itr->reg_idx]; in vcap_get_bit()
197 static void vcap_decode_field(u32 *stream, struct vcap_stream_iter *itr, in vcap_decode_field() argument
209 if (vcap_get_bit(stream, itr)) in vcap_decode_field()
211 vcap_iter_next(itr); in vcap_decode_field()