Lines Matching refs:mtx

816 	struct mtk_mutex_ctx *mtx = dev_get_drvdata(dev);  in mtk_mutex_get()  local
820 if (!mtx->mutex[i].claimed) { in mtk_mutex_get()
821 mtx->mutex[i].claimed = true; in mtk_mutex_get()
822 return &mtx->mutex[i]; in mtk_mutex_get()
831 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_put() local
834 WARN_ON(&mtx->mutex[mutex->id] != mutex); in mtk_mutex_put()
842 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_prepare() local
844 return clk_prepare_enable(mtx->clk); in mtk_mutex_prepare()
850 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_unprepare() local
852 clk_disable_unprepare(mtx->clk); in mtk_mutex_unprepare()
859 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_add_comp() local
865 WARN_ON(&mtx->mutex[mutex->id] != mutex); in mtk_mutex_add_comp()
893 if (mtx->data->mutex_mod[id] < 32) { in mtk_mutex_add_comp()
894 offset = DISP_REG_MUTEX_MOD(mtx->data->mutex_mod_reg, in mtk_mutex_add_comp()
896 reg = readl_relaxed(mtx->regs + offset); in mtk_mutex_add_comp()
897 reg |= 1 << mtx->data->mutex_mod[id]; in mtk_mutex_add_comp()
898 writel_relaxed(reg, mtx->regs + offset); in mtk_mutex_add_comp()
901 reg = readl_relaxed(mtx->regs + offset); in mtk_mutex_add_comp()
902 reg |= 1 << (mtx->data->mutex_mod[id] - 32); in mtk_mutex_add_comp()
903 writel_relaxed(reg, mtx->regs + offset); in mtk_mutex_add_comp()
908 writel_relaxed(mtx->data->mutex_sof[sof_id], in mtk_mutex_add_comp()
909 mtx->regs + in mtk_mutex_add_comp()
910 DISP_REG_MUTEX_SOF(mtx->data->mutex_sof_reg, mutex->id)); in mtk_mutex_add_comp()
917 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_remove_comp() local
922 WARN_ON(&mtx->mutex[mutex->id] != mutex); in mtk_mutex_remove_comp()
934 mtx->regs + in mtk_mutex_remove_comp()
935 DISP_REG_MUTEX_SOF(mtx->data->mutex_sof_reg, in mtk_mutex_remove_comp()
939 if (mtx->data->mutex_mod[id] < 32) { in mtk_mutex_remove_comp()
940 offset = DISP_REG_MUTEX_MOD(mtx->data->mutex_mod_reg, in mtk_mutex_remove_comp()
942 reg = readl_relaxed(mtx->regs + offset); in mtk_mutex_remove_comp()
943 reg &= ~(1 << mtx->data->mutex_mod[id]); in mtk_mutex_remove_comp()
944 writel_relaxed(reg, mtx->regs + offset); in mtk_mutex_remove_comp()
947 reg = readl_relaxed(mtx->regs + offset); in mtk_mutex_remove_comp()
948 reg &= ~(1 << (mtx->data->mutex_mod[id] - 32)); in mtk_mutex_remove_comp()
949 writel_relaxed(reg, mtx->regs + offset); in mtk_mutex_remove_comp()
958 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_enable() local
961 WARN_ON(&mtx->mutex[mutex->id] != mutex); in mtk_mutex_enable()
963 writel(1, mtx->regs + DISP_REG_MUTEX_EN(mutex->id)); in mtk_mutex_enable()
969 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_enable_by_cmdq() local
973 WARN_ON(&mtx->mutex[mutex->id] != mutex); in mtk_mutex_enable_by_cmdq()
975 if (!mtx->cmdq_reg.size) { in mtk_mutex_enable_by_cmdq()
976 dev_err(mtx->dev, "mediatek,gce-client-reg hasn't been set"); in mtk_mutex_enable_by_cmdq()
980 cmdq_pkt_write(cmdq_pkt, mtx->cmdq_reg.subsys, in mtk_mutex_enable_by_cmdq()
981 mtx->addr + DISP_REG_MUTEX_EN(mutex->id), 1); in mtk_mutex_enable_by_cmdq()
988 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_disable() local
991 WARN_ON(&mtx->mutex[mutex->id] != mutex); in mtk_mutex_disable()
993 writel(0, mtx->regs + DISP_REG_MUTEX_EN(mutex->id)); in mtk_mutex_disable()
999 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_acquire() local
1003 writel(1, mtx->regs + DISP_REG_MUTEX_EN(mutex->id)); in mtk_mutex_acquire()
1004 writel(1, mtx->regs + DISP_REG_MUTEX(mutex->id)); in mtk_mutex_acquire()
1005 if (readl_poll_timeout_atomic(mtx->regs + DISP_REG_MUTEX(mutex->id), in mtk_mutex_acquire()
1013 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_release() local
1016 writel(0, mtx->regs + DISP_REG_MUTEX(mutex->id)); in mtk_mutex_release()
1023 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_write_mod() local
1028 WARN_ON(&mtx->mutex[mutex->id] != mutex); in mtk_mutex_write_mod()
1032 dev_err(mtx->dev, "Not supported MOD table index : %d", idx); in mtk_mutex_write_mod()
1048 if (mtx->data->mutex_table_mod[idx] < 32) { in mtk_mutex_write_mod()
1049 reg_offset = DISP_REG_MUTEX_MOD(mtx->data->mutex_mod_reg, in mtk_mutex_write_mod()
1052 reg_offset = DISP_REG_MUTEX_MOD1(mtx->data->mutex_mod_reg, in mtk_mutex_write_mod()
1057 reg = readl_relaxed(mtx->regs + reg_offset); in mtk_mutex_write_mod()
1059 reg &= ~BIT(mtx->data->mutex_table_mod[idx] - id_offset); in mtk_mutex_write_mod()
1061 reg |= BIT(mtx->data->mutex_table_mod[idx] - id_offset); in mtk_mutex_write_mod()
1063 writel_relaxed(reg, mtx->regs + reg_offset); in mtk_mutex_write_mod()
1072 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_write_sof() local
1075 WARN_ON(&mtx->mutex[mutex->id] != mutex); in mtk_mutex_write_sof()
1079 dev_err(mtx->dev, "Not supported SOF index : %d", idx); in mtk_mutex_write_sof()
1083 writel_relaxed(idx, mtx->regs + in mtk_mutex_write_sof()
1084 DISP_REG_MUTEX_SOF(mtx->data->mutex_sof_reg, mutex->id)); in mtk_mutex_write_sof()
1093 struct mtk_mutex_ctx *mtx; in mtk_mutex_probe() local
1097 mtx = devm_kzalloc(dev, sizeof(*mtx), GFP_KERNEL); in mtk_mutex_probe()
1098 if (!mtx) in mtk_mutex_probe()
1102 mtx->mutex[i].id = i; in mtk_mutex_probe()
1104 mtx->data = of_device_get_match_data(dev); in mtk_mutex_probe()
1106 if (!mtx->data->no_clk) { in mtk_mutex_probe()
1107 mtx->clk = devm_clk_get(dev, NULL); in mtk_mutex_probe()
1108 if (IS_ERR(mtx->clk)) in mtk_mutex_probe()
1109 return dev_err_probe(dev, PTR_ERR(mtx->clk), "Failed to get clock\n"); in mtk_mutex_probe()
1112 mtx->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &regs); in mtk_mutex_probe()
1113 if (IS_ERR(mtx->regs)) { in mtk_mutex_probe()
1115 return PTR_ERR(mtx->regs); in mtk_mutex_probe()
1117 mtx->addr = regs->start; in mtk_mutex_probe()
1120 ret = cmdq_dev_get_client_reg(dev, &mtx->cmdq_reg, 0); in mtk_mutex_probe()
1124 platform_set_drvdata(pdev, mtx); in mtk_mutex_probe()