Lines Matching refs:ctx
172 static u32 fimc_read(struct fimc_context *ctx, u32 reg) in fimc_read() argument
174 return readl(ctx->regs + reg); in fimc_read()
177 static void fimc_write(struct fimc_context *ctx, u32 val, u32 reg) in fimc_write() argument
179 writel(val, ctx->regs + reg); in fimc_write()
182 static void fimc_set_bits(struct fimc_context *ctx, u32 reg, u32 bits) in fimc_set_bits() argument
184 void __iomem *r = ctx->regs + reg; in fimc_set_bits()
189 static void fimc_clear_bits(struct fimc_context *ctx, u32 reg, u32 bits) in fimc_clear_bits() argument
191 void __iomem *r = ctx->regs + reg; in fimc_clear_bits()
196 static void fimc_sw_reset(struct fimc_context *ctx) in fimc_sw_reset() argument
201 cfg = fimc_read(ctx, EXYNOS_CISTATUS); in fimc_sw_reset()
203 fimc_clear_bits(ctx, EXYNOS_MSCTRL, EXYNOS_MSCTRL_ENVID); in fimc_sw_reset()
205 fimc_set_bits(ctx, EXYNOS_CISRCFMT, EXYNOS_CISRCFMT_ITU601_8BIT); in fimc_sw_reset()
208 fimc_clear_bits(ctx, EXYNOS_CIIMGCPT, in fimc_sw_reset()
212 fimc_set_bits(ctx, EXYNOS_CIGCTRL, EXYNOS_CIGCTRL_SWRST); in fimc_sw_reset()
215 fimc_clear_bits(ctx, EXYNOS_CIGCTRL, EXYNOS_CIGCTRL_SWRST); in fimc_sw_reset()
218 fimc_write(ctx, 0x0, EXYNOS_CIFCNTSEQ); in fimc_sw_reset()
221 static int fimc_set_camblk_fimd0_wb(struct fimc_context *ctx) in fimc_set_camblk_fimd0_wb() argument
223 return regmap_update_bits(ctx->sysreg, SYSREG_CAMERA_BLK, in fimc_set_camblk_fimd0_wb()
225 ctx->id << SYSREG_FIMD0WB_DEST_SHIFT); in fimc_set_camblk_fimd0_wb()
228 static void fimc_set_type_ctrl(struct fimc_context *ctx, enum fimc_wb wb) in fimc_set_type_ctrl() argument
234 cfg = fimc_read(ctx, EXYNOS_CIGCTRL); in fimc_set_type_ctrl()
260 fimc_write(ctx, cfg, EXYNOS_CIGCTRL); in fimc_set_type_ctrl()
263 static void fimc_set_polarity(struct fimc_context *ctx, in fimc_set_polarity() argument
273 cfg = fimc_read(ctx, EXYNOS_CIGCTRL); in fimc_set_polarity()
286 fimc_write(ctx, cfg, EXYNOS_CIGCTRL); in fimc_set_polarity()
289 static void fimc_handle_jpeg(struct fimc_context *ctx, bool enable) in fimc_handle_jpeg() argument
295 cfg = fimc_read(ctx, EXYNOS_CIGCTRL); in fimc_handle_jpeg()
301 fimc_write(ctx, cfg, EXYNOS_CIGCTRL); in fimc_handle_jpeg()
304 static void fimc_mask_irq(struct fimc_context *ctx, bool enable) in fimc_mask_irq() argument
310 cfg = fimc_read(ctx, EXYNOS_CIGCTRL); in fimc_mask_irq()
316 fimc_write(ctx, cfg, EXYNOS_CIGCTRL); in fimc_mask_irq()
319 static void fimc_clear_irq(struct fimc_context *ctx) in fimc_clear_irq() argument
321 fimc_set_bits(ctx, EXYNOS_CIGCTRL, EXYNOS_CIGCTRL_IRQ_CLR); in fimc_clear_irq()
324 static bool fimc_check_ovf(struct fimc_context *ctx) in fimc_check_ovf() argument
326 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_check_ovf()
329 status = fimc_read(ctx, EXYNOS_CISTATUS); in fimc_check_ovf()
336 fimc_set_bits(ctx, EXYNOS_CIWDOFST, in fimc_check_ovf()
341 ctx->id, status); in fimc_check_ovf()
348 static bool fimc_check_frame_end(struct fimc_context *ctx) in fimc_check_frame_end() argument
352 cfg = fimc_read(ctx, EXYNOS_CISTATUS); in fimc_check_frame_end()
360 fimc_write(ctx, cfg, EXYNOS_CISTATUS); in fimc_check_frame_end()
365 static int fimc_get_buf_id(struct fimc_context *ctx) in fimc_get_buf_id() argument
370 cfg = fimc_read(ctx, EXYNOS_CISTATUS2); in fimc_get_buf_id()
391 static void fimc_handle_lastend(struct fimc_context *ctx, bool enable) in fimc_handle_lastend() argument
397 cfg = fimc_read(ctx, EXYNOS_CIOCTRL); in fimc_handle_lastend()
403 fimc_write(ctx, cfg, EXYNOS_CIOCTRL); in fimc_handle_lastend()
407 static int fimc_src_set_fmt_order(struct fimc_context *ctx, u32 fmt) in fimc_src_set_fmt_order() argument
409 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_src_set_fmt_order()
415 cfg = fimc_read(ctx, EXYNOS_CISCCTRL); in fimc_src_set_fmt_order()
421 fimc_write(ctx, cfg, EXYNOS_CISCCTRL); in fimc_src_set_fmt_order()
426 fimc_write(ctx, cfg, EXYNOS_CISCCTRL); in fimc_src_set_fmt_order()
434 cfg = fimc_read(ctx, EXYNOS_MSCTRL); in fimc_src_set_fmt_order()
473 fimc_write(ctx, cfg, EXYNOS_MSCTRL); in fimc_src_set_fmt_order()
480 struct fimc_context *ctx = get_fimc_context(dev); in fimc_src_set_fmt() local
481 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_src_set_fmt()
486 cfg = fimc_read(ctx, EXYNOS_MSCTRL); in fimc_src_set_fmt()
520 fimc_write(ctx, cfg, EXYNOS_MSCTRL); in fimc_src_set_fmt()
522 cfg = fimc_read(ctx, EXYNOS_CIDMAPARAM); in fimc_src_set_fmt()
527 fimc_write(ctx, cfg, EXYNOS_CIDMAPARAM); in fimc_src_set_fmt()
529 return fimc_src_set_fmt_order(ctx, fmt); in fimc_src_set_fmt()
536 struct fimc_context *ctx = get_fimc_context(dev); in fimc_src_set_transf() local
537 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_src_set_transf()
542 cfg1 = fimc_read(ctx, EXYNOS_MSCTRL); in fimc_src_set_transf()
546 cfg2 = fimc_read(ctx, EXYNOS_CITRGFMT); in fimc_src_set_transf()
585 fimc_write(ctx, cfg1, EXYNOS_MSCTRL); in fimc_src_set_transf()
586 fimc_write(ctx, cfg2, EXYNOS_CITRGFMT); in fimc_src_set_transf()
592 static int fimc_set_window(struct fimc_context *ctx, in fimc_set_window() argument
611 cfg = fimc_read(ctx, EXYNOS_CIWDOFST); in fimc_set_window()
617 fimc_write(ctx, cfg, EXYNOS_CIWDOFST); in fimc_set_window()
621 fimc_write(ctx, cfg, EXYNOS_CIWDOFST2); in fimc_set_window()
629 struct fimc_context *ctx = get_fimc_context(dev); in fimc_src_set_size() local
641 fimc_write(ctx, cfg, EXYNOS_ORGISIZE); in fimc_src_set_size()
653 cfg = fimc_read(ctx, EXYNOS_CIREAL_ISIZE); in fimc_src_set_size()
658 fimc_write(ctx, cfg, EXYNOS_CIREAL_ISIZE); in fimc_src_set_size()
667 fimc_write(ctx, cfg, EXYNOS_CISRCFMT); in fimc_src_set_size()
672 fimc_write(ctx, cfg, EXYNOS_CIIYOFF); in fimc_src_set_size()
675 fimc_write(ctx, cfg, EXYNOS_CIICBOFF); in fimc_src_set_size()
678 fimc_write(ctx, cfg, EXYNOS_CIICROFF); in fimc_src_set_size()
680 return fimc_set_window(ctx, &img_pos, &img_sz); in fimc_src_set_size()
687 struct fimc_context *ctx = get_fimc_context(dev); in fimc_src_set_addr() local
688 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_src_set_addr()
712 fimc_write(ctx, buf_info->base[EXYNOS_DRM_PLANAR_Y], in fimc_src_set_addr()
716 fimc_write(ctx, buf_info->base[EXYNOS_DRM_PLANAR_CR], in fimc_src_set_addr()
718 fimc_write(ctx, buf_info->base[EXYNOS_DRM_PLANAR_CB], in fimc_src_set_addr()
721 fimc_write(ctx, buf_info->base[EXYNOS_DRM_PLANAR_CB], in fimc_src_set_addr()
723 fimc_write(ctx, buf_info->base[EXYNOS_DRM_PLANAR_CR], in fimc_src_set_addr()
728 fimc_write(ctx, 0x0, EXYNOS_CIIYSA0); in fimc_src_set_addr()
729 fimc_write(ctx, 0x0, EXYNOS_CIICBSA0); in fimc_src_set_addr()
730 fimc_write(ctx, 0x0, EXYNOS_CIICRSA0); in fimc_src_set_addr()
747 static int fimc_dst_set_fmt_order(struct fimc_context *ctx, u32 fmt) in fimc_dst_set_fmt_order() argument
749 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_dst_set_fmt_order()
755 cfg = fimc_read(ctx, EXYNOS_CISCCTRL); in fimc_dst_set_fmt_order()
761 fimc_write(ctx, cfg, EXYNOS_CISCCTRL); in fimc_dst_set_fmt_order()
765 fimc_write(ctx, cfg, EXYNOS_CISCCTRL); in fimc_dst_set_fmt_order()
770 fimc_write(ctx, cfg, EXYNOS_CISCCTRL); in fimc_dst_set_fmt_order()
778 cfg = fimc_read(ctx, EXYNOS_CIOCTRL); in fimc_dst_set_fmt_order()
819 fimc_write(ctx, cfg, EXYNOS_CIOCTRL); in fimc_dst_set_fmt_order()
826 struct fimc_context *ctx = get_fimc_context(dev); in fimc_dst_set_fmt() local
827 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_dst_set_fmt()
832 cfg = fimc_read(ctx, EXYNOS_CIEXTEN); in fimc_dst_set_fmt()
836 fimc_write(ctx, cfg, EXYNOS_CIEXTEN); in fimc_dst_set_fmt()
839 fimc_write(ctx, cfg, EXYNOS_CIEXTEN); in fimc_dst_set_fmt()
841 cfg = fimc_read(ctx, EXYNOS_CITRGFMT); in fimc_dst_set_fmt()
873 fimc_write(ctx, cfg, EXYNOS_CITRGFMT); in fimc_dst_set_fmt()
876 cfg = fimc_read(ctx, EXYNOS_CIDMAPARAM); in fimc_dst_set_fmt()
881 fimc_write(ctx, cfg, EXYNOS_CIDMAPARAM); in fimc_dst_set_fmt()
883 return fimc_dst_set_fmt_order(ctx, fmt); in fimc_dst_set_fmt()
890 struct fimc_context *ctx = get_fimc_context(dev); in fimc_dst_set_transf() local
891 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_dst_set_transf()
896 cfg = fimc_read(ctx, EXYNOS_CITRGFMT); in fimc_dst_set_transf()
936 fimc_write(ctx, cfg, EXYNOS_CITRGFMT); in fimc_dst_set_transf()
942 static int fimc_set_prescaler(struct fimc_context *ctx, struct fimc_scaler *sc, in fimc_set_prescaler() argument
945 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_set_prescaler()
952 cfg_ext = fimc_read(ctx, EXYNOS_CITRGFMT); in fimc_set_prescaler()
1001 fimc_write(ctx, cfg, EXYNOS_CISCPRERATIO); in fimc_set_prescaler()
1005 fimc_write(ctx, cfg, EXYNOS_CISCPREDST); in fimc_set_prescaler()
1010 static void fimc_set_scaler(struct fimc_context *ctx, struct fimc_scaler *sc) in fimc_set_scaler() argument
1019 cfg = fimc_read(ctx, EXYNOS_CISCCTRL); in fimc_set_scaler()
1039 fimc_write(ctx, cfg, EXYNOS_CISCCTRL); in fimc_set_scaler()
1041 cfg_ext = fimc_read(ctx, EXYNOS_CIEXTEN); in fimc_set_scaler()
1046 fimc_write(ctx, cfg_ext, EXYNOS_CIEXTEN); in fimc_set_scaler()
1052 struct fimc_context *ctx = get_fimc_context(dev); in fimc_dst_set_size() local
1064 fimc_write(ctx, cfg, EXYNOS_ORGOSIZE); in fimc_dst_set_size()
1069 cfg = fimc_read(ctx, EXYNOS_CIGCTRL); in fimc_dst_set_size()
1077 fimc_write(ctx, cfg, EXYNOS_CIGCTRL); in fimc_dst_set_size()
1087 cfg = fimc_read(ctx, EXYNOS_CITRGFMT); in fimc_dst_set_size()
1092 fimc_write(ctx, cfg, EXYNOS_CITRGFMT); in fimc_dst_set_size()
1096 fimc_write(ctx, cfg, EXYNOS_CITAREA); in fimc_dst_set_size()
1101 fimc_write(ctx, cfg, EXYNOS_CIOYOFF); in fimc_dst_set_size()
1104 fimc_write(ctx, cfg, EXYNOS_CIOCBOFF); in fimc_dst_set_size()
1107 fimc_write(ctx, cfg, EXYNOS_CIOCROFF); in fimc_dst_set_size()
1112 static void fimc_dst_set_buf_seq(struct fimc_context *ctx, u32 buf_id, in fimc_dst_set_buf_seq() argument
1121 spin_lock_irqsave(&ctx->lock, flags); in fimc_dst_set_buf_seq()
1123 cfg = fimc_read(ctx, EXYNOS_CIFCNTSEQ); in fimc_dst_set_buf_seq()
1130 fimc_write(ctx, cfg, EXYNOS_CIFCNTSEQ); in fimc_dst_set_buf_seq()
1135 fimc_mask_irq(ctx, true); in fimc_dst_set_buf_seq()
1137 fimc_mask_irq(ctx, false); in fimc_dst_set_buf_seq()
1139 spin_unlock_irqrestore(&ctx->lock, flags); in fimc_dst_set_buf_seq()
1146 struct fimc_context *ctx = get_fimc_context(dev); in fimc_dst_set_addr() local
1147 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_dst_set_addr()
1172 fimc_write(ctx, buf_info->base[EXYNOS_DRM_PLANAR_Y], in fimc_dst_set_addr()
1176 fimc_write(ctx, buf_info->base[EXYNOS_DRM_PLANAR_CR], in fimc_dst_set_addr()
1178 fimc_write(ctx, buf_info->base[EXYNOS_DRM_PLANAR_CB], in fimc_dst_set_addr()
1181 fimc_write(ctx, buf_info->base[EXYNOS_DRM_PLANAR_CB], in fimc_dst_set_addr()
1183 fimc_write(ctx, buf_info->base[EXYNOS_DRM_PLANAR_CR], in fimc_dst_set_addr()
1188 fimc_write(ctx, 0x0, EXYNOS_CIOYSA(buf_id)); in fimc_dst_set_addr()
1189 fimc_write(ctx, 0x0, EXYNOS_CIOCBSA(buf_id)); in fimc_dst_set_addr()
1190 fimc_write(ctx, 0x0, EXYNOS_CIOCRSA(buf_id)); in fimc_dst_set_addr()
1197 fimc_dst_set_buf_seq(ctx, buf_id, buf_type); in fimc_dst_set_addr()
1209 static int fimc_clk_ctrl(struct fimc_context *ctx, bool enable) in fimc_clk_ctrl() argument
1214 clk_prepare_enable(ctx->clocks[FIMC_CLK_GATE]); in fimc_clk_ctrl()
1215 clk_prepare_enable(ctx->clocks[FIMC_CLK_WB_A]); in fimc_clk_ctrl()
1216 ctx->suspended = false; in fimc_clk_ctrl()
1218 clk_disable_unprepare(ctx->clocks[FIMC_CLK_GATE]); in fimc_clk_ctrl()
1219 clk_disable_unprepare(ctx->clocks[FIMC_CLK_WB_A]); in fimc_clk_ctrl()
1220 ctx->suspended = true; in fimc_clk_ctrl()
1228 struct fimc_context *ctx = dev_id; in fimc_irq_handler() local
1229 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_irq_handler()
1235 DRM_DEBUG_KMS("fimc id[%d]\n", ctx->id); in fimc_irq_handler()
1237 fimc_clear_irq(ctx); in fimc_irq_handler()
1238 if (fimc_check_ovf(ctx)) in fimc_irq_handler()
1241 if (!fimc_check_frame_end(ctx)) in fimc_irq_handler()
1244 buf_id = fimc_get_buf_id(ctx); in fimc_irq_handler()
1250 fimc_dst_set_buf_seq(ctx, buf_id, IPP_BUF_DEQUEUE); in fimc_irq_handler()
1306 struct fimc_context *ctx = get_fimc_context(dev); in fimc_ippdrv_check_property() local
1307 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_ippdrv_check_property()
1416 static void fimc_clear_addr(struct fimc_context *ctx) in fimc_clear_addr() argument
1421 fimc_write(ctx, 0, EXYNOS_CIIYSA(i)); in fimc_clear_addr()
1422 fimc_write(ctx, 0, EXYNOS_CIICBSA(i)); in fimc_clear_addr()
1423 fimc_write(ctx, 0, EXYNOS_CIICRSA(i)); in fimc_clear_addr()
1427 fimc_write(ctx, 0, EXYNOS_CIOYSA(i)); in fimc_clear_addr()
1428 fimc_write(ctx, 0, EXYNOS_CIOCBSA(i)); in fimc_clear_addr()
1429 fimc_write(ctx, 0, EXYNOS_CIOCRSA(i)); in fimc_clear_addr()
1435 struct fimc_context *ctx = get_fimc_context(dev); in fimc_ippdrv_reset() local
1438 fimc_sw_reset(ctx); in fimc_ippdrv_reset()
1441 memset(&ctx->sc, 0x0, sizeof(ctx->sc)); in fimc_ippdrv_reset()
1443 fimc_clear_addr(ctx); in fimc_ippdrv_reset()
1450 struct fimc_context *ctx = get_fimc_context(dev); in fimc_ippdrv_start() local
1451 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_ippdrv_start()
1469 fimc_mask_irq(ctx, true); in fimc_ippdrv_start()
1476 ret = fimc_set_prescaler(ctx, &ctx->sc, in fimc_ippdrv_start()
1485 fimc_handle_jpeg(ctx, false); in fimc_ippdrv_start()
1486 fimc_set_scaler(ctx, &ctx->sc); in fimc_ippdrv_start()
1487 fimc_set_polarity(ctx, &ctx->pol); in fimc_ippdrv_start()
1491 fimc_set_type_ctrl(ctx, FIMC_WB_NONE); in fimc_ippdrv_start()
1492 fimc_handle_lastend(ctx, false); in fimc_ippdrv_start()
1495 cfg0 = fimc_read(ctx, EXYNOS_MSCTRL); in fimc_ippdrv_start()
1498 fimc_write(ctx, cfg0, EXYNOS_MSCTRL); in fimc_ippdrv_start()
1501 fimc_set_type_ctrl(ctx, FIMC_WB_A); in fimc_ippdrv_start()
1502 fimc_handle_lastend(ctx, true); in fimc_ippdrv_start()
1505 ret = fimc_set_camblk_fimd0_wb(ctx); in fimc_ippdrv_start()
1523 fimc_write(ctx, 0x0, EXYNOS_CISTATUS); in fimc_ippdrv_start()
1525 cfg0 = fimc_read(ctx, EXYNOS_CIIMGCPT); in fimc_ippdrv_start()
1530 cfg1 = fimc_read(ctx, EXYNOS_CISCCTRL); in fimc_ippdrv_start()
1535 fimc_write(ctx, cfg1, EXYNOS_CISCCTRL); in fimc_ippdrv_start()
1539 fimc_write(ctx, cfg0, EXYNOS_CIIMGCPT); in fimc_ippdrv_start()
1542 fimc_clear_bits(ctx, EXYNOS_CIGCTRL, EXYNOS_CIGCTRL_IRQ_END_DISABLE); in fimc_ippdrv_start()
1544 fimc_clear_bits(ctx, EXYNOS_CIOCTRL, EXYNOS_CIOCTRL_WEAVE_MASK); in fimc_ippdrv_start()
1547 fimc_set_bits(ctx, EXYNOS_MSCTRL, EXYNOS_MSCTRL_ENVID); in fimc_ippdrv_start()
1554 struct fimc_context *ctx = get_fimc_context(dev); in fimc_ippdrv_stop() local
1563 cfg = fimc_read(ctx, EXYNOS_MSCTRL); in fimc_ippdrv_stop()
1566 fimc_write(ctx, cfg, EXYNOS_MSCTRL); in fimc_ippdrv_stop()
1577 fimc_mask_irq(ctx, false); in fimc_ippdrv_stop()
1580 fimc_write(ctx, 0x0, EXYNOS_CIFCNTSEQ); in fimc_ippdrv_stop()
1583 fimc_clear_bits(ctx, EXYNOS_CISCCTRL, EXYNOS_CISCCTRL_SCALERSTART); in fimc_ippdrv_stop()
1586 fimc_clear_bits(ctx, EXYNOS_CIIMGCPT, in fimc_ippdrv_stop()
1590 fimc_set_bits(ctx, EXYNOS_CIGCTRL, EXYNOS_CIGCTRL_IRQ_END_DISABLE); in fimc_ippdrv_stop()
1593 static void fimc_put_clocks(struct fimc_context *ctx) in fimc_put_clocks() argument
1598 if (IS_ERR(ctx->clocks[i])) in fimc_put_clocks()
1600 clk_put(ctx->clocks[i]); in fimc_put_clocks()
1601 ctx->clocks[i] = ERR_PTR(-EINVAL); in fimc_put_clocks()
1605 static int fimc_setup_clocks(struct fimc_context *ctx) in fimc_setup_clocks() argument
1607 struct device *fimc_dev = ctx->ippdrv.dev; in fimc_setup_clocks()
1612 ctx->clocks[i] = ERR_PTR(-EINVAL); in fimc_setup_clocks()
1620 ctx->clocks[i] = clk_get(dev, fimc_clock_names[i]); in fimc_setup_clocks()
1621 if (IS_ERR(ctx->clocks[i])) { in fimc_setup_clocks()
1624 ret = PTR_ERR(ctx->clocks[i]); in fimc_setup_clocks()
1632 if (!IS_ERR(ctx->clocks[FIMC_CLK_PARENT])) { in fimc_setup_clocks()
1633 ret = clk_set_parent(ctx->clocks[FIMC_CLK_MUX], in fimc_setup_clocks()
1634 ctx->clocks[FIMC_CLK_PARENT]); in fimc_setup_clocks()
1641 ret = clk_set_rate(ctx->clocks[FIMC_CLK_LCLK], ctx->clk_frequency); in fimc_setup_clocks()
1645 ret = clk_prepare_enable(ctx->clocks[FIMC_CLK_LCLK]); in fimc_setup_clocks()
1649 fimc_put_clocks(ctx); in fimc_setup_clocks()
1653 static int fimc_parse_dt(struct fimc_context *ctx) in fimc_parse_dt() argument
1655 struct device_node *node = ctx->ippdrv.dev->of_node; in fimc_parse_dt()
1662 &ctx->clk_frequency)) in fimc_parse_dt()
1663 ctx->clk_frequency = FIMC_DEFAULT_LCLK_FREQUENCY; in fimc_parse_dt()
1665 ctx->id = of_alias_get_id(node, "fimc"); in fimc_parse_dt()
1667 if (ctx->id < 0) { in fimc_parse_dt()
1668 dev_err(ctx->ippdrv.dev, "failed to get node alias id.\n"); in fimc_parse_dt()
1678 struct fimc_context *ctx; in fimc_probe() local
1688 ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); in fimc_probe()
1689 if (!ctx) in fimc_probe()
1692 ctx->ippdrv.dev = dev; in fimc_probe()
1694 ret = fimc_parse_dt(ctx); in fimc_probe()
1698 ctx->sysreg = syscon_regmap_lookup_by_phandle(dev->of_node, in fimc_probe()
1700 if (IS_ERR(ctx->sysreg)) { in fimc_probe()
1702 return PTR_ERR(ctx->sysreg); in fimc_probe()
1706 ctx->regs_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); in fimc_probe()
1707 ctx->regs = devm_ioremap_resource(dev, ctx->regs_res); in fimc_probe()
1708 if (IS_ERR(ctx->regs)) in fimc_probe()
1709 return PTR_ERR(ctx->regs); in fimc_probe()
1718 ctx->irq = res->start; in fimc_probe()
1719 ret = devm_request_threaded_irq(dev, ctx->irq, NULL, fimc_irq_handler, in fimc_probe()
1720 IRQF_ONESHOT, "drm_fimc", ctx); in fimc_probe()
1726 ret = fimc_setup_clocks(ctx); in fimc_probe()
1730 ippdrv = &ctx->ippdrv; in fimc_probe()
1743 DRM_DEBUG_KMS("id[%d]ippdrv[0x%x]\n", ctx->id, (int)ippdrv); in fimc_probe()
1745 spin_lock_init(&ctx->lock); in fimc_probe()
1746 platform_set_drvdata(pdev, ctx); in fimc_probe()
1764 fimc_put_clocks(ctx); in fimc_probe()
1772 struct fimc_context *ctx = get_fimc_context(dev); in fimc_remove() local
1773 struct exynos_drm_ippdrv *ippdrv = &ctx->ippdrv; in fimc_remove()
1777 fimc_put_clocks(ctx); in fimc_remove()
1787 struct fimc_context *ctx = get_fimc_context(dev); in fimc_suspend() local
1789 DRM_DEBUG_KMS("id[%d]\n", ctx->id); in fimc_suspend()
1794 return fimc_clk_ctrl(ctx, false); in fimc_suspend()
1799 struct fimc_context *ctx = get_fimc_context(dev); in fimc_resume() local
1801 DRM_DEBUG_KMS("id[%d]\n", ctx->id); in fimc_resume()
1804 return fimc_clk_ctrl(ctx, true); in fimc_resume()
1813 struct fimc_context *ctx = get_fimc_context(dev); in fimc_runtime_suspend() local
1815 DRM_DEBUG_KMS("id[%d]\n", ctx->id); in fimc_runtime_suspend()
1817 return fimc_clk_ctrl(ctx, false); in fimc_runtime_suspend()
1822 struct fimc_context *ctx = get_fimc_context(dev); in fimc_runtime_resume() local
1824 DRM_DEBUG_KMS("id[%d]\n", ctx->id); in fimc_runtime_resume()
1826 return fimc_clk_ctrl(ctx, true); in fimc_runtime_resume()