• Home
  • Raw
  • Download

Lines Matching full:ic

23 /* IC Register Offsets */
35 /* IC Register Fields */
168 static inline u32 ipu_ic_read(struct ipu_ic *ic, unsigned offset) in ipu_ic_read() argument
170 return readl(ic->priv->base + offset); in ipu_ic_read()
173 static inline void ipu_ic_write(struct ipu_ic *ic, u32 value, unsigned offset) in ipu_ic_write() argument
175 writel(value, ic->priv->base + offset); in ipu_ic_write()
225 static int init_csc(struct ipu_ic *ic, in init_csc() argument
230 struct ipu_ic_priv *priv = ic->priv; in init_csc()
238 (priv->tpmem_base + ic->reg->tpmem_csc[csc_index]); in init_csc()
280 static int calc_resize_coeffs(struct ipu_ic *ic, in calc_resize_coeffs() argument
285 struct ipu_ic_priv *priv = ic->priv; in calc_resize_coeffs()
332 void ipu_ic_task_enable(struct ipu_ic *ic) in ipu_ic_task_enable() argument
334 struct ipu_ic_priv *priv = ic->priv; in ipu_ic_task_enable()
340 ic_conf = ipu_ic_read(ic, IC_CONF); in ipu_ic_task_enable()
342 ic_conf |= ic->bit->ic_conf_en; in ipu_ic_task_enable()
344 if (ic->rotation) in ipu_ic_task_enable()
345 ic_conf |= ic->bit->ic_conf_rot_en; in ipu_ic_task_enable()
347 if (ic->in_cs != ic->out_cs) in ipu_ic_task_enable()
348 ic_conf |= ic->bit->ic_conf_csc1_en; in ipu_ic_task_enable()
350 if (ic->graphics) { in ipu_ic_task_enable()
351 ic_conf |= ic->bit->ic_conf_cmb_en; in ipu_ic_task_enable()
352 ic_conf |= ic->bit->ic_conf_csc1_en; in ipu_ic_task_enable()
354 if (ic->g_in_cs != ic->out_cs) in ipu_ic_task_enable()
355 ic_conf |= ic->bit->ic_conf_csc2_en; in ipu_ic_task_enable()
358 ipu_ic_write(ic, ic_conf, IC_CONF); in ipu_ic_task_enable()
364 void ipu_ic_task_disable(struct ipu_ic *ic) in ipu_ic_task_disable() argument
366 struct ipu_ic_priv *priv = ic->priv; in ipu_ic_task_disable()
372 ic_conf = ipu_ic_read(ic, IC_CONF); in ipu_ic_task_disable()
374 ic_conf &= ~(ic->bit->ic_conf_en | in ipu_ic_task_disable()
375 ic->bit->ic_conf_csc1_en | in ipu_ic_task_disable()
376 ic->bit->ic_conf_rot_en); in ipu_ic_task_disable()
377 if (ic->bit->ic_conf_csc2_en) in ipu_ic_task_disable()
378 ic_conf &= ~ic->bit->ic_conf_csc2_en; in ipu_ic_task_disable()
379 if (ic->bit->ic_conf_cmb_en) in ipu_ic_task_disable()
380 ic_conf &= ~ic->bit->ic_conf_cmb_en; in ipu_ic_task_disable()
382 ipu_ic_write(ic, ic_conf, IC_CONF); in ipu_ic_task_disable()
388 int ipu_ic_task_graphics_init(struct ipu_ic *ic, in ipu_ic_task_graphics_init() argument
393 struct ipu_ic_priv *priv = ic->priv; in ipu_ic_task_graphics_init()
398 if (ic->task == IC_TASK_ENCODER) in ipu_ic_task_graphics_init()
403 ic_conf = ipu_ic_read(ic, IC_CONF); in ipu_ic_task_graphics_init()
405 if (!(ic_conf & ic->bit->ic_conf_csc1_en)) { in ipu_ic_task_graphics_init()
407 ret = init_csc(ic, IPUV3_COLORSPACE_RGB, in ipu_ic_task_graphics_init()
413 ic->g_in_cs = in_g_cs; in ipu_ic_task_graphics_init()
415 if (ic->g_in_cs != ic->out_cs) { in ipu_ic_task_graphics_init()
416 ret = init_csc(ic, ic->g_in_cs, ic->out_cs, 1); in ipu_ic_task_graphics_init()
423 reg = ipu_ic_read(ic, IC_CMBP_1); in ipu_ic_task_graphics_init()
424 reg &= ~(0xff << ic->bit->ic_cmb_galpha_bit); in ipu_ic_task_graphics_init()
425 reg |= (galpha << ic->bit->ic_cmb_galpha_bit); in ipu_ic_task_graphics_init()
426 ipu_ic_write(ic, reg, IC_CMBP_1); in ipu_ic_task_graphics_init()
432 ipu_ic_write(ic, colorkey, IC_CMBP_2); in ipu_ic_task_graphics_init()
436 ipu_ic_write(ic, ic_conf, IC_CONF); in ipu_ic_task_graphics_init()
438 ic->graphics = true; in ipu_ic_task_graphics_init()
445 int ipu_ic_task_init(struct ipu_ic *ic, in ipu_ic_task_init() argument
451 struct ipu_ic_priv *priv = ic->priv; in ipu_ic_task_init()
457 ret = calc_resize_coeffs(ic, in_height, out_height, in ipu_ic_task_init()
465 ret = calc_resize_coeffs(ic, in_width, out_width, in ipu_ic_task_init()
474 ipu_ic_write(ic, reg, ic->reg->rsc); in ipu_ic_task_init()
477 ic->in_cs = in_cs; in ipu_ic_task_init()
478 ic->out_cs = out_cs; in ipu_ic_task_init()
480 if (ic->in_cs != ic->out_cs) { in ipu_ic_task_init()
481 ret = init_csc(ic, ic->in_cs, ic->out_cs, 0); in ipu_ic_task_init()
492 int ipu_ic_task_idma_init(struct ipu_ic *ic, struct ipuv3_channel *channel, in ipu_ic_task_idma_init() argument
496 struct ipu_ic_priv *priv = ic->priv; in ipu_ic_task_idma_init()
505 dev_err(ipu->dev, "Illegal burst length for IC\n"); in ipu_ic_task_idma_init()
517 ic_idmac_1 = ipu_ic_read(ic, IC_IDMAC_1); in ipu_ic_task_idma_init()
518 ic_idmac_2 = ipu_ic_read(ic, IC_IDMAC_2); in ipu_ic_task_idma_init()
519 ic_idmac_3 = ipu_ic_read(ic, IC_IDMAC_3); in ipu_ic_task_idma_init()
619 ipu_ic_write(ic, ic_idmac_1, IC_IDMAC_1); in ipu_ic_task_idma_init()
620 ipu_ic_write(ic, ic_idmac_2, IC_IDMAC_2); in ipu_ic_task_idma_init()
621 ipu_ic_write(ic, ic_idmac_3, IC_IDMAC_3); in ipu_ic_task_idma_init()
624 ic->rotation = true; in ipu_ic_task_idma_init()
632 static void ipu_irt_enable(struct ipu_ic *ic) in ipu_irt_enable() argument
634 struct ipu_ic_priv *priv = ic->priv; in ipu_irt_enable()
642 static void ipu_irt_disable(struct ipu_ic *ic) in ipu_irt_disable() argument
644 struct ipu_ic_priv *priv = ic->priv; in ipu_irt_disable()
652 int ipu_ic_enable(struct ipu_ic *ic) in ipu_ic_enable() argument
654 struct ipu_ic_priv *priv = ic->priv; in ipu_ic_enable()
664 if (ic->rotation) in ipu_ic_enable()
665 ipu_irt_enable(ic); in ipu_ic_enable()
673 int ipu_ic_disable(struct ipu_ic *ic) in ipu_ic_disable() argument
675 struct ipu_ic_priv *priv = ic->priv; in ipu_ic_disable()
688 if (ic->rotation) in ipu_ic_disable()
689 ipu_irt_disable(ic); in ipu_ic_disable()
691 ic->rotation = ic->graphics = false; in ipu_ic_disable()
703 struct ipu_ic *ic, *ret; in ipu_ic_get() local
708 ic = &priv->task[task]; in ipu_ic_get()
712 if (ic->in_use) { in ipu_ic_get()
717 ic->in_use = true; in ipu_ic_get()
718 ret = ic; in ipu_ic_get()
726 void ipu_ic_put(struct ipu_ic *ic) in ipu_ic_put() argument
728 struct ipu_ic_priv *priv = ic->priv; in ipu_ic_put()
732 ic->in_use = false; in ipu_ic_put()
757 dev_dbg(dev, "IC base: 0x%08lx remapped to %p\n", base, priv->base); in ipu_ic_init()
775 void ipu_ic_dump(struct ipu_ic *ic) in ipu_ic_dump() argument
777 struct ipu_ic_priv *priv = ic->priv; in ipu_ic_dump()
781 ipu_ic_read(ic, IC_CONF)); in ipu_ic_dump()
783 ipu_ic_read(ic, IC_PRP_ENC_RSC)); in ipu_ic_dump()
785 ipu_ic_read(ic, IC_PRP_VF_RSC)); in ipu_ic_dump()
787 ipu_ic_read(ic, IC_PP_RSC)); in ipu_ic_dump()
789 ipu_ic_read(ic, IC_CMBP_1)); in ipu_ic_dump()
791 ipu_ic_read(ic, IC_CMBP_2)); in ipu_ic_dump()
793 ipu_ic_read(ic, IC_IDMAC_1)); in ipu_ic_dump()
795 ipu_ic_read(ic, IC_IDMAC_2)); in ipu_ic_dump()
797 ipu_ic_read(ic, IC_IDMAC_3)); in ipu_ic_dump()
799 ipu_ic_read(ic, IC_IDMAC_4)); in ipu_ic_dump()