hgt
struct vsp1_hgt *hgt;
if (vsp1->hgt) {
ret = media_create_pad_link(&vsp1->hgt->histo.entity.subdev.entity,
&vsp1->hgt->histo.video.entity, 0,
vsp1->hgt = vsp1_hgt_create(vsp1);
if (IS_ERR(vsp1->hgt)) {
ret = PTR_ERR(vsp1->hgt);
list_add_tail(&vsp1->hgt->histo.entity.list_dev,
struct vsp1_hgt *hgt = container_of(ctrl->handler, struct vsp1_hgt,
memcpy(hgt->hue_areas, ctrl->p_new.p_u8, sizeof(hgt->hue_areas));
struct vsp1_hgt *hgt = to_hgt(&entity->subdev);
vsp1_hgt_write(hgt, dlb, VI6_HGT_REGRST, VI6_HGT_REGRST_RCLEA);
vsp1_hgt_write(hgt, dlb, VI6_HGT_OFFSET,
vsp1_hgt_write(hgt, dlb, VI6_HGT_SIZE,
mutex_lock(hgt->ctrls.lock);
lower = hgt->hue_areas[i*2 + 0];
upper = hgt->hue_areas[i*2 + 1];
vsp1_hgt_write(hgt, dlb, VI6_HGT_HUE_AREA(i),
mutex_unlock(hgt->ctrls.lock);
vsp1_hgt_write(hgt, dlb, VI6_HGT_MODE,
struct vsp1_hgt *hgt;
hgt = devm_kzalloc(vsp1->dev, sizeof(*hgt), GFP_KERNEL);
if (hgt == NULL)
ret = vsp1_histogram_init(vsp1, &hgt->histo, VSP1_ENTITY_HGT, "hgt",
vsp1_entity_destroy(&hgt->histo.entity);
v4l2_ctrl_handler_init(&hgt->ctrls, 1);
v4l2_ctrl_new_custom(&hgt->ctrls, &hgt_hue_areas, NULL);
hgt->histo.entity.subdev.ctrl_handler = &hgt->ctrls;
v4l2_ctrl_handler_setup(&hgt->ctrls);
return hgt;
static inline u32 vsp1_hgt_read(struct vsp1_hgt *hgt, u32 reg)
return vsp1_read(hgt->histo.entity.vsp1, reg);
static inline void vsp1_hgt_write(struct vsp1_hgt *hgt,
struct vsp1_hgt *hgt = to_hgt(&entity->subdev);
buf = vsp1_histogram_buffer_get(&hgt->histo);
*data++ = vsp1_hgt_read(hgt, VI6_HGT_MAXMIN);
*data++ = vsp1_hgt_read(hgt, VI6_HGT_SUM);
*data++ = vsp1_hgt_read(hgt, VI6_HGT_HISTO(m, n));
vsp1_histogram_buffer_complete(&hgt->histo, buf, HGT_DATA_SIZE);
void vsp1_hgt_frame_end(struct vsp1_entity *hgt);
pipe->hgt = NULL;
if (pipe->hgt)
if (pipe->hgt)
vsp1_hgt_frame_end(pipe->hgt);
struct vsp1_entity *hgt;
pipe->hgt = e;
unsigned int hgt;
for (hgt = 0; hgt < mp->mp_aheight; hgt++)
get_bh(clone->mp_bh[hgt]);
int hgt;
for (hgt = mp->mp_fheight - 1; hgt >= 0; hgt--) {
if (hgt < mp->mp_aheight)
block += mp->mp_list[hgt] * factor;
for (hgt = mp->mp_fheight - 1; hgt >= mp->mp_aheight; hgt--) {
max_len += mp->mp_list[hgt] * factor;
mp->mp_list[hgt] = 0;
u16 start = mp->mp_list[hgt];
ptrs = (hgt >= 1 ? sdp->sd_inptrs : sdp->sd_diptrs) - start;
ptrs = mp->mp_list[hgt] - start;
brelse(mp->mp_bh[hgt]);
mp->mp_bh[hgt] = NULL;
mp->mp_list[hgt] = 0;
if (!hgt)
hgt--;
(mp->mp_list[hgt])++;
if (hgt) {
if (mp->mp_list[hgt] >= sdp->sd_inptrs)
if (mp->mp_list[hgt] >= sdp->sd_diptrs)
hgt += ret;
mp->mp_aheight = hgt + 1;
unsigned int hgt;
hgt = mp->mp_aheight - 1;
start = metapointer(hgt, mp);
mp->mp_list[hgt] += ptr - start;