Lines Matching full:dc

90 	/* The display interface number assigned to this dc channel */
109 static void dc_link_event(struct ipu_dc *dc, int event, int addr, int priority) in dc_link_event() argument
113 reg = readl(dc->base + DC_RL_CH(event)); in dc_link_event()
116 writel(reg, dc->base + DC_RL_CH(event)); in dc_link_event()
119 static void dc_write_tmpl(struct ipu_dc *dc, int word, u32 opcode, u32 operand, in dc_write_tmpl() argument
122 struct ipu_dc_priv *priv = dc->priv; in dc_write_tmpl()
160 int ipu_dc_init_sync(struct ipu_dc *dc, struct ipu_di *di, bool interlaced, in ipu_dc_init_sync() argument
163 struct ipu_dc_priv *priv = dc->priv; in ipu_dc_init_sync()
168 dc->di = ipu_di_get_num(di); in ipu_dc_init_sync()
179 * per-field VSYNC signals. The pixel active signal synchronising DC in ipu_dc_init_sync()
186 if (dc->di) in ipu_dc_init_sync()
192 dc_link_event(dc, DC_EVT_NL, addr, 3); in ipu_dc_init_sync()
193 dc_link_event(dc, DC_EVT_EOL, addr, 2); in ipu_dc_init_sync()
194 dc_link_event(dc, DC_EVT_NEW_DATA, addr, 1); in ipu_dc_init_sync()
197 dc_write_tmpl(dc, addr, WROD(0), 0, map, SYNC_WAVE, 0, sync, 1); in ipu_dc_init_sync()
199 dc_link_event(dc, DC_EVT_NL, addr + 2, 3); in ipu_dc_init_sync()
200 dc_link_event(dc, DC_EVT_EOL, addr + 3, 2); in ipu_dc_init_sync()
201 dc_link_event(dc, DC_EVT_NEW_DATA, addr + 1, 1); in ipu_dc_init_sync()
204 dc_write_tmpl(dc, addr + 2, WROD(0), 0, map, SYNC_WAVE, 8, sync, 1); in ipu_dc_init_sync()
205 dc_write_tmpl(dc, addr + 3, WROD(0), 0, map, SYNC_WAVE, 4, sync, 0); in ipu_dc_init_sync()
206 dc_write_tmpl(dc, addr + 4, WRG, 0, map, NULL_WAVE, 0, 0, 1); in ipu_dc_init_sync()
207 dc_write_tmpl(dc, addr + 1, WROD(0), 0, map, SYNC_WAVE, 0, sync, 1); in ipu_dc_init_sync()
210 dc_link_event(dc, DC_EVT_NF, 0, 0); in ipu_dc_init_sync()
211 dc_link_event(dc, DC_EVT_NFIELD, 0, 0); in ipu_dc_init_sync()
212 dc_link_event(dc, DC_EVT_EOF, 0, 0); in ipu_dc_init_sync()
213 dc_link_event(dc, DC_EVT_EOFIELD, 0, 0); in ipu_dc_init_sync()
214 dc_link_event(dc, DC_EVT_NEW_CHAN, 0, 0); in ipu_dc_init_sync()
215 dc_link_event(dc, DC_EVT_NEW_ADDR, 0, 0); in ipu_dc_init_sync()
217 reg = readl(dc->base + DC_WR_CH_CONF); in ipu_dc_init_sync()
222 writel(reg, dc->base + DC_WR_CH_CONF); in ipu_dc_init_sync()
224 writel(0x0, dc->base + DC_WR_CH_ADDR); in ipu_dc_init_sync()
225 writel(width, priv->dc_reg + DC_DISP_CONF2(dc->di)); in ipu_dc_init_sync()
246 void ipu_dc_enable_channel(struct ipu_dc *dc) in ipu_dc_enable_channel() argument
250 reg = readl(dc->base + DC_WR_CH_CONF); in ipu_dc_enable_channel()
252 writel(reg, dc->base + DC_WR_CH_CONF); in ipu_dc_enable_channel()
256 void ipu_dc_disable_channel(struct ipu_dc *dc) in ipu_dc_disable_channel() argument
260 val = readl(dc->base + DC_WR_CH_CONF); in ipu_dc_disable_channel()
262 writel(val, dc->base + DC_WR_CH_CONF); in ipu_dc_disable_channel()
311 struct ipu_dc *dc; in ipu_dc_get() local
316 dc = &priv->channels[channel]; in ipu_dc_get()
320 if (dc->in_use) { in ipu_dc_get()
325 dc->in_use = true; in ipu_dc_get()
329 return dc; in ipu_dc_get()
333 void ipu_dc_put(struct ipu_dc *dc) in ipu_dc_put() argument
335 struct ipu_dc_priv *priv = dc->priv; in ipu_dc_put()
338 dc->in_use = false; in ipu_dc_put()
382 dev_dbg(dev, "DC base: 0x%08lx template base: 0x%08lx\n", in ipu_dc_init()