Lines Matching refs:channel

252 	struct ipuv3_channel *channel;  in ipu_idmac_get()  local
261 channel = &ipu->channel[num]; in ipu_idmac_get()
263 if (channel->busy) { in ipu_idmac_get()
264 channel = ERR_PTR(-EBUSY); in ipu_idmac_get()
268 channel->busy = true; in ipu_idmac_get()
269 channel->num = num; in ipu_idmac_get()
274 return channel; in ipu_idmac_get()
278 void ipu_idmac_put(struct ipuv3_channel *channel) in ipu_idmac_put() argument
280 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_put()
282 dev_dbg(ipu->dev, "%s %d\n", __func__, channel->num); in ipu_idmac_put()
286 channel->busy = false; in ipu_idmac_put()
305 static void __ipu_idmac_reset_current_buffer(struct ipuv3_channel *channel) in __ipu_idmac_reset_current_buffer() argument
307 struct ipu_soc *ipu = channel->ipu; in __ipu_idmac_reset_current_buffer()
308 unsigned int chno = channel->num; in __ipu_idmac_reset_current_buffer()
313 void ipu_idmac_set_double_buffer(struct ipuv3_channel *channel, in ipu_idmac_set_double_buffer() argument
316 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_set_double_buffer()
322 reg = ipu_cm_read(ipu, IPU_CHA_DB_MODE_SEL(channel->num)); in ipu_idmac_set_double_buffer()
324 reg |= idma_mask(channel->num); in ipu_idmac_set_double_buffer()
326 reg &= ~idma_mask(channel->num); in ipu_idmac_set_double_buffer()
327 ipu_cm_write(ipu, reg, IPU_CHA_DB_MODE_SEL(channel->num)); in ipu_idmac_set_double_buffer()
329 __ipu_idmac_reset_current_buffer(channel); in ipu_idmac_set_double_buffer()
359 int ipu_idmac_lock_enable(struct ipuv3_channel *channel, int num_bursts) in ipu_idmac_lock_enable() argument
361 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_lock_enable()
385 if (channel->num == idmac_lock_en_info[i].chnum) in ipu_idmac_lock_enable()
456 int ipu_idmac_get_current_buffer(struct ipuv3_channel *channel) in ipu_idmac_get_current_buffer() argument
458 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_get_current_buffer()
459 unsigned int chno = channel->num; in ipu_idmac_get_current_buffer()
465 bool ipu_idmac_buffer_is_ready(struct ipuv3_channel *channel, u32 buf_num) in ipu_idmac_buffer_is_ready() argument
467 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_buffer_is_ready()
474 reg = ipu_cm_read(ipu, IPU_CHA_BUF0_RDY(channel->num)); in ipu_idmac_buffer_is_ready()
477 reg = ipu_cm_read(ipu, IPU_CHA_BUF1_RDY(channel->num)); in ipu_idmac_buffer_is_ready()
480 reg = ipu_cm_read(ipu, IPU_CHA_BUF2_RDY(channel->num)); in ipu_idmac_buffer_is_ready()
485 return ((reg & idma_mask(channel->num)) != 0); in ipu_idmac_buffer_is_ready()
489 void ipu_idmac_select_buffer(struct ipuv3_channel *channel, u32 buf_num) in ipu_idmac_select_buffer() argument
491 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_select_buffer()
492 unsigned int chno = channel->num; in ipu_idmac_select_buffer()
507 void ipu_idmac_clear_buffer(struct ipuv3_channel *channel, u32 buf_num) in ipu_idmac_clear_buffer() argument
509 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_clear_buffer()
510 unsigned int chno = channel->num; in ipu_idmac_clear_buffer()
535 int ipu_idmac_enable_channel(struct ipuv3_channel *channel) in ipu_idmac_enable_channel() argument
537 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_enable_channel()
543 val = ipu_idmac_read(ipu, IDMAC_CHA_EN(channel->num)); in ipu_idmac_enable_channel()
544 val |= idma_mask(channel->num); in ipu_idmac_enable_channel()
545 ipu_idmac_write(ipu, val, IDMAC_CHA_EN(channel->num)); in ipu_idmac_enable_channel()
559 int ipu_idmac_wait_busy(struct ipuv3_channel *channel, int ms) in ipu_idmac_wait_busy() argument
561 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_wait_busy()
565 while (ipu_idmac_read(ipu, IDMAC_CHA_BUSY(channel->num)) & in ipu_idmac_wait_busy()
566 idma_mask(channel->num)) { in ipu_idmac_wait_busy()
592 int ipu_idmac_disable_channel(struct ipuv3_channel *channel) in ipu_idmac_disable_channel() argument
594 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_disable_channel()
601 val = ipu_idmac_read(ipu, IDMAC_CHA_EN(channel->num)); in ipu_idmac_disable_channel()
602 val &= ~idma_mask(channel->num); in ipu_idmac_disable_channel()
603 ipu_idmac_write(ipu, val, IDMAC_CHA_EN(channel->num)); in ipu_idmac_disable_channel()
605 __ipu_idmac_reset_current_buffer(channel); in ipu_idmac_disable_channel()
610 if (ipu_cm_read(ipu, IPU_CHA_BUF0_RDY(channel->num)) & in ipu_idmac_disable_channel()
611 idma_mask(channel->num)) { in ipu_idmac_disable_channel()
612 ipu_cm_write(ipu, idma_mask(channel->num), in ipu_idmac_disable_channel()
613 IPU_CHA_BUF0_RDY(channel->num)); in ipu_idmac_disable_channel()
616 if (ipu_cm_read(ipu, IPU_CHA_BUF1_RDY(channel->num)) & in ipu_idmac_disable_channel()
617 idma_mask(channel->num)) { in ipu_idmac_disable_channel()
618 ipu_cm_write(ipu, idma_mask(channel->num), in ipu_idmac_disable_channel()
619 IPU_CHA_BUF1_RDY(channel->num)); in ipu_idmac_disable_channel()
625 val = ipu_cm_read(ipu, IPU_CHA_DB_MODE_SEL(channel->num)); in ipu_idmac_disable_channel()
626 val &= ~idma_mask(channel->num); in ipu_idmac_disable_channel()
627 ipu_cm_write(ipu, val, IPU_CHA_DB_MODE_SEL(channel->num)); in ipu_idmac_disable_channel()
641 void ipu_idmac_enable_watermark(struct ipuv3_channel *channel, bool enable) in ipu_idmac_enable_watermark() argument
643 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_enable_watermark()
649 val = ipu_idmac_read(ipu, IDMAC_WM_EN(channel->num)); in ipu_idmac_enable_watermark()
651 val |= 1 << (channel->num % 32); in ipu_idmac_enable_watermark()
653 val &= ~(1 << (channel->num % 32)); in ipu_idmac_enable_watermark()
654 ipu_idmac_write(ipu, val, IDMAC_WM_EN(channel->num)); in ipu_idmac_enable_watermark()
959 int ipu_idmac_channel_irq(struct ipu_soc *ipu, struct ipuv3_channel *channel, in ipu_idmac_channel_irq() argument
962 return ipu_map_irq(ipu, irq_type + channel->num); in ipu_idmac_channel_irq()
1237 ipu->channel[i].ipu = ipu; in ipu_probe()