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()
450 if (mx3_fbi->txd == NULL) in sdc_disable_channel()
455 sdc_fb_uninit(mx3_fbi); in sdc_disable_channel()
459 dmaengine_terminate_all(mx3_fbi->txd->chan); in sdc_disable_channel()
460 mx3_fbi->txd = NULL; in sdc_disable_channel()
461 mx3_fbi->cookie = -EINVAL; in sdc_disable_channel()
761 struct mx3fb_info *mx3_fbi = mx3fb->fbi->par; in mx3fb_dma_done() local
768 complete(&mx3_fbi->flip_cmpl); in mx3fb_dma_done()
773 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_must_set_par() local
774 struct fb_var_screeninfo old_var = mx3_fbi->cur_var; in mx3fb_must_set_par()
796 struct mx3fb_info *mx3_fbi = fbi->par; in __set_par() local
797 struct mx3fb_data *mx3fb = mx3_fbi->mx3fb; in __set_par()
798 struct idmac_channel *ichan = mx3_fbi->idmac_channel; in __set_par()
800 struct scatterlist *sg = mx3_fbi->sg; in __set_par()
803 if (mx3_fbi->txd) in __set_par()
804 sdc_disable_channel(mx3_fbi); in __set_par()
825 if (mx3_fbi->ipu_ch == IDMAC_SDC_0) { in __set_par()
864 sdc_set_window_pos(mx3fb, mx3_fbi->ipu_ch, 0, 0); in __set_par()
866 mx3_fbi->cur_ipu_buf = 0; in __set_par()
873 if (mx3_fbi->blank == FB_BLANK_UNBLANK) { in __set_par()
874 sdc_enable_channel(mx3_fbi); in __set_par()
879 mx3_fbi->cur_var.xoffset = 0; in __set_par()
880 mx3_fbi->cur_var.yoffset = 0; in __set_par()
887 cur_xoffset = mx3_fbi->cur_var.xoffset; in __set_par()
888 cur_yoffset = mx3_fbi->cur_var.yoffset; in __set_par()
889 mx3_fbi->cur_var = fbi->var; in __set_par()
890 mx3_fbi->cur_var.xoffset = cur_xoffset; in __set_par()
891 mx3_fbi->cur_var.yoffset = cur_yoffset; in __set_par()
903 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_set_par() local
904 struct mx3fb_data *mx3fb = mx3_fbi->mx3fb; in mx3fb_set_par()
905 struct idmac_channel *ichan = mx3_fbi->idmac_channel; in mx3fb_set_par()
910 mutex_lock(&mx3_fbi->mutex); in mx3fb_set_par()
914 mutex_unlock(&mx3_fbi->mutex); in mx3fb_set_par()
926 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_check_var() local
1011 var->sync |= mx3_fbi->cur_var.sync; in mx3fb_check_var()
1012 mx3_fbi->cur_var.sync |= var->sync; in mx3fb_check_var()
1028 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_setcolreg() local
1034 mutex_lock(&mx3_fbi->mutex); in mx3fb_setcolreg()
1065 mutex_unlock(&mx3_fbi->mutex); in mx3fb_setcolreg()
1072 struct mx3fb_info *mx3_fbi = fbi->par; in __blank() local
1073 struct mx3fb_data *mx3fb = mx3_fbi->mx3fb; in __blank()
1074 int was_blank = mx3_fbi->blank; in __blank()
1076 mx3_fbi->blank = blank; in __blank()
1096 sdc_disable_channel(mx3_fbi); in __blank()
1099 sdc_enable_channel(mx3_fbi); in __blank()
1112 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_blank() local
1117 if (mx3_fbi->blank == blank) in mx3fb_blank()
1120 mutex_lock(&mx3_fbi->mutex); in mx3fb_blank()
1122 mutex_unlock(&mx3_fbi->mutex); in mx3fb_blank()
1137 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_pan_display() local
1142 struct scatterlist *sg = mx3_fbi->sg; in mx3fb_pan_display()
1143 struct dma_chan *dma_chan = &mx3_fbi->idmac_channel->dma_chan; in mx3fb_pan_display()
1148 list_empty(&mx3_fbi->idmac_channel->queue) ? '-' : '+'); in mx3fb_pan_display()
1155 if (mx3_fbi->cur_var.xoffset == var->xoffset && in mx3fb_pan_display()
1156 mx3_fbi->cur_var.yoffset == var->yoffset) in mx3fb_pan_display()
1167 mutex_lock(&mx3_fbi->mutex); in mx3fb_pan_display()
1174 mx3_fbi->cur_ipu_buf, base); in mx3fb_pan_display()
1181 init_completion(&mx3_fbi->flip_cmpl); in mx3fb_pan_display()
1182 enable_irq(mx3_fbi->idmac_channel->eof_irq); in mx3fb_pan_display()
1184 ret = wait_for_completion_timeout(&mx3_fbi->flip_cmpl, HZ / 10); in mx3fb_pan_display()
1186 mutex_unlock(&mx3_fbi->mutex); in mx3fb_pan_display()
1189 disable_irq(mx3_fbi->idmac_channel->eof_irq); in mx3fb_pan_display()
1193 mx3_fbi->cur_ipu_buf = !mx3_fbi->cur_ipu_buf; in mx3fb_pan_display()
1195 sg_dma_address(&sg[mx3_fbi->cur_ipu_buf]) = base; in mx3fb_pan_display()
1196 sg_set_page(&sg[mx3_fbi->cur_ipu_buf], in mx3fb_pan_display()
1200 if (mx3_fbi->txd) in mx3fb_pan_display()
1201 async_tx_ack(mx3_fbi->txd); in mx3fb_pan_display()
1204 mx3_fbi->cur_ipu_buf, 1, DMA_MEM_TO_DEV, DMA_PREP_INTERRUPT); in mx3fb_pan_display()
1208 mutex_unlock(&mx3_fbi->mutex); in mx3fb_pan_display()
1224 mx3_fbi->cur_ipu_buf, base); in mx3fb_pan_display()
1225 mutex_unlock(&mx3_fbi->mutex); in mx3fb_pan_display()
1229 mx3_fbi->txd = txd; in mx3fb_pan_display()
1239 mx3_fbi->cur_var = fbi->var; in mx3fb_pan_display()
1241 mutex_unlock(&mx3_fbi->mutex); in mx3fb_pan_display()
1277 struct mx3fb_info *mx3_fbi = mx3fb->fbi->par; in mx3fb_suspend() local
1283 if (mx3_fbi->blank == FB_BLANK_UNBLANK) { in mx3fb_suspend()
1284 sdc_disable_channel(mx3_fbi); in mx3fb_suspend()
1297 struct mx3fb_info *mx3_fbi = mx3fb->fbi->par; in mx3fb_resume() local
1299 if (mx3_fbi->blank == FB_BLANK_UNBLANK) { in mx3fb_resume()
1300 sdc_enable_channel(mx3_fbi); in mx3fb_resume()
1628 struct mx3fb_info *mx3_fbi = fbi->par; in mx3fb_remove() local
1631 chan = &mx3_fbi->idmac_channel->dma_chan; in mx3fb_remove()