Lines Matching refs:priv

102 	struct ipu_dc_priv	*priv;  member
133 struct ipu_dc_priv *priv = dc->priv; in dc_write_tmpl() local
146 writel(reg1, priv->dc_tmpl_reg + word * 8); in dc_write_tmpl()
147 writel(reg2, priv->dc_tmpl_reg + word * 8 + 4); in dc_write_tmpl()
173 struct ipu_dc_priv *priv = dc->priv; in ipu_dc_init_sync() local
181 dev_dbg(priv->dev, "IPU_DISP: No MAP\n"); in ipu_dc_init_sync()
235 writel(width, priv->dc_reg + DC_DISP_CONF2(dc->di)); in ipu_dc_init_sync()
243 struct ipu_dc_priv *priv = ipu->dc_priv; in ipu_dc_enable() local
245 mutex_lock(&priv->mutex); in ipu_dc_enable()
247 if (!priv->use_count) in ipu_dc_enable()
248 ipu_module_enable(priv->ipu, IPU_CONF_DC_EN); in ipu_dc_enable()
250 priv->use_count++; in ipu_dc_enable()
252 mutex_unlock(&priv->mutex); in ipu_dc_enable()
280 complete(&dc->priv->comp); in dc_irq_handler()
286 struct ipu_dc_priv *priv = dc->priv; in ipu_dc_disable_channel() local
293 irq = priv->dc_irq; in ipu_dc_disable_channel()
295 irq = priv->dp_irq; in ipu_dc_disable_channel()
299 init_completion(&priv->comp); in ipu_dc_disable_channel()
301 ret = wait_for_completion_timeout(&priv->comp, msecs_to_jiffies(50)); in ipu_dc_disable_channel()
304 dev_warn(priv->dev, "DC stop timeout after 50 ms\n"); in ipu_dc_disable_channel()
315 struct ipu_dc_priv *priv = ipu->dc_priv; in ipu_dc_disable() local
317 mutex_lock(&priv->mutex); in ipu_dc_disable()
319 priv->use_count--; in ipu_dc_disable()
320 if (!priv->use_count) in ipu_dc_disable()
321 ipu_module_disable(priv->ipu, IPU_CONF_DC_EN); in ipu_dc_disable()
323 if (priv->use_count < 0) in ipu_dc_disable()
324 priv->use_count = 0; in ipu_dc_disable()
326 mutex_unlock(&priv->mutex); in ipu_dc_disable()
330 static void ipu_dc_map_config(struct ipu_dc_priv *priv, enum ipu_dc_map map, in ipu_dc_map_config() argument
336 reg = readl(priv->dc_reg + DC_MAP_CONF_VAL(ptr)); in ipu_dc_map_config()
339 writel(reg, priv->dc_reg + DC_MAP_CONF_VAL(ptr)); in ipu_dc_map_config()
341 reg = readl(priv->dc_reg + DC_MAP_CONF_PTR(map)); in ipu_dc_map_config()
344 writel(reg, priv->dc_reg + DC_MAP_CONF_PTR(map)); in ipu_dc_map_config()
347 static void ipu_dc_map_clear(struct ipu_dc_priv *priv, int map) in ipu_dc_map_clear() argument
349 u32 reg = readl(priv->dc_reg + DC_MAP_CONF_PTR(map)); in ipu_dc_map_clear()
352 priv->dc_reg + DC_MAP_CONF_PTR(map)); in ipu_dc_map_clear()
357 struct ipu_dc_priv *priv = ipu->dc_priv; in ipu_dc_get() local
363 dc = &priv->channels[channel]; in ipu_dc_get()
365 mutex_lock(&priv->mutex); in ipu_dc_get()
368 mutex_unlock(&priv->mutex); in ipu_dc_get()
374 mutex_unlock(&priv->mutex); in ipu_dc_get()
382 struct ipu_dc_priv *priv = dc->priv; in ipu_dc_put() local
384 mutex_lock(&priv->mutex); in ipu_dc_put()
386 mutex_unlock(&priv->mutex); in ipu_dc_put()
393 struct ipu_dc_priv *priv; in ipu_dc_init() local
398 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); in ipu_dc_init()
399 if (!priv) in ipu_dc_init()
402 mutex_init(&priv->mutex); in ipu_dc_init()
404 priv->dev = dev; in ipu_dc_init()
405 priv->ipu = ipu; in ipu_dc_init()
406 priv->dc_reg = devm_ioremap(dev, base, PAGE_SIZE); in ipu_dc_init()
407 priv->dc_tmpl_reg = devm_ioremap(dev, template_base, PAGE_SIZE); in ipu_dc_init()
408 if (!priv->dc_reg || !priv->dc_tmpl_reg) in ipu_dc_init()
412 priv->channels[i].chno = i; in ipu_dc_init()
413 priv->channels[i].priv = priv; in ipu_dc_init()
414 priv->channels[i].base = priv->dc_reg + channel_offsets[i]; in ipu_dc_init()
417 priv->dc_irq = ipu_map_irq(ipu, IPU_IRQ_DC_FC_1); in ipu_dc_init()
418 if (!priv->dc_irq) in ipu_dc_init()
420 ret = devm_request_irq(dev, priv->dc_irq, dc_irq_handler, 0, NULL, in ipu_dc_init()
421 &priv->channels[1]); in ipu_dc_init()
424 disable_irq(priv->dc_irq); in ipu_dc_init()
425 priv->dp_irq = ipu_map_irq(ipu, IPU_IRQ_DP_SF_END); in ipu_dc_init()
426 if (!priv->dp_irq) in ipu_dc_init()
428 ret = devm_request_irq(dev, priv->dp_irq, dc_irq_handler, 0, NULL, in ipu_dc_init()
429 &priv->channels[5]); in ipu_dc_init()
432 disable_irq(priv->dp_irq); in ipu_dc_init()
436 priv->channels[1].base + DC_WR_CH_CONF); in ipu_dc_init()
438 priv->channels[5].base + DC_WR_CH_CONF); in ipu_dc_init()
441 priv->dc_reg + DC_GEN); in ipu_dc_init()
443 ipu->dc_priv = priv; in ipu_dc_init()
449 ipu_dc_map_clear(priv, IPU_DC_MAP_RGB24); in ipu_dc_init()
450 ipu_dc_map_config(priv, IPU_DC_MAP_RGB24, 0, 7, 0xff); /* blue */ in ipu_dc_init()
451 ipu_dc_map_config(priv, IPU_DC_MAP_RGB24, 1, 15, 0xff); /* green */ in ipu_dc_init()
452 ipu_dc_map_config(priv, IPU_DC_MAP_RGB24, 2, 23, 0xff); /* red */ in ipu_dc_init()
455 ipu_dc_map_clear(priv, IPU_DC_MAP_RGB565); in ipu_dc_init()
456 ipu_dc_map_config(priv, IPU_DC_MAP_RGB565, 0, 4, 0xf8); /* blue */ in ipu_dc_init()
457 ipu_dc_map_config(priv, IPU_DC_MAP_RGB565, 1, 10, 0xfc); /* green */ in ipu_dc_init()
458 ipu_dc_map_config(priv, IPU_DC_MAP_RGB565, 2, 15, 0xf8); /* red */ in ipu_dc_init()
461 ipu_dc_map_clear(priv, IPU_DC_MAP_GBR24); in ipu_dc_init()
462 ipu_dc_map_config(priv, IPU_DC_MAP_GBR24, 2, 15, 0xff); /* green */ in ipu_dc_init()
463 ipu_dc_map_config(priv, IPU_DC_MAP_GBR24, 1, 7, 0xff); /* blue */ in ipu_dc_init()
464 ipu_dc_map_config(priv, IPU_DC_MAP_GBR24, 0, 23, 0xff); /* red */ in ipu_dc_init()
467 ipu_dc_map_clear(priv, IPU_DC_MAP_BGR666); in ipu_dc_init()
468 ipu_dc_map_config(priv, IPU_DC_MAP_BGR666, 0, 5, 0xfc); /* blue */ in ipu_dc_init()
469 ipu_dc_map_config(priv, IPU_DC_MAP_BGR666, 1, 11, 0xfc); /* green */ in ipu_dc_init()
470 ipu_dc_map_config(priv, IPU_DC_MAP_BGR666, 2, 17, 0xfc); /* red */ in ipu_dc_init()
473 ipu_dc_map_clear(priv, IPU_DC_MAP_LVDS666); in ipu_dc_init()
474 ipu_dc_map_config(priv, IPU_DC_MAP_LVDS666, 0, 5, 0xfc); /* blue */ in ipu_dc_init()
475 ipu_dc_map_config(priv, IPU_DC_MAP_LVDS666, 1, 13, 0xfc); /* green */ in ipu_dc_init()
476 ipu_dc_map_config(priv, IPU_DC_MAP_LVDS666, 2, 21, 0xfc); /* red */ in ipu_dc_init()
479 ipu_dc_map_clear(priv, IPU_DC_MAP_BGR24); in ipu_dc_init()
480 ipu_dc_map_config(priv, IPU_DC_MAP_BGR24, 2, 7, 0xff); /* red */ in ipu_dc_init()
481 ipu_dc_map_config(priv, IPU_DC_MAP_BGR24, 1, 15, 0xff); /* green */ in ipu_dc_init()
482 ipu_dc_map_config(priv, IPU_DC_MAP_BGR24, 0, 23, 0xff); /* blue */ in ipu_dc_init()