Lines Matching refs:ddp
393 struct mtk_ddp *ddp = dev_get_drvdata(dev); in mtk_disp_mutex_get() local
397 if (ddp->mutex[id].claimed) in mtk_disp_mutex_get()
400 ddp->mutex[id].claimed = true; in mtk_disp_mutex_get()
402 return &ddp->mutex[id]; in mtk_disp_mutex_get()
407 struct mtk_ddp *ddp = container_of(mutex, struct mtk_ddp, in mtk_disp_mutex_put() local
410 WARN_ON(&ddp->mutex[mutex->id] != mutex); in mtk_disp_mutex_put()
417 struct mtk_ddp *ddp = container_of(mutex, struct mtk_ddp, in mtk_disp_mutex_prepare() local
419 return clk_prepare_enable(ddp->clk); in mtk_disp_mutex_prepare()
424 struct mtk_ddp *ddp = container_of(mutex, struct mtk_ddp, in mtk_disp_mutex_unprepare() local
426 clk_disable_unprepare(ddp->clk); in mtk_disp_mutex_unprepare()
432 struct mtk_ddp *ddp = container_of(mutex, struct mtk_ddp, in mtk_disp_mutex_add_comp() local
437 WARN_ON(&ddp->mutex[mutex->id] != mutex); in mtk_disp_mutex_add_comp()
459 if (ddp->mutex_mod[id] < 32) { in mtk_disp_mutex_add_comp()
461 reg = readl_relaxed(ddp->regs + offset); in mtk_disp_mutex_add_comp()
462 reg |= 1 << ddp->mutex_mod[id]; in mtk_disp_mutex_add_comp()
463 writel_relaxed(reg, ddp->regs + offset); in mtk_disp_mutex_add_comp()
466 reg = readl_relaxed(ddp->regs + offset); in mtk_disp_mutex_add_comp()
467 reg |= 1 << (ddp->mutex_mod[id] - 32); in mtk_disp_mutex_add_comp()
468 writel_relaxed(reg, ddp->regs + offset); in mtk_disp_mutex_add_comp()
473 writel_relaxed(reg, ddp->regs + DISP_REG_MUTEX_SOF(mutex->id)); in mtk_disp_mutex_add_comp()
479 struct mtk_ddp *ddp = container_of(mutex, struct mtk_ddp, in mtk_disp_mutex_remove_comp() local
484 WARN_ON(&ddp->mutex[mutex->id] != mutex); in mtk_disp_mutex_remove_comp()
494 ddp->regs + DISP_REG_MUTEX_SOF(mutex->id)); in mtk_disp_mutex_remove_comp()
497 if (ddp->mutex_mod[id] < 32) { in mtk_disp_mutex_remove_comp()
499 reg = readl_relaxed(ddp->regs + offset); in mtk_disp_mutex_remove_comp()
500 reg &= ~(1 << ddp->mutex_mod[id]); in mtk_disp_mutex_remove_comp()
501 writel_relaxed(reg, ddp->regs + offset); in mtk_disp_mutex_remove_comp()
504 reg = readl_relaxed(ddp->regs + offset); in mtk_disp_mutex_remove_comp()
505 reg &= ~(1 << (ddp->mutex_mod[id] - 32)); in mtk_disp_mutex_remove_comp()
506 writel_relaxed(reg, ddp->regs + offset); in mtk_disp_mutex_remove_comp()
514 struct mtk_ddp *ddp = container_of(mutex, struct mtk_ddp, in mtk_disp_mutex_enable() local
517 WARN_ON(&ddp->mutex[mutex->id] != mutex); in mtk_disp_mutex_enable()
519 writel(1, ddp->regs + DISP_REG_MUTEX_EN(mutex->id)); in mtk_disp_mutex_enable()
524 struct mtk_ddp *ddp = container_of(mutex, struct mtk_ddp, in mtk_disp_mutex_disable() local
527 WARN_ON(&ddp->mutex[mutex->id] != mutex); in mtk_disp_mutex_disable()
529 writel(0, ddp->regs + DISP_REG_MUTEX_EN(mutex->id)); in mtk_disp_mutex_disable()
534 struct mtk_ddp *ddp = container_of(mutex, struct mtk_ddp, in mtk_disp_mutex_acquire() local
538 writel(1, ddp->regs + DISP_REG_MUTEX_EN(mutex->id)); in mtk_disp_mutex_acquire()
539 writel(1, ddp->regs + DISP_REG_MUTEX(mutex->id)); in mtk_disp_mutex_acquire()
540 if (readl_poll_timeout_atomic(ddp->regs + DISP_REG_MUTEX(mutex->id), in mtk_disp_mutex_acquire()
547 struct mtk_ddp *ddp = container_of(mutex, struct mtk_ddp, in mtk_disp_mutex_release() local
550 writel(0, ddp->regs + DISP_REG_MUTEX(mutex->id)); in mtk_disp_mutex_release()
556 struct mtk_ddp *ddp; in mtk_ddp_probe() local
560 ddp = devm_kzalloc(dev, sizeof(*ddp), GFP_KERNEL); in mtk_ddp_probe()
561 if (!ddp) in mtk_ddp_probe()
565 ddp->mutex[i].id = i; in mtk_ddp_probe()
567 ddp->clk = devm_clk_get(dev, NULL); in mtk_ddp_probe()
568 if (IS_ERR(ddp->clk)) { in mtk_ddp_probe()
570 return PTR_ERR(ddp->clk); in mtk_ddp_probe()
574 ddp->regs = devm_ioremap_resource(dev, regs); in mtk_ddp_probe()
575 if (IS_ERR(ddp->regs)) { in mtk_ddp_probe()
577 return PTR_ERR(ddp->regs); in mtk_ddp_probe()
580 ddp->mutex_mod = of_device_get_match_data(dev); in mtk_ddp_probe()
582 platform_set_drvdata(pdev, ddp); in mtk_ddp_probe()