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()
228 writel(width, priv->dc_reg + DC_DISP_CONF2(dc->di)); in ipu_dc_init_sync()
236 struct ipu_dc_priv *priv = ipu->dc_priv; in ipu_dc_enable() local
238 mutex_lock(&priv->mutex); in ipu_dc_enable()
240 if (!priv->use_count) in ipu_dc_enable()
241 ipu_module_enable(priv->ipu, IPU_CONF_DC_EN); in ipu_dc_enable()
243 priv->use_count++; in ipu_dc_enable()
245 mutex_unlock(&priv->mutex); in ipu_dc_enable()
273 complete(&dc->priv->comp); in dc_irq_handler()
279 struct ipu_dc_priv *priv = dc->priv; in ipu_dc_disable_channel() local
286 irq = priv->dc_irq; in ipu_dc_disable_channel()
288 irq = priv->dp_irq; in ipu_dc_disable_channel()
292 init_completion(&priv->comp); in ipu_dc_disable_channel()
294 ret = wait_for_completion_timeout(&priv->comp, msecs_to_jiffies(50)); in ipu_dc_disable_channel()
297 dev_warn(priv->dev, "DC stop timeout after 50 ms\n"); in ipu_dc_disable_channel()
308 struct ipu_dc_priv *priv = ipu->dc_priv; in ipu_dc_disable() local
310 mutex_lock(&priv->mutex); in ipu_dc_disable()
312 priv->use_count--; in ipu_dc_disable()
313 if (!priv->use_count) in ipu_dc_disable()
314 ipu_module_disable(priv->ipu, IPU_CONF_DC_EN); in ipu_dc_disable()
316 if (priv->use_count < 0) in ipu_dc_disable()
317 priv->use_count = 0; in ipu_dc_disable()
319 mutex_unlock(&priv->mutex); in ipu_dc_disable()
323 static void ipu_dc_map_config(struct ipu_dc_priv *priv, enum ipu_dc_map map, in ipu_dc_map_config() argument
329 reg = readl(priv->dc_reg + DC_MAP_CONF_VAL(ptr)); in ipu_dc_map_config()
332 writel(reg, priv->dc_reg + DC_MAP_CONF_VAL(ptr)); in ipu_dc_map_config()
334 reg = readl(priv->dc_reg + DC_MAP_CONF_PTR(map)); in ipu_dc_map_config()
337 writel(reg, priv->dc_reg + DC_MAP_CONF_PTR(map)); in ipu_dc_map_config()
340 static void ipu_dc_map_clear(struct ipu_dc_priv *priv, int map) in ipu_dc_map_clear() argument
342 u32 reg = readl(priv->dc_reg + DC_MAP_CONF_PTR(map)); in ipu_dc_map_clear()
345 priv->dc_reg + DC_MAP_CONF_PTR(map)); in ipu_dc_map_clear()
350 struct ipu_dc_priv *priv = ipu->dc_priv; in ipu_dc_get() local
356 dc = &priv->channels[channel]; in ipu_dc_get()
358 mutex_lock(&priv->mutex); in ipu_dc_get()
361 mutex_unlock(&priv->mutex); in ipu_dc_get()
367 mutex_unlock(&priv->mutex); in ipu_dc_get()
375 struct ipu_dc_priv *priv = dc->priv; in ipu_dc_put() local
377 mutex_lock(&priv->mutex); in ipu_dc_put()
379 mutex_unlock(&priv->mutex); in ipu_dc_put()
386 struct ipu_dc_priv *priv; in ipu_dc_init() local
391 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); in ipu_dc_init()
392 if (!priv) in ipu_dc_init()
395 mutex_init(&priv->mutex); in ipu_dc_init()
397 priv->dev = dev; in ipu_dc_init()
398 priv->ipu = ipu; in ipu_dc_init()
399 priv->dc_reg = devm_ioremap(dev, base, PAGE_SIZE); in ipu_dc_init()
400 priv->dc_tmpl_reg = devm_ioremap(dev, template_base, PAGE_SIZE); in ipu_dc_init()
401 if (!priv->dc_reg || !priv->dc_tmpl_reg) in ipu_dc_init()
405 priv->channels[i].chno = i; in ipu_dc_init()
406 priv->channels[i].priv = priv; in ipu_dc_init()
407 priv->channels[i].base = priv->dc_reg + channel_offsets[i]; in ipu_dc_init()
410 priv->dc_irq = ipu_map_irq(ipu, IPU_IRQ_DC_FC_1); in ipu_dc_init()
411 if (!priv->dc_irq) in ipu_dc_init()
413 ret = devm_request_irq(dev, priv->dc_irq, dc_irq_handler, 0, NULL, in ipu_dc_init()
414 &priv->channels[1]); in ipu_dc_init()
417 disable_irq(priv->dc_irq); in ipu_dc_init()
418 priv->dp_irq = ipu_map_irq(ipu, IPU_IRQ_DP_SF_END); in ipu_dc_init()
419 if (!priv->dp_irq) in ipu_dc_init()
421 ret = devm_request_irq(dev, priv->dp_irq, dc_irq_handler, 0, NULL, in ipu_dc_init()
422 &priv->channels[5]); in ipu_dc_init()
425 disable_irq(priv->dp_irq); in ipu_dc_init()
429 priv->channels[1].base + DC_WR_CH_CONF); in ipu_dc_init()
431 priv->channels[5].base + DC_WR_CH_CONF); in ipu_dc_init()
434 priv->dc_reg + DC_GEN); in ipu_dc_init()
436 ipu->dc_priv = priv; in ipu_dc_init()
442 ipu_dc_map_clear(priv, IPU_DC_MAP_RGB24); in ipu_dc_init()
443 ipu_dc_map_config(priv, IPU_DC_MAP_RGB24, 0, 7, 0xff); /* blue */ in ipu_dc_init()
444 ipu_dc_map_config(priv, IPU_DC_MAP_RGB24, 1, 15, 0xff); /* green */ in ipu_dc_init()
445 ipu_dc_map_config(priv, IPU_DC_MAP_RGB24, 2, 23, 0xff); /* red */ in ipu_dc_init()
448 ipu_dc_map_clear(priv, IPU_DC_MAP_RGB565); in ipu_dc_init()
449 ipu_dc_map_config(priv, IPU_DC_MAP_RGB565, 0, 4, 0xf8); /* blue */ in ipu_dc_init()
450 ipu_dc_map_config(priv, IPU_DC_MAP_RGB565, 1, 10, 0xfc); /* green */ in ipu_dc_init()
451 ipu_dc_map_config(priv, IPU_DC_MAP_RGB565, 2, 15, 0xf8); /* red */ in ipu_dc_init()
454 ipu_dc_map_clear(priv, IPU_DC_MAP_GBR24); in ipu_dc_init()
455 ipu_dc_map_config(priv, IPU_DC_MAP_GBR24, 2, 15, 0xff); /* green */ in ipu_dc_init()
456 ipu_dc_map_config(priv, IPU_DC_MAP_GBR24, 1, 7, 0xff); /* blue */ in ipu_dc_init()
457 ipu_dc_map_config(priv, IPU_DC_MAP_GBR24, 0, 23, 0xff); /* red */ in ipu_dc_init()
460 ipu_dc_map_clear(priv, IPU_DC_MAP_BGR666); in ipu_dc_init()
461 ipu_dc_map_config(priv, IPU_DC_MAP_BGR666, 0, 5, 0xfc); /* blue */ in ipu_dc_init()
462 ipu_dc_map_config(priv, IPU_DC_MAP_BGR666, 1, 11, 0xfc); /* green */ in ipu_dc_init()
463 ipu_dc_map_config(priv, IPU_DC_MAP_BGR666, 2, 17, 0xfc); /* red */ in ipu_dc_init()
466 ipu_dc_map_clear(priv, IPU_DC_MAP_LVDS666); in ipu_dc_init()
467 ipu_dc_map_config(priv, IPU_DC_MAP_LVDS666, 0, 5, 0xfc); /* blue */ in ipu_dc_init()
468 ipu_dc_map_config(priv, IPU_DC_MAP_LVDS666, 1, 13, 0xfc); /* green */ in ipu_dc_init()
469 ipu_dc_map_config(priv, IPU_DC_MAP_LVDS666, 2, 21, 0xfc); /* red */ in ipu_dc_init()
472 ipu_dc_map_clear(priv, IPU_DC_MAP_BGR24); in ipu_dc_init()
473 ipu_dc_map_config(priv, IPU_DC_MAP_BGR24, 2, 7, 0xff); /* red */ in ipu_dc_init()
474 ipu_dc_map_config(priv, IPU_DC_MAP_BGR24, 1, 15, 0xff); /* green */ in ipu_dc_init()
475 ipu_dc_map_config(priv, IPU_DC_MAP_BGR24, 0, 23, 0xff); /* blue */ in ipu_dc_init()