Lines Matching refs:channel
246 struct ipuv3_channel *channel; in ipu_idmac_get() local
255 channel = &ipu->channel[num]; in ipu_idmac_get()
257 if (channel->busy) { in ipu_idmac_get()
258 channel = ERR_PTR(-EBUSY); in ipu_idmac_get()
262 channel->busy = true; in ipu_idmac_get()
263 channel->num = num; in ipu_idmac_get()
268 return channel; in ipu_idmac_get()
272 void ipu_idmac_put(struct ipuv3_channel *channel) in ipu_idmac_put() argument
274 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_put()
276 dev_dbg(ipu->dev, "%s %d\n", __func__, channel->num); in ipu_idmac_put()
280 channel->busy = false; in ipu_idmac_put()
299 static void __ipu_idmac_reset_current_buffer(struct ipuv3_channel *channel) in __ipu_idmac_reset_current_buffer() argument
301 struct ipu_soc *ipu = channel->ipu; in __ipu_idmac_reset_current_buffer()
302 unsigned int chno = channel->num; in __ipu_idmac_reset_current_buffer()
307 void ipu_idmac_set_double_buffer(struct ipuv3_channel *channel, in ipu_idmac_set_double_buffer() argument
310 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_set_double_buffer()
316 reg = ipu_cm_read(ipu, IPU_CHA_DB_MODE_SEL(channel->num)); in ipu_idmac_set_double_buffer()
318 reg |= idma_mask(channel->num); in ipu_idmac_set_double_buffer()
320 reg &= ~idma_mask(channel->num); in ipu_idmac_set_double_buffer()
321 ipu_cm_write(ipu, reg, IPU_CHA_DB_MODE_SEL(channel->num)); in ipu_idmac_set_double_buffer()
323 __ipu_idmac_reset_current_buffer(channel); in ipu_idmac_set_double_buffer()
353 int ipu_idmac_lock_enable(struct ipuv3_channel *channel, int num_bursts) in ipu_idmac_lock_enable() argument
355 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_lock_enable()
379 if (channel->num == idmac_lock_en_info[i].chnum) in ipu_idmac_lock_enable()
450 int ipu_idmac_get_current_buffer(struct ipuv3_channel *channel) in ipu_idmac_get_current_buffer() argument
452 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_get_current_buffer()
453 unsigned int chno = channel->num; in ipu_idmac_get_current_buffer()
459 bool ipu_idmac_buffer_is_ready(struct ipuv3_channel *channel, u32 buf_num) in ipu_idmac_buffer_is_ready() argument
461 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_buffer_is_ready()
468 reg = ipu_cm_read(ipu, IPU_CHA_BUF0_RDY(channel->num)); in ipu_idmac_buffer_is_ready()
471 reg = ipu_cm_read(ipu, IPU_CHA_BUF1_RDY(channel->num)); in ipu_idmac_buffer_is_ready()
474 reg = ipu_cm_read(ipu, IPU_CHA_BUF2_RDY(channel->num)); in ipu_idmac_buffer_is_ready()
479 return ((reg & idma_mask(channel->num)) != 0); in ipu_idmac_buffer_is_ready()
483 void ipu_idmac_select_buffer(struct ipuv3_channel *channel, u32 buf_num) in ipu_idmac_select_buffer() argument
485 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_select_buffer()
486 unsigned int chno = channel->num; in ipu_idmac_select_buffer()
501 void ipu_idmac_clear_buffer(struct ipuv3_channel *channel, u32 buf_num) in ipu_idmac_clear_buffer() argument
503 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_clear_buffer()
504 unsigned int chno = channel->num; in ipu_idmac_clear_buffer()
529 int ipu_idmac_enable_channel(struct ipuv3_channel *channel) in ipu_idmac_enable_channel() argument
531 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_enable_channel()
537 val = ipu_idmac_read(ipu, IDMAC_CHA_EN(channel->num)); in ipu_idmac_enable_channel()
538 val |= idma_mask(channel->num); in ipu_idmac_enable_channel()
539 ipu_idmac_write(ipu, val, IDMAC_CHA_EN(channel->num)); in ipu_idmac_enable_channel()
553 int ipu_idmac_wait_busy(struct ipuv3_channel *channel, int ms) in ipu_idmac_wait_busy() argument
555 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_wait_busy()
559 while (ipu_idmac_read(ipu, IDMAC_CHA_BUSY(channel->num)) & in ipu_idmac_wait_busy()
560 idma_mask(channel->num)) { in ipu_idmac_wait_busy()
586 int ipu_idmac_disable_channel(struct ipuv3_channel *channel) in ipu_idmac_disable_channel() argument
588 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_disable_channel()
595 val = ipu_idmac_read(ipu, IDMAC_CHA_EN(channel->num)); in ipu_idmac_disable_channel()
596 val &= ~idma_mask(channel->num); in ipu_idmac_disable_channel()
597 ipu_idmac_write(ipu, val, IDMAC_CHA_EN(channel->num)); in ipu_idmac_disable_channel()
599 __ipu_idmac_reset_current_buffer(channel); in ipu_idmac_disable_channel()
604 if (ipu_cm_read(ipu, IPU_CHA_BUF0_RDY(channel->num)) & in ipu_idmac_disable_channel()
605 idma_mask(channel->num)) { in ipu_idmac_disable_channel()
606 ipu_cm_write(ipu, idma_mask(channel->num), in ipu_idmac_disable_channel()
607 IPU_CHA_BUF0_RDY(channel->num)); in ipu_idmac_disable_channel()
610 if (ipu_cm_read(ipu, IPU_CHA_BUF1_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_BUF1_RDY(channel->num)); in ipu_idmac_disable_channel()
619 val = ipu_cm_read(ipu, IPU_CHA_DB_MODE_SEL(channel->num)); in ipu_idmac_disable_channel()
620 val &= ~idma_mask(channel->num); in ipu_idmac_disable_channel()
621 ipu_cm_write(ipu, val, IPU_CHA_DB_MODE_SEL(channel->num)); in ipu_idmac_disable_channel()
635 void ipu_idmac_enable_watermark(struct ipuv3_channel *channel, bool enable) in ipu_idmac_enable_watermark() argument
637 struct ipu_soc *ipu = channel->ipu; in ipu_idmac_enable_watermark()
643 val = ipu_idmac_read(ipu, IDMAC_WM_EN(channel->num)); in ipu_idmac_enable_watermark()
645 val |= 1 << (channel->num % 32); in ipu_idmac_enable_watermark()
647 val &= ~(1 << (channel->num % 32)); in ipu_idmac_enable_watermark()
648 ipu_idmac_write(ipu, val, IDMAC_WM_EN(channel->num)); in ipu_idmac_enable_watermark()
953 int ipu_idmac_channel_irq(struct ipu_soc *ipu, struct ipuv3_channel *channel, in ipu_idmac_channel_irq() argument
956 return ipu_map_irq(ipu, irq_type + channel->num); in ipu_idmac_channel_irq()
1217 ipu->channel[i].ipu = ipu; in ipu_probe()