Lines Matching refs:mx3_fbi

386 static void sdc_enable_channel(struct mx3fb_info *mx3_fbi)  in sdc_enable_channel()  argument
388 struct mx3fb_data *mx3fb = mx3_fbi->mx3fb; in sdc_enable_channel()
389 struct idmac_channel *ichan = mx3_fbi->idmac_channel; in sdc_enable_channel()
394 if (mx3_fbi->txd) in sdc_enable_channel()
395 dev_dbg(mx3fb->dev, "mx3fbi %p, desc %p, sg %p\n", mx3_fbi, in sdc_enable_channel()
396 to_tx_desc(mx3_fbi->txd), to_tx_desc(mx3_fbi->txd)->sg); in sdc_enable_channel()
398 dev_dbg(mx3fb->dev, "mx3fbi %p, txd = NULL\n", mx3_fbi); in sdc_enable_channel()
401 if (mx3_fbi->cookie < 0) { in sdc_enable_channel()
402 mx3_fbi->txd = dmaengine_prep_slave_sg(dma_chan, in sdc_enable_channel()
403 &mx3_fbi->sg[0], 1, DMA_MEM_TO_DEV, DMA_PREP_INTERRUPT); in sdc_enable_channel()
404 if (!mx3_fbi->txd) { in sdc_enable_channel()
410 mx3_fbi->txd->callback_param = mx3_fbi->txd; in sdc_enable_channel()
411 mx3_fbi->txd->callback = mx3fb_dma_done; in sdc_enable_channel()
413 cookie = mx3_fbi->txd->tx_submit(mx3_fbi->txd); in sdc_enable_channel()
415 mx3_fbi->txd, cookie, list_empty(&ichan->queue) ? '-' : '+'); in sdc_enable_channel()
417 if (!mx3_fbi->txd || !mx3_fbi->txd->tx_submit) { in sdc_enable_channel()
425 cookie = mx3_fbi->cookie; in sdc_enable_channel()
427 mx3_fbi->txd, cookie, list_empty(&ichan->queue) ? '-' : '+'); in sdc_enable_channel()
432 sdc_fb_init(mx3_fbi); in sdc_enable_channel()
433 mx3_fbi->cookie = cookie; in sdc_enable_channel()
445 static void sdc_disable_channel(struct mx3fb_info *mx3_fbi) in sdc_disable_channel() argument
447 struct mx3fb_data *mx3fb = mx3_fbi->mx3fb; in sdc_disable_channel()
451 if (mx3_fbi->txd == NULL) in sdc_disable_channel()
456 enabled = sdc_fb_uninit(mx3_fbi); in sdc_disable_channel()
460 dmaengine_terminate_all(mx3_fbi->txd->chan); in sdc_disable_channel()
461 mx3_fbi->txd = NULL; in sdc_disable_channel()
462 mx3_fbi->cookie = -EINVAL; in sdc_disable_channel()
762 struct mx3fb_info *mx3_fbi = mx3fb->fbi->par; in mx3fb_dma_done() local
769 complete(&mx3_fbi->flip_cmpl); in mx3fb_dma_done()
774 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_must_set_par() local
775 struct fb_var_screeninfo old_var = mx3_fbi->cur_var; in mx3fb_must_set_par()
797 struct mx3fb_info *mx3_fbi = fbi->par; in __set_par() local
798 struct mx3fb_data *mx3fb = mx3_fbi->mx3fb; in __set_par()
799 struct idmac_channel *ichan = mx3_fbi->idmac_channel; in __set_par()
801 struct scatterlist *sg = mx3_fbi->sg; in __set_par()
804 if (mx3_fbi->txd) in __set_par()
805 sdc_disable_channel(mx3_fbi); in __set_par()
826 if (mx3_fbi->ipu_ch == IDMAC_SDC_0) { in __set_par()
865 sdc_set_window_pos(mx3fb, mx3_fbi->ipu_ch, 0, 0); in __set_par()
867 mx3_fbi->cur_ipu_buf = 0; in __set_par()
874 if (mx3_fbi->blank == FB_BLANK_UNBLANK) { in __set_par()
875 sdc_enable_channel(mx3_fbi); in __set_par()
880 mx3_fbi->cur_var.xoffset = 0; in __set_par()
881 mx3_fbi->cur_var.yoffset = 0; in __set_par()
888 cur_xoffset = mx3_fbi->cur_var.xoffset; in __set_par()
889 cur_yoffset = mx3_fbi->cur_var.yoffset; in __set_par()
890 mx3_fbi->cur_var = fbi->var; in __set_par()
891 mx3_fbi->cur_var.xoffset = cur_xoffset; in __set_par()
892 mx3_fbi->cur_var.yoffset = cur_yoffset; in __set_par()
904 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_set_par() local
905 struct mx3fb_data *mx3fb = mx3_fbi->mx3fb; in mx3fb_set_par()
906 struct idmac_channel *ichan = mx3_fbi->idmac_channel; in mx3fb_set_par()
911 mutex_lock(&mx3_fbi->mutex); in mx3fb_set_par()
915 mutex_unlock(&mx3_fbi->mutex); in mx3fb_set_par()
927 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_check_var() local
1012 var->sync |= mx3_fbi->cur_var.sync; in mx3fb_check_var()
1013 mx3_fbi->cur_var.sync |= var->sync; in mx3fb_check_var()
1029 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_setcolreg() local
1035 mutex_lock(&mx3_fbi->mutex); in mx3fb_setcolreg()
1066 mutex_unlock(&mx3_fbi->mutex); in mx3fb_setcolreg()
1073 struct mx3fb_info *mx3_fbi = fbi->par; in __blank() local
1074 struct mx3fb_data *mx3fb = mx3_fbi->mx3fb; in __blank()
1075 int was_blank = mx3_fbi->blank; in __blank()
1077 mx3_fbi->blank = blank; in __blank()
1097 sdc_disable_channel(mx3_fbi); in __blank()
1100 sdc_enable_channel(mx3_fbi); in __blank()
1111 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_blank() local
1116 if (mx3_fbi->blank == blank) in mx3fb_blank()
1119 mutex_lock(&mx3_fbi->mutex); in mx3fb_blank()
1121 mutex_unlock(&mx3_fbi->mutex); in mx3fb_blank()
1136 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_pan_display() local
1141 struct scatterlist *sg = mx3_fbi->sg; in mx3fb_pan_display()
1142 struct dma_chan *dma_chan = &mx3_fbi->idmac_channel->dma_chan; in mx3fb_pan_display()
1147 list_empty(&mx3_fbi->idmac_channel->queue) ? '-' : '+'); in mx3fb_pan_display()
1154 if (mx3_fbi->cur_var.xoffset == var->xoffset && in mx3fb_pan_display()
1155 mx3_fbi->cur_var.yoffset == var->yoffset) in mx3fb_pan_display()
1166 mutex_lock(&mx3_fbi->mutex); in mx3fb_pan_display()
1173 mx3_fbi->cur_ipu_buf, base); in mx3fb_pan_display()
1180 init_completion(&mx3_fbi->flip_cmpl); in mx3fb_pan_display()
1181 enable_irq(mx3_fbi->idmac_channel->eof_irq); in mx3fb_pan_display()
1183 ret = wait_for_completion_timeout(&mx3_fbi->flip_cmpl, HZ / 10); in mx3fb_pan_display()
1185 mutex_unlock(&mx3_fbi->mutex); in mx3fb_pan_display()
1188 disable_irq(mx3_fbi->idmac_channel->eof_irq); in mx3fb_pan_display()
1192 mx3_fbi->cur_ipu_buf = !mx3_fbi->cur_ipu_buf; in mx3fb_pan_display()
1194 sg_dma_address(&sg[mx3_fbi->cur_ipu_buf]) = base; in mx3fb_pan_display()
1195 sg_set_page(&sg[mx3_fbi->cur_ipu_buf], in mx3fb_pan_display()
1199 if (mx3_fbi->txd) in mx3fb_pan_display()
1200 async_tx_ack(mx3_fbi->txd); in mx3fb_pan_display()
1203 mx3_fbi->cur_ipu_buf, 1, DMA_MEM_TO_DEV, DMA_PREP_INTERRUPT); in mx3fb_pan_display()
1207 mutex_unlock(&mx3_fbi->mutex); in mx3fb_pan_display()
1223 mx3_fbi->cur_ipu_buf, base); in mx3fb_pan_display()
1224 mutex_unlock(&mx3_fbi->mutex); in mx3fb_pan_display()
1228 mx3_fbi->txd = txd; in mx3fb_pan_display()
1238 mx3_fbi->cur_var = fbi->var; in mx3fb_pan_display()
1240 mutex_unlock(&mx3_fbi->mutex); in mx3fb_pan_display()
1276 struct mx3fb_info *mx3_fbi = mx3fb->fbi->par; in mx3fb_suspend() local
1282 if (mx3_fbi->blank == FB_BLANK_UNBLANK) { in mx3fb_suspend()
1283 sdc_disable_channel(mx3_fbi); in mx3fb_suspend()
1296 struct mx3fb_info *mx3_fbi = mx3fb->fbi->par; in mx3fb_resume() local
1298 if (mx3_fbi->blank == FB_BLANK_UNBLANK) { in mx3fb_resume()
1299 sdc_enable_channel(mx3_fbi); in mx3fb_resume()
1627 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_remove() local
1630 chan = &mx3_fbi->idmac_channel->dma_chan; in mx3fb_remove()