Lines Matching refs:dmfc
125 int ipu_dmfc_enable_channel(struct dmfc_channel *dmfc) in ipu_dmfc_enable_channel() argument
127 struct ipu_dmfc_priv *priv = dmfc->priv; in ipu_dmfc_enable_channel()
155 void ipu_dmfc_disable_channel(struct dmfc_channel *dmfc) in ipu_dmfc_disable_channel() argument
157 struct ipu_dmfc_priv *priv = dmfc->priv; in ipu_dmfc_disable_channel()
175 static int ipu_dmfc_setup_channel(struct dmfc_channel *dmfc, int slots, in ipu_dmfc_setup_channel() argument
178 struct ipu_dmfc_priv *priv = dmfc->priv; in ipu_dmfc_setup_channel()
183 slots, segment, dmfc->data->ipu_channel); in ipu_dmfc_setup_channel()
219 val = readl(priv->base + dmfc->data->channel_reg); in ipu_dmfc_setup_channel()
221 val &= ~(0xff << dmfc->data->shift); in ipu_dmfc_setup_channel()
222 val |= field << dmfc->data->shift; in ipu_dmfc_setup_channel()
224 writel(val, priv->base + dmfc->data->channel_reg); in ipu_dmfc_setup_channel()
226 dmfc->slots = slots; in ipu_dmfc_setup_channel()
227 dmfc->segment = segment; in ipu_dmfc_setup_channel()
228 dmfc->burstsize = burstsize; in ipu_dmfc_setup_channel()
229 dmfc->slotmask = ((1 << slots) - 1) << segment; in ipu_dmfc_setup_channel()
266 void ipu_dmfc_free_bandwidth(struct dmfc_channel *dmfc) in ipu_dmfc_free_bandwidth() argument
268 struct ipu_dmfc_priv *priv = dmfc->priv; in ipu_dmfc_free_bandwidth()
272 dmfc->slots, dmfc->segment); in ipu_dmfc_free_bandwidth()
276 if (!dmfc->slots) in ipu_dmfc_free_bandwidth()
279 dmfc->slotmask = 0; in ipu_dmfc_free_bandwidth()
280 dmfc->slots = 0; in ipu_dmfc_free_bandwidth()
281 dmfc->segment = 0; in ipu_dmfc_free_bandwidth()
308 int ipu_dmfc_alloc_bandwidth(struct dmfc_channel *dmfc, in ipu_dmfc_alloc_bandwidth() argument
311 struct ipu_dmfc_priv *priv = dmfc->priv; in ipu_dmfc_alloc_bandwidth()
317 dmfc->data->ipu_channel); in ipu_dmfc_alloc_bandwidth()
319 ipu_dmfc_free_bandwidth(dmfc); in ipu_dmfc_alloc_bandwidth()
329 if (dmfc->data->ipu_channel == IPUV3_CHANNEL_MEM_BG_SYNC) in ipu_dmfc_alloc_bandwidth()
344 ipu_dmfc_setup_channel(dmfc, slots, segment, burstsize); in ipu_dmfc_alloc_bandwidth()
353 int ipu_dmfc_init_channel(struct dmfc_channel *dmfc, int width) in ipu_dmfc_init_channel() argument
355 struct ipu_dmfc_priv *priv = dmfc->priv; in ipu_dmfc_init_channel()
360 if ((dmfc->slots * 64 * 4) / width > dmfc->data->max_fifo_lines) in ipu_dmfc_init_channel()
361 dmfc_gen1 |= 1 << dmfc->data->eot_shift; in ipu_dmfc_init_channel()
363 dmfc_gen1 &= ~(1 << dmfc->data->eot_shift); in ipu_dmfc_init_channel()
383 void ipu_dmfc_put(struct dmfc_channel *dmfc) in ipu_dmfc_put() argument
385 ipu_dmfc_free_bandwidth(dmfc); in ipu_dmfc_put()