Lines Matching refs:mdp
51 static int enable_mdp_irq(struct mdp_info *mdp, uint32_t mask) in enable_mdp_irq() argument
70 enable_irq(mdp->irq); in enable_mdp_irq()
80 static int locked_disable_mdp_irq(struct mdp_info *mdp, uint32_t mask) in locked_disable_mdp_irq() argument
93 disable_irq_nosync(mdp->irq); in locked_disable_mdp_irq()
100 static int disable_mdp_irq(struct mdp_info *mdp, uint32_t mask) in disable_mdp_irq() argument
106 ret = locked_disable_mdp_irq(mdp, mask); in disable_mdp_irq()
115 struct mdp_info *mdp = data; in mdp_isr() local
119 status = mdp_readl(mdp, MDP_INTR_STATUS); in mdp_isr()
120 mdp_writel(mdp, status, MDP_INTR_CLEAR); in mdp_isr()
135 locked_disable_mdp_irq(mdp, status); in mdp_isr()
152 static int mdp_wait(struct mdp_info *mdp, uint32_t mask, wait_queue_head_t *wq) in mdp_wait() argument
161 locked_disable_mdp_irq(mdp, mask); in mdp_wait()
175 struct mdp_info *mdp = container_of(mdp_dev, struct mdp_info, mdp_dev); in mdp_dma_wait() local
177 if (mdp_wait(mdp, DL0_DMA2_TERM_DONE, &mdp_dma2_waitqueue) == -ETIMEDOUT) in mdp_dma_wait()
189 static int mdp_ppp_wait(struct mdp_info *mdp) in mdp_ppp_wait() argument
191 return mdp_wait(mdp, DL0_ROI_DONE, &mdp_ppp_waitqueue); in mdp_ppp_wait()
194 void mdp_dma_to_mddi(struct mdp_info *mdp, uint32_t addr, uint32_t stride, in mdp_dma_to_mddi() argument
201 if (enable_mdp_irq(mdp, DL0_DMA2_TERM_DONE)) { in mdp_dma_to_mddi()
223 mdp_writel(mdp, (height << 16) | (width), in mdp_dma_to_mddi()
225 mdp_writel(mdp, addr, MDP_CMD_DEBUG_ACCESS_BASE + 0x0188); in mdp_dma_to_mddi()
226 mdp_writel(mdp, stride, MDP_CMD_DEBUG_ACCESS_BASE + 0x018C); in mdp_dma_to_mddi()
232 mdp_writel(mdp, (y << 16) | (x), MDP_CMD_DEBUG_ACCESS_BASE + 0x0194); in mdp_dma_to_mddi()
233 mdp_writel(mdp, ld_param, MDP_CMD_DEBUG_ACCESS_BASE + 0x01a0); in mdp_dma_to_mddi()
234 mdp_writel(mdp, (MDDI_VDO_PACKET_DESC << 16) | MDDI_VDO_PACKET_PRIM, in mdp_dma_to_mddi()
237 mdp_writel(mdp, dma2_cfg, MDP_CMD_DEBUG_ACCESS_BASE + 0x0180); in mdp_dma_to_mddi()
240 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x0044); in mdp_dma_to_mddi()
247 struct mdp_info *mdp = container_of(mdp_dev, struct mdp_info, mdp_dev); in mdp_dma() local
250 mdp_dma_to_mddi(mdp, addr, stride, width, height, x, y, in mdp_dma()
283 struct mdp_info *mdp = container_of(mdp_dev, struct mdp_info, mdp_dev); in mdp_blit() local
324 enable_mdp_irq(mdp, DL0_ROI_DONE); in mdp_blit()
325 ret = mdp_ppp_blit(mdp, req, src_file, src_start, in mdp_blit()
330 ret = mdp_ppp_wait(mdp); in mdp_blit()
341 enable_mdp_irq(mdp, DL0_ROI_DONE); in mdp_blit()
342 ret = mdp_ppp_blit(mdp, req, src_file, src_start, src_len, dst_file, in mdp_blit()
347 ret = mdp_ppp_wait(mdp); in mdp_blit()
355 disable_mdp_irq(mdp, DL0_ROI_DONE); in mdp_blit()
364 struct mdp_info *mdp = container_of(mdp_dev, struct mdp_info, mdp_dev); in mdp_set_grp_disp() local
367 mdp_writel(mdp, disp_id, MDP_FULL_BYPASS_WORD43); in mdp_set_grp_disp()
388 struct mdp_info *mdp; in mdp_probe() local
396 mdp = kzalloc(sizeof(struct mdp_info), GFP_KERNEL); in mdp_probe()
397 if (!mdp) in mdp_probe()
400 mdp->irq = platform_get_irq(pdev, 0); in mdp_probe()
401 if (mdp->irq < 0) { in mdp_probe()
403 ret = mdp->irq; in mdp_probe()
407 mdp->base = ioremap(resource->start, resource_size(resource)); in mdp_probe()
408 if (mdp->base == 0) { in mdp_probe()
414 mdp->mdp_dev.dma = mdp_dma; in mdp_probe()
415 mdp->mdp_dev.dma_wait = mdp_dma_wait; in mdp_probe()
416 mdp->mdp_dev.blit = mdp_blit; in mdp_probe()
417 mdp->mdp_dev.set_grp_disp = mdp_set_grp_disp; in mdp_probe()
426 ret = request_irq(mdp->irq, mdp_isr, 0, "msm_mdp", mdp); in mdp_probe()
429 disable_irq(mdp->irq); in mdp_probe()
433 mdp_writel(mdp, 1, 0x60); in mdp_probe()
435 mdp_writel(mdp, MDP_ANY_INTR_MASK, MDP_INTR_ENABLE); in mdp_probe()
436 mdp_writel(mdp, 1, MDP_EBI2_PORTMAP_MODE); in mdp_probe()
438 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x01f8); in mdp_probe()
439 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x01fc); in mdp_probe()
442 mdp_writel(mdp, csc_table[n].val, csc_table[n].reg); in mdp_probe()
446 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x0120); in mdp_probe()
449 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x012c); in mdp_probe()
450 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x0130); in mdp_probe()
451 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x0134); in mdp_probe()
452 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x0158); in mdp_probe()
453 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x015c); in mdp_probe()
454 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x0160); in mdp_probe()
455 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x0170); in mdp_probe()
456 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x0174); in mdp_probe()
457 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x017c); in mdp_probe()
460 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x0114); in mdp_probe()
461 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x0118); in mdp_probe()
464 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x01c8); in mdp_probe()
465 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x01d0); in mdp_probe()
466 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x01dc); in mdp_probe()
467 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x01e0); in mdp_probe()
468 mdp_writel(mdp, 0, MDP_CMD_DEBUG_ACCESS_BASE + 0x01e4); in mdp_probe()
471 mdp_writel(mdp, mdp_upscale_table[n].val, in mdp_probe()
475 mdp_writel(mdp, mdp_default_ccs[n], 0x40440 + 4 * n); in mdp_probe()
476 mdp_writel(mdp, mdp_default_ccs[9], 0x40500 + 4 * 0); in mdp_probe()
477 mdp_writel(mdp, mdp_default_ccs[10], 0x40500 + 4 * 0); in mdp_probe()
478 mdp_writel(mdp, mdp_default_ccs[11], 0x40500 + 4 * 0); in mdp_probe()
481 mdp->mdp_dev.dev.parent = &pdev->dev; in mdp_probe()
482 mdp->mdp_dev.dev.class = mdp_class; in mdp_probe()
483 dev_set_name(&mdp->mdp_dev.dev, "mdp%d", pdev->id); in mdp_probe()
489 ret = device_register(&mdp->mdp_dev.dev); in mdp_probe()
495 free_irq(mdp->irq, mdp); in mdp_probe()
498 iounmap(mdp->base); in mdp_probe()
501 kfree(mdp); in mdp_probe()