Lines Matching full:isp
5 * TI OMAP3 ISP - CCDC module
24 #include "isp.h"
58 * @ccdc: Pointer to ISP CCDC device.
62 #define CCDC_PRINT_REGISTER(isp, name)\ argument
63 dev_dbg(isp->dev, "###CCDC " #name "=0x%08x\n", \
64 isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_##name))
68 struct isp_device *isp = to_isp_device(ccdc); in ccdc_print_status() local
70 dev_dbg(isp->dev, "-------------CCDC Register dump-------------\n"); in ccdc_print_status()
72 CCDC_PRINT_REGISTER(isp, PCR); in ccdc_print_status()
73 CCDC_PRINT_REGISTER(isp, SYN_MODE); in ccdc_print_status()
74 CCDC_PRINT_REGISTER(isp, HD_VD_WID); in ccdc_print_status()
75 CCDC_PRINT_REGISTER(isp, PIX_LINES); in ccdc_print_status()
76 CCDC_PRINT_REGISTER(isp, HORZ_INFO); in ccdc_print_status()
77 CCDC_PRINT_REGISTER(isp, VERT_START); in ccdc_print_status()
78 CCDC_PRINT_REGISTER(isp, VERT_LINES); in ccdc_print_status()
79 CCDC_PRINT_REGISTER(isp, CULLING); in ccdc_print_status()
80 CCDC_PRINT_REGISTER(isp, HSIZE_OFF); in ccdc_print_status()
81 CCDC_PRINT_REGISTER(isp, SDOFST); in ccdc_print_status()
82 CCDC_PRINT_REGISTER(isp, SDR_ADDR); in ccdc_print_status()
83 CCDC_PRINT_REGISTER(isp, CLAMP); in ccdc_print_status()
84 CCDC_PRINT_REGISTER(isp, DCSUB); in ccdc_print_status()
85 CCDC_PRINT_REGISTER(isp, COLPTN); in ccdc_print_status()
86 CCDC_PRINT_REGISTER(isp, BLKCMP); in ccdc_print_status()
87 CCDC_PRINT_REGISTER(isp, FPC); in ccdc_print_status()
88 CCDC_PRINT_REGISTER(isp, FPC_ADDR); in ccdc_print_status()
89 CCDC_PRINT_REGISTER(isp, VDINT); in ccdc_print_status()
90 CCDC_PRINT_REGISTER(isp, ALAW); in ccdc_print_status()
91 CCDC_PRINT_REGISTER(isp, REC656IF); in ccdc_print_status()
92 CCDC_PRINT_REGISTER(isp, CFG); in ccdc_print_status()
93 CCDC_PRINT_REGISTER(isp, FMTCFG); in ccdc_print_status()
94 CCDC_PRINT_REGISTER(isp, FMT_HORZ); in ccdc_print_status()
95 CCDC_PRINT_REGISTER(isp, FMT_VERT); in ccdc_print_status()
96 CCDC_PRINT_REGISTER(isp, PRGEVEN0); in ccdc_print_status()
97 CCDC_PRINT_REGISTER(isp, PRGEVEN1); in ccdc_print_status()
98 CCDC_PRINT_REGISTER(isp, PRGODD0); in ccdc_print_status()
99 CCDC_PRINT_REGISTER(isp, PRGODD1); in ccdc_print_status()
100 CCDC_PRINT_REGISTER(isp, VP_OUT); in ccdc_print_status()
101 CCDC_PRINT_REGISTER(isp, LSC_CONFIG); in ccdc_print_status()
102 CCDC_PRINT_REGISTER(isp, LSC_INITIAL); in ccdc_print_status()
103 CCDC_PRINT_REGISTER(isp, LSC_TABLE_BASE); in ccdc_print_status()
104 CCDC_PRINT_REGISTER(isp, LSC_TABLE_OFFSET); in ccdc_print_status()
106 dev_dbg(isp->dev, "--------------------------------------------\n"); in ccdc_print_status()
111 * @ccdc: Pointer to ISP CCDC device.
115 struct isp_device *isp = to_isp_device(ccdc); in omap3isp_ccdc_busy() local
117 return isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_PCR) & in omap3isp_ccdc_busy()
127 * @ccdc: Pointer to ISP CCDC device.
135 struct isp_device *isp = to_isp_device(ccdc); in ccdc_lsc_validate_config() local
147 dev_dbg(isp->dev, "CCDC: LSC: Invalid paxel size\n"); in ccdc_lsc_validate_config()
152 dev_dbg(isp->dev, in ccdc_lsc_validate_config()
158 dev_dbg(isp->dev, "CCDC: LSC: initial_x and y must be even\n"); in ccdc_lsc_validate_config()
178 dev_dbg(isp->dev, "CCDC: LSC: too small table\n"); in ccdc_lsc_validate_config()
182 dev_dbg(isp->dev, "CCDC: LSC: Offset is too small\n"); in ccdc_lsc_validate_config()
186 dev_dbg(isp->dev, "CCDC: LSC: Wrong size/offset combination\n"); in ccdc_lsc_validate_config()
194 * @ccdc: Pointer to ISP CCDC device.
205 * @ccdc: Pointer to ISP CCDC device.
210 struct isp_device *isp = to_isp_device(ccdc); in ccdc_lsc_setup_regs() local
213 isp_reg_writel(isp, cfg->offset, OMAP3_ISP_IOMEM_CCDC, in ccdc_lsc_setup_regs()
220 isp_reg_writel(isp, reg, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_LSC_CONFIG); in ccdc_lsc_setup_regs()
227 isp_reg_writel(isp, reg, OMAP3_ISP_IOMEM_CCDC, in ccdc_lsc_setup_regs()
233 struct isp_device *isp = to_isp_device(ccdc); in ccdc_lsc_wait_prefetch() local
236 isp_reg_writel(isp, IRQ0STATUS_CCDC_LSC_PREF_COMP_IRQ, in ccdc_lsc_wait_prefetch()
241 if (isp_reg_readl(isp, OMAP3_ISP_IOMEM_MAIN, ISP_IRQ0STATUS) & in ccdc_lsc_wait_prefetch()
243 isp_reg_writel(isp, IRQ0STATUS_CCDC_LSC_PREF_COMP_IRQ, in ccdc_lsc_wait_prefetch()
257 * @ccdc: Pointer to ISP CCDC device.
262 struct isp_device *isp = to_isp_device(ccdc); in __ccdc_lsc_enable() local
274 omap3isp_sbl_enable(isp, OMAP3_ISP_SBL_CCDC_LSC_READ); in __ccdc_lsc_enable()
276 isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_LSC_CONFIG, in __ccdc_lsc_enable()
281 isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, in __ccdc_lsc_enable()
297 struct isp_device *isp = to_isp_device(ccdc); in ccdc_lsc_busy() local
299 return isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_LSC_CONFIG) & in ccdc_lsc_busy()
305 * @ccdc: Pointer to ISP CCDC device
329 * @ccdc: Pointer to ISP CCDC device.
335 struct isp_device *isp = to_isp_device(ccdc); in ccdc_lsc_error_handler() local
345 isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_LSC_CONFIG, in ccdc_lsc_error_handler()
353 struct isp_device *isp = to_isp_device(ccdc); in ccdc_lsc_free_request() local
360 dma_free_coherent(isp->dev, req->config.size, req->table.addr, in ccdc_lsc_free_request()
404 struct isp_device *isp = to_isp_device(ccdc); in ccdc_lsc_config() local
435 req->table.addr = dma_alloc_coherent(isp->dev, req->config.size, in ccdc_lsc_config()
443 ret = dma_get_sgtable(isp->dev, &req->table.sgt, in ccdc_lsc_config()
449 dma_sync_sg_for_cpu(isp->dev, req->table.sgt.sgl, in ccdc_lsc_config()
458 dma_sync_sg_for_device(isp->dev, req->table.sgt.sgl, in ccdc_lsc_config()
528 * @ccdc: Pointer to ISP CCDC device.
535 struct isp_device *isp = to_isp_device(ccdc); in ccdc_configure_clamp() local
543 isp_reg_writel(isp, clamp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CLAMP); in ccdc_configure_clamp()
545 isp_reg_writel(isp, ccdc->clamp.dcsubval, in ccdc_configure_clamp()
549 isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CLAMP, in ccdc_configure_clamp()
556 * @ccdc: Pointer to ISP CCDC device.
560 struct isp_device *isp = to_isp_device(ccdc); in ccdc_configure_fpc() local
562 isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_FPC, ISPCCDC_FPC_FPCEN); in ccdc_configure_fpc()
567 isp_reg_writel(isp, ccdc->fpc.dma, OMAP3_ISP_IOMEM_CCDC, in ccdc_configure_fpc()
570 isp_reg_writel(isp, (ccdc->fpc.fpnum << ISPCCDC_FPC_FPNUM_SHIFT), in ccdc_configure_fpc()
572 isp_reg_writel(isp, (ccdc->fpc.fpnum << ISPCCDC_FPC_FPNUM_SHIFT) | in ccdc_configure_fpc()
578 * @ccdc: Pointer to ISP CCDC device.
582 struct isp_device *isp = to_isp_device(ccdc); in ccdc_configure_black_comp() local
590 isp_reg_writel(isp, blcomp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_BLKCMP); in ccdc_configure_black_comp()
595 * @ccdc: Pointer to ISP CCDC device.
599 struct isp_device *isp = to_isp_device(ccdc); in ccdc_configure_lpf() local
601 isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SYN_MODE, in ccdc_configure_lpf()
608 * @ccdc: Pointer to ISP CCDC device.
612 struct isp_device *isp = to_isp_device(ccdc); in ccdc_configure_alaw() local
639 isp_reg_writel(isp, alaw, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_ALAW); in ccdc_configure_alaw()
644 * @ccdc: Pointer to ISP CCDC device.
649 struct isp_device *isp = to_isp_device(ccdc); in ccdc_config_imgattr() local
651 isp_reg_writel(isp, colptn, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_COLPTN); in ccdc_config_imgattr()
656 * @ccdc: Pointer to ISP CCDC device.
666 struct isp_device *isp = to_isp_device(ccdc); in ccdc_config() local
728 fpc_new.addr = dma_alloc_coherent(isp->dev, size, in ccdc_config()
737 dma_free_coherent(isp->dev, size, fpc_new.addr, in ccdc_config()
749 dma_free_coherent(isp->dev, fpc_old.fpnum * 4, in ccdc_config()
781 * @isp: Pointer to ISP device
783 void omap3isp_ccdc_restore_context(struct isp_device *isp) in omap3isp_ccdc_restore_context() argument
785 struct isp_ccdc_device *ccdc = &isp->isp_ccdc; in omap3isp_ccdc_restore_context()
787 isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CFG, ISPCCDC_CFG_VDLC); in omap3isp_ccdc_restore_context()
801 * @ccdc: Pointer to ISP CCDC device.
806 struct isp_device *isp = to_isp_device(ccdc); in ccdc_config_vp() local
810 unsigned int max_div = isp->revision == ISP_REVISION_15_0 ? 64 : 8; in ccdc_config_vp()
820 isp_reg_writel(isp, 0, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_FMTCFG); in ccdc_config_vp()
824 isp_reg_writel(isp, (0 << ISPCCDC_FMT_HORZ_FMTSPH_SHIFT) | in ccdc_config_vp()
827 isp_reg_writel(isp, (0 << ISPCCDC_FMT_VERT_FMTSLV_SHIFT) | in ccdc_config_vp()
831 isp_reg_writel(isp, (format->width << ISPCCDC_VP_OUT_HORZ_NUM_SHIFT) | in ccdc_config_vp()
861 isp_reg_writel(isp, fmtcfg, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_FMTCFG); in ccdc_config_vp()
866 * @ccdc: Pointer to ISP CCDC device.
888 struct isp_device *isp = to_isp_device(ccdc); in ccdc_config_outlineoffset() local
891 isp_reg_writel(isp, bpl & 0xffff, OMAP3_ISP_IOMEM_CCDC, in ccdc_config_outlineoffset()
911 isp_reg_writel(isp, sdofst, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST); in ccdc_config_outlineoffset()
916 * @ccdc: Pointer to ISP CCDC device.
917 * @addr: ISP MMU Mapped 32-bit memory address aligned on 32 byte boundary.
923 struct isp_device *isp = to_isp_device(ccdc); in ccdc_set_outaddr() local
925 isp_reg_writel(isp, addr, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDR_ADDR); in ccdc_set_outaddr()
930 * @ccdc: Pointer to ISP CCDC device.
958 * @ccdc: Pointer to ISP CCDC device.
966 struct isp_device *isp = to_isp_device(ccdc); in ccdc_config_sync_if() local
1016 isp_reg_writel(isp, syn_mode, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SYN_MODE); in ccdc_config_sync_if()
1022 isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CFG, in ccdc_config_sync_if()
1025 isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CFG, in ccdc_config_sync_if()
1032 isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_REC656IF, in ccdc_config_sync_if()
1035 isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_REC656IF, in ccdc_config_sync_if()
1115 struct isp_device *isp = to_isp_device(ccdc); in ccdc_configure() local
1178 omap3isp_configure_bridge(isp, ccdc->input, parcfg, shift, bridge); in ccdc_configure()
1183 syn_mode = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SYN_MODE); in ccdc_configure()
1224 isp_reg_writel(isp, ((format->height - 2) << ISPCCDC_VDINT_0_SHIFT) | in ccdc_configure()
1245 isp_reg_writel(isp, (sph << ISPCCDC_HORZ_INFO_SPH_SHIFT) | in ccdc_configure()
1248 isp_reg_writel(isp, (crop->top << ISPCCDC_VERT_START_SLV0_SHIFT) | in ccdc_configure()
1251 isp_reg_writel(isp, (crop->height - 1) in ccdc_configure()
1271 isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CFG, in ccdc_configure()
1274 isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CFG, in ccdc_configure()
1286 isp_reg_writel(isp, syn_mode, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SYN_MODE); in ccdc_configure()
1319 struct isp_device *isp = to_isp_device(ccdc); in __ccdc_enable() local
1325 isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_PCR, in __ccdc_enable()
1379 * @ccdc: Pointer to ISP CCDC device.
1386 struct isp_device *isp = to_isp_device(ccdc); in ccdc_sbl_busy() local
1389 | (isp_reg_readl(isp, OMAP3_ISP_IOMEM_SBL, ISPSBL_CCDC_WR_0) & in ccdc_sbl_busy()
1391 | (isp_reg_readl(isp, OMAP3_ISP_IOMEM_SBL, ISPSBL_CCDC_WR_1) & in ccdc_sbl_busy()
1393 | (isp_reg_readl(isp, OMAP3_ISP_IOMEM_SBL, ISPSBL_CCDC_WR_2) & in ccdc_sbl_busy()
1395 | (isp_reg_readl(isp, OMAP3_ISP_IOMEM_SBL, ISPSBL_CCDC_WR_3) & in ccdc_sbl_busy()
1401 * @ccdc: Pointer to ISP CCDC device.
1424 * @ccdc: Pointer to ISP CCDC device.
1484 * @ccdc: Pointer to ISP CCDC device.
1547 struct isp_device *isp = to_isp_device(ccdc); in ccdc_has_all_fields() local
1556 field = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SYN_MODE) in ccdc_has_all_fields()
1591 struct isp_device *isp = to_isp_device(ccdc); in ccdc_isr_buffer() local
1614 dev_info(isp->dev, "CCDC won't become idle!\n"); in ccdc_isr_buffer()
1615 media_entity_enum_set(&isp->crashed, &ccdc->subdev.entity); in ccdc_isr_buffer()
1644 * @ccdc: Pointer to ISP CCDC device.
1698 * @ccdc: Pointer to ISP CCDC device.
1771 * @ccdc: Pointer to ISP CCDC device.
1794 * ISP video operations
1799 struct isp_ccdc_device *ccdc = &video->isp->isp_ccdc; in ccdc_video_queue()
1838 * @sd: ISP CCDC V4L2 subdevice
1884 * @sd: ISP CCDC V4L2 subdevice
1897 struct isp_device *isp = to_isp_device(ccdc); in ccdc_set_stream() local
1904 omap3isp_subclk_enable(isp, OMAP3_ISP_SUBCLK_CCDC); in ccdc_set_stream()
1905 isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CFG, in ccdc_set_stream()
1916 omap3isp_sbl_enable(isp, OMAP3_ISP_SBL_CCDC_WRITE); in ccdc_set_stream()
1927 omap3isp_sbl_enable(isp, OMAP3_ISP_SBL_CCDC_WRITE); in ccdc_set_stream()
1935 omap3isp_sbl_disable(isp, OMAP3_ISP_SBL_CCDC_WRITE); in ccdc_set_stream()
1936 omap3isp_subclk_disable(isp, OMAP3_ISP_SUBCLK_CCDC); in ccdc_set_stream()
1970 * @ccdc: ISP CCDC device
2085 * @ccdc: ISP CCDC device
2231 * @sd: ISP CCDC V4L2 subdevice
2275 * @sd: ISP CCDC V4L2 subdevice
2323 * @sd : ISP CCDC V4L2 subdevice
2347 * @sd : ISP CCDC V4L2 subdevice
2464 * @sd: ISP CCDC V4L2 subdevice
2540 struct isp_device *isp = to_isp_device(ccdc); in ccdc_link_setup() local
2560 if (remote->entity == &isp->isp_ccp2.subdev.entity) in ccdc_link_setup()
2562 else if (remote->entity == &isp->isp_csi2a.subdev.entity) in ccdc_link_setup()
2564 else if (remote->entity == &isp->isp_csi2c.subdev.entity) in ccdc_link_setup()
2572 * The ISP core doesn't support pipelines with multiple video outputs. in ccdc_link_setup()
2653 * ISP CCDC initialisation and cleanup
2658 * @ccdc: ISP CCDC module
2673 strscpy(sd->name, "OMAP3 ISP CCDC", sizeof(sd->name)); in ccdc_init_entities()
2674 sd->grp_id = 1 << 16; /* group ID for isp subdevs */ in ccdc_init_entities()
2692 ccdc->video_out.isp = to_isp_device(ccdc); in ccdc_init_entities()
2709 * @isp: Device pointer specific to the OMAP3 ISP.
2715 int omap3isp_ccdc_init(struct isp_device *isp) in omap3isp_ccdc_init() argument
2717 struct isp_ccdc_device *ccdc = &isp->isp_ccdc; in omap3isp_ccdc_init()
2748 * @isp: Device pointer specific to the OMAP3 ISP.
2750 void omap3isp_ccdc_cleanup(struct isp_device *isp) in omap3isp_ccdc_cleanup() argument
2752 struct isp_ccdc_device *ccdc = &isp->isp_ccdc; in omap3isp_ccdc_cleanup()
2765 dma_free_coherent(isp->dev, ccdc->fpc.fpnum * 4, ccdc->fpc.addr, in omap3isp_ccdc_cleanup()