Lines Matching refs:ctx

83 #define gsc_read(offset)		readl(ctx->regs + (offset))
84 #define gsc_write(cfg, offset) writel(cfg, ctx->regs + (offset))
398 static int gsc_sw_reset(struct gsc_context *ctx) in gsc_sw_reset() argument
438 static void gsc_set_gscblk_fimd_wb(struct gsc_context *ctx, bool enable) in gsc_set_gscblk_fimd_wb() argument
445 gscblk_cfg |= GSC_BLK_DISP1WB_DEST(ctx->id) | in gsc_set_gscblk_fimd_wb()
446 GSC_BLK_GSCL_WB_IN_SRC_SEL(ctx->id) | in gsc_set_gscblk_fimd_wb()
447 GSC_BLK_SW_RESET_WB_DEST(ctx->id); in gsc_set_gscblk_fimd_wb()
449 gscblk_cfg |= GSC_BLK_PXLASYNC_LO_MASK_WB(ctx->id); in gsc_set_gscblk_fimd_wb()
454 static void gsc_handle_irq(struct gsc_context *ctx, bool enable, in gsc_handle_irq() argument
486 struct gsc_context *ctx = get_gsc_context(dev); in gsc_src_set_fmt() local
487 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_src_set_fmt()
559 struct gsc_context *ctx = get_gsc_context(dev); in gsc_src_set_transf() local
560 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_src_set_transf()
604 ctx->rotation = (cfg & GSC_IN_ROT_90) ? 1 : 0; in gsc_src_set_transf()
605 *swap = ctx->rotation; in gsc_src_set_transf()
613 struct gsc_context *ctx = get_gsc_context(dev); in gsc_src_set_size() local
615 struct gsc_scaler *sc = &ctx->sc; in gsc_src_set_size()
669 static int gsc_src_set_buf_seq(struct gsc_context *ctx, u32 buf_id, in gsc_src_set_buf_seq() argument
672 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_src_set_buf_seq()
708 struct gsc_context *ctx = get_gsc_context(dev); in gsc_src_set_addr() local
709 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_src_set_addr()
748 return gsc_src_set_buf_seq(ctx, buf_id, buf_type); in gsc_src_set_addr()
760 struct gsc_context *ctx = get_gsc_context(dev); in gsc_dst_set_fmt() local
761 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_dst_set_fmt()
830 struct gsc_context *ctx = get_gsc_context(dev); in gsc_dst_set_transf() local
831 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_dst_set_transf()
875 ctx->rotation = (cfg & GSC_IN_ROT_90) ? 1 : 0; in gsc_dst_set_transf()
876 *swap = ctx->rotation; in gsc_dst_set_transf()
915 static int gsc_set_prescaler(struct gsc_context *ctx, struct gsc_scaler *sc, in gsc_set_prescaler() argument
918 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_set_prescaler()
926 if (ctx->rotation) { in gsc_set_prescaler()
968 static void gsc_set_h_coef(struct gsc_context *ctx, unsigned long main_hratio) in gsc_set_h_coef() argument
994 static void gsc_set_v_coef(struct gsc_context *ctx, unsigned long main_vratio) in gsc_set_v_coef() argument
1020 static void gsc_set_scaler(struct gsc_context *ctx, struct gsc_scaler *sc) in gsc_set_scaler() argument
1027 gsc_set_h_coef(ctx, sc->main_hratio); in gsc_set_scaler()
1031 gsc_set_v_coef(ctx, sc->main_vratio); in gsc_set_scaler()
1039 struct gsc_context *ctx = get_gsc_context(dev); in gsc_dst_set_size() local
1041 struct gsc_scaler *sc = &ctx->sc; in gsc_dst_set_size()
1092 static int gsc_dst_get_buf_seq(struct gsc_context *ctx) in gsc_dst_get_buf_seq() argument
1108 static int gsc_dst_set_buf_seq(struct gsc_context *ctx, u32 buf_id, in gsc_dst_set_buf_seq() argument
1111 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_dst_set_buf_seq()
1119 mutex_lock(&ctx->lock); in gsc_dst_set_buf_seq()
1146 gsc_dst_get_buf_seq(ctx) >= GSC_BUF_START) in gsc_dst_set_buf_seq()
1147 gsc_handle_irq(ctx, true, false, true); in gsc_dst_set_buf_seq()
1151 gsc_dst_get_buf_seq(ctx) <= GSC_BUF_STOP) in gsc_dst_set_buf_seq()
1152 gsc_handle_irq(ctx, false, false, true); in gsc_dst_set_buf_seq()
1155 mutex_unlock(&ctx->lock); in gsc_dst_set_buf_seq()
1163 struct gsc_context *ctx = get_gsc_context(dev); in gsc_dst_set_addr() local
1164 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_dst_set_addr()
1203 return gsc_dst_set_buf_seq(ctx, buf_id, buf_type); in gsc_dst_set_addr()
1213 static int gsc_clk_ctrl(struct gsc_context *ctx, bool enable) in gsc_clk_ctrl() argument
1218 clk_enable(ctx->gsc_clk); in gsc_clk_ctrl()
1219 ctx->suspended = false; in gsc_clk_ctrl()
1221 clk_disable(ctx->gsc_clk); in gsc_clk_ctrl()
1222 ctx->suspended = true; in gsc_clk_ctrl()
1228 static int gsc_get_src_buf_index(struct gsc_context *ctx) in gsc_get_src_buf_index() argument
1234 DRM_DEBUG_KMS("gsc id[%d]\n", ctx->id); in gsc_get_src_buf_index()
1251 ret = gsc_src_set_buf_seq(ctx, buf_id, IPP_BUF_DEQUEUE); in gsc_get_src_buf_index()
1263 static int gsc_get_dst_buf_index(struct gsc_context *ctx) in gsc_get_dst_buf_index() argument
1269 DRM_DEBUG_KMS("gsc id[%d]\n", ctx->id); in gsc_get_dst_buf_index()
1286 ret = gsc_dst_set_buf_seq(ctx, buf_id, IPP_BUF_DEQUEUE); in gsc_get_dst_buf_index()
1300 struct gsc_context *ctx = dev_id; in gsc_irq_handler() local
1301 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_irq_handler()
1308 DRM_DEBUG_KMS("gsc id[%d]\n", ctx->id); in gsc_irq_handler()
1313 ctx->id, status); in gsc_irq_handler()
1319 ctx->id, status); in gsc_irq_handler()
1321 buf_id[EXYNOS_DRM_OPS_SRC] = gsc_get_src_buf_index(ctx); in gsc_irq_handler()
1325 buf_id[EXYNOS_DRM_OPS_DST] = gsc_get_dst_buf_index(ctx); in gsc_irq_handler()
1389 struct gsc_context *ctx = get_gsc_context(dev); in gsc_ippdrv_check_property() local
1390 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_ippdrv_check_property()
1502 struct gsc_context *ctx = get_gsc_context(dev); in gsc_ippdrv_reset() local
1503 struct gsc_scaler *sc = &ctx->sc; in gsc_ippdrv_reset()
1507 ret = gsc_sw_reset(ctx); in gsc_ippdrv_reset()
1514 memset(&ctx->sc, 0x0, sizeof(ctx->sc)); in gsc_ippdrv_reset()
1522 struct gsc_context *ctx = get_gsc_context(dev); in gsc_ippdrv_start() local
1523 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_ippdrv_start()
1541 gsc_handle_irq(ctx, true, false, true); in gsc_ippdrv_start()
1571 gsc_set_gscblk_fimd_wb(ctx, set_wb.enable); in gsc_ippdrv_start()
1603 ret = gsc_set_prescaler(ctx, &ctx->sc, in gsc_ippdrv_start()
1611 gsc_set_scaler(ctx, &ctx->sc); in gsc_ippdrv_start()
1622 struct gsc_context *ctx = get_gsc_context(dev); in gsc_ippdrv_stop() local
1633 gsc_set_gscblk_fimd_wb(ctx, set_wb.enable); in gsc_ippdrv_stop()
1642 gsc_handle_irq(ctx, false, false, true); in gsc_ippdrv_stop()
1657 struct gsc_context *ctx; in gsc_probe() local
1662 ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); in gsc_probe()
1663 if (!ctx) in gsc_probe()
1667 ctx->gsc_clk = devm_clk_get(dev, "gscl"); in gsc_probe()
1668 if (IS_ERR(ctx->gsc_clk)) { in gsc_probe()
1670 return PTR_ERR(ctx->gsc_clk); in gsc_probe()
1674 ctx->regs_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); in gsc_probe()
1675 ctx->regs = devm_ioremap_resource(dev, ctx->regs_res); in gsc_probe()
1676 if (IS_ERR(ctx->regs)) in gsc_probe()
1677 return PTR_ERR(ctx->regs); in gsc_probe()
1686 ctx->irq = res->start; in gsc_probe()
1687 ret = devm_request_threaded_irq(dev, ctx->irq, NULL, gsc_irq_handler, in gsc_probe()
1688 IRQF_ONESHOT, "drm_gsc", ctx); in gsc_probe()
1695 ctx->id = pdev->id; in gsc_probe()
1697 ippdrv = &ctx->ippdrv; in gsc_probe()
1711 DRM_DEBUG_KMS("id[%d]ippdrv[0x%x]\n", ctx->id, (int)ippdrv); in gsc_probe()
1713 mutex_init(&ctx->lock); in gsc_probe()
1714 platform_set_drvdata(pdev, ctx); in gsc_probe()
1737 struct gsc_context *ctx = get_gsc_context(dev); in gsc_remove() local
1738 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in gsc_remove()
1741 mutex_destroy(&ctx->lock); in gsc_remove()
1752 struct gsc_context *ctx = get_gsc_context(dev); in gsc_suspend() local
1754 DRM_DEBUG_KMS("id[%d]\n", ctx->id); in gsc_suspend()
1759 return gsc_clk_ctrl(ctx, false); in gsc_suspend()
1764 struct gsc_context *ctx = get_gsc_context(dev); in gsc_resume() local
1766 DRM_DEBUG_KMS("id[%d]\n", ctx->id); in gsc_resume()
1769 return gsc_clk_ctrl(ctx, true); in gsc_resume()
1778 struct gsc_context *ctx = get_gsc_context(dev); in gsc_runtime_suspend() local
1780 DRM_DEBUG_KMS("id[%d]\n", ctx->id); in gsc_runtime_suspend()
1782 return gsc_clk_ctrl(ctx, false); in gsc_runtime_suspend()
1787 struct gsc_context *ctx = get_gsc_context(dev); in gsc_runtime_resume() local
1789 DRM_DEBUG_KMS("id[%d]\n", ctx->id); in gsc_runtime_resume()
1791 return gsc_clk_ctrl(ctx, true); in gsc_runtime_resume()