Lines Matching refs:mtx

718 	struct mtk_mutex_ctx *mtx = dev_get_drvdata(dev);
722 if (!mtx->mutex[i].claimed) {
723 mtx->mutex[i].claimed = true;
724 return &mtx->mutex[i];
733 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
736 WARN_ON(&mtx->mutex[mutex->id] != mutex);
744 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
746 return clk_prepare_enable(mtx->clk);
752 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
754 clk_disable_unprepare(mtx->clk);
761 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
767 WARN_ON(&mtx->mutex[mutex->id] != mutex);
795 if (mtx->data->mutex_mod[id] < 32) {
796 offset = DISP_REG_MUTEX_MOD(mtx->data->mutex_mod_reg,
798 reg = readl_relaxed(mtx->regs + offset);
799 reg |= 1 << mtx->data->mutex_mod[id];
800 writel_relaxed(reg, mtx->regs + offset);
803 reg = readl_relaxed(mtx->regs + offset);
804 reg |= 1 << (mtx->data->mutex_mod[id] - 32);
805 writel_relaxed(reg, mtx->regs + offset);
810 writel_relaxed(mtx->data->mutex_sof[sof_id],
811 mtx->regs +
812 DISP_REG_MUTEX_SOF(mtx->data->mutex_sof_reg, mutex->id));
819 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
824 WARN_ON(&mtx->mutex[mutex->id] != mutex);
836 mtx->regs +
837 DISP_REG_MUTEX_SOF(mtx->data->mutex_sof_reg,
841 if (mtx->data->mutex_mod[id] < 32) {
842 offset = DISP_REG_MUTEX_MOD(mtx->data->mutex_mod_reg,
844 reg = readl_relaxed(mtx->regs + offset);
845 reg &= ~(1 << mtx->data->mutex_mod[id]);
846 writel_relaxed(reg, mtx->regs + offset);
849 reg = readl_relaxed(mtx->regs + offset);
850 reg &= ~(1 << (mtx->data->mutex_mod[id] - 32));
851 writel_relaxed(reg, mtx->regs + offset);
860 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
863 WARN_ON(&mtx->mutex[mutex->id] != mutex);
865 writel(1, mtx->regs + DISP_REG_MUTEX_EN(mutex->id));
871 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
875 WARN_ON(&mtx->mutex[mutex->id] != mutex);
877 if (!mtx->cmdq_reg.size) {
878 dev_err(mtx->dev, "mediatek,gce-client-reg hasn't been set");
882 cmdq_pkt_write(cmdq_pkt, mtx->cmdq_reg.subsys,
883 mtx->addr + DISP_REG_MUTEX_EN(mutex->id), 1);
890 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
893 WARN_ON(&mtx->mutex[mutex->id] != mutex);
895 writel(0, mtx->regs + DISP_REG_MUTEX_EN(mutex->id));
901 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
905 writel(1, mtx->regs + DISP_REG_MUTEX_EN(mutex->id));
906 writel(1, mtx->regs + DISP_REG_MUTEX(mutex->id));
907 if (readl_poll_timeout_atomic(mtx->regs + DISP_REG_MUTEX(mutex->id),
915 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
918 writel(0, mtx->regs + DISP_REG_MUTEX(mutex->id));
925 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
930 WARN_ON(&mtx->mutex[mutex->id] != mutex);
934 dev_err(mtx->dev, "Not supported MOD table index : %d", idx);
950 if (mtx->data->mutex_table_mod[idx] < 32) {
951 reg_offset = DISP_REG_MUTEX_MOD(mtx->data->mutex_mod_reg,
954 reg_offset = DISP_REG_MUTEX_MOD1(mtx->data->mutex_mod_reg,
959 reg = readl_relaxed(mtx->regs + reg_offset);
961 reg &= ~BIT(mtx->data->mutex_table_mod[idx] - id_offset);
963 reg |= BIT(mtx->data->mutex_table_mod[idx] - id_offset);
965 writel_relaxed(reg, mtx->regs + reg_offset);
974 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx,
977 WARN_ON(&mtx->mutex[mutex->id] != mutex);
981 dev_err(mtx->dev, "Not supported SOF index : %d", idx);
985 writel_relaxed(idx, mtx->regs +
986 DISP_REG_MUTEX_SOF(mtx->data->mutex_sof_reg, mutex->id));
995 struct mtk_mutex_ctx *mtx;
999 mtx = devm_kzalloc(dev, sizeof(*mtx), GFP_KERNEL);
1000 if (!mtx)
1004 mtx->mutex[i].id = i;
1006 mtx->data = of_device_get_match_data(dev);
1008 if (!mtx->data->no_clk) {
1009 mtx->clk = devm_clk_get(dev, NULL);
1010 if (IS_ERR(mtx->clk))
1011 return dev_err_probe(dev, PTR_ERR(mtx->clk), "Failed to get clock\n");
1014 mtx->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &regs);
1015 if (IS_ERR(mtx->regs)) {
1017 return PTR_ERR(mtx->regs);
1019 mtx->addr = regs->start;
1022 ret = cmdq_dev_get_client_reg(dev, &mtx->cmdq_reg, 0);
1026 platform_set_drvdata(pdev, mtx);