Exemple #1
0
static int clu_set_table(struct vsp1_clu *clu, struct v4l2_ctrl *ctrl)
{
	struct vsp1_dl_body *dlb;
	unsigned int i;

	dlb = vsp1_dl_fragment_alloc(clu->entity.vsp1, 1 + 17 * 17 * 17);
	if (!dlb)
		return -ENOMEM;

	vsp1_dl_fragment_write(dlb, VI6_CLU_ADDR, 0);
	for (i = 0; i < 17 * 17 * 17; ++i)
		vsp1_dl_fragment_write(dlb, VI6_CLU_DATA, ctrl->p_new.p_u32[i]);

	spin_lock_irq(&clu->lock);
	swap(clu->clu, dlb);
	spin_unlock_irq(&clu->lock);

	vsp1_dl_fragment_free(dlb);
	return 0;
}
Exemple #2
0
static int lut_set_table(struct vsp1_lut *lut, struct v4l2_ctrl *ctrl)
{
	struct vsp1_dl_body *dlb;
	unsigned int i;

	dlb = vsp1_dl_fragment_alloc(lut->entity.vsp1, 256);
	if (!dlb)
		return -ENOMEM;

	for (i = 0; i < 256; ++i)
		vsp1_dl_fragment_write(dlb, VI6_LUT_TABLE + 4 * i,
				       ctrl->p_new.p_u32[i]);

	spin_lock_irq(&lut->lock);
	swap(lut->lut, dlb);
	spin_unlock_irq(&lut->lock);

	vsp1_dl_fragment_free(dlb);
	return 0;
}
Exemple #3
0
static int lut_set_table(struct vsp1_lut *lut, struct vsp1_lut_config *config)
{
	struct vsp1_dl_body *dlb;
	unsigned int i;

	dlb = vsp1_dl_fragment_alloc(lut->entity.vsp1, ARRAY_SIZE(config->lut));
	if (!dlb)
		return -ENOMEM;

	for (i = 0; i < ARRAY_SIZE(config->lut); ++i)
		vsp1_dl_fragment_write(dlb, VI6_LUT_TABLE + 4 * i,
				       config->lut[i]);

	mutex_lock(&lut->lock);
	swap(lut->lut, dlb);
	mutex_unlock(&lut->lock);

	vsp1_dl_fragment_free(dlb);
	return 0;
}