Lines Matching full:isp
4 * TI OMAP3 ISP - CCP2 module
25 #include "isp.h"
67 #define CCP2_PRINT_REGISTER(isp, name)\ argument
68 dev_dbg(isp->dev, "###CCP2 " #name "=0x%08x\n", \
69 isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_##name))
73 struct isp_device *isp = to_isp_device(ccp2); in ccp2_print_status() local
75 dev_dbg(isp->dev, "-------------CCP2 Register dump-------------\n"); in ccp2_print_status()
77 CCP2_PRINT_REGISTER(isp, SYSCONFIG); in ccp2_print_status()
78 CCP2_PRINT_REGISTER(isp, SYSSTATUS); in ccp2_print_status()
79 CCP2_PRINT_REGISTER(isp, LC01_IRQENABLE); in ccp2_print_status()
80 CCP2_PRINT_REGISTER(isp, LC01_IRQSTATUS); in ccp2_print_status()
81 CCP2_PRINT_REGISTER(isp, LC23_IRQENABLE); in ccp2_print_status()
82 CCP2_PRINT_REGISTER(isp, LC23_IRQSTATUS); in ccp2_print_status()
83 CCP2_PRINT_REGISTER(isp, LCM_IRQENABLE); in ccp2_print_status()
84 CCP2_PRINT_REGISTER(isp, LCM_IRQSTATUS); in ccp2_print_status()
85 CCP2_PRINT_REGISTER(isp, CTRL); in ccp2_print_status()
86 CCP2_PRINT_REGISTER(isp, LCx_CTRL(0)); in ccp2_print_status()
87 CCP2_PRINT_REGISTER(isp, LCx_CODE(0)); in ccp2_print_status()
88 CCP2_PRINT_REGISTER(isp, LCx_STAT_START(0)); in ccp2_print_status()
89 CCP2_PRINT_REGISTER(isp, LCx_STAT_SIZE(0)); in ccp2_print_status()
90 CCP2_PRINT_REGISTER(isp, LCx_SOF_ADDR(0)); in ccp2_print_status()
91 CCP2_PRINT_REGISTER(isp, LCx_EOF_ADDR(0)); in ccp2_print_status()
92 CCP2_PRINT_REGISTER(isp, LCx_DAT_START(0)); in ccp2_print_status()
93 CCP2_PRINT_REGISTER(isp, LCx_DAT_SIZE(0)); in ccp2_print_status()
94 CCP2_PRINT_REGISTER(isp, LCx_DAT_PING_ADDR(0)); in ccp2_print_status()
95 CCP2_PRINT_REGISTER(isp, LCx_DAT_PONG_ADDR(0)); in ccp2_print_status()
96 CCP2_PRINT_REGISTER(isp, LCx_DAT_OFST(0)); in ccp2_print_status()
97 CCP2_PRINT_REGISTER(isp, LCM_CTRL); in ccp2_print_status()
98 CCP2_PRINT_REGISTER(isp, LCM_VSIZE); in ccp2_print_status()
99 CCP2_PRINT_REGISTER(isp, LCM_HSIZE); in ccp2_print_status()
100 CCP2_PRINT_REGISTER(isp, LCM_PREFETCH); in ccp2_print_status()
101 CCP2_PRINT_REGISTER(isp, LCM_SRC_ADDR); in ccp2_print_status()
102 CCP2_PRINT_REGISTER(isp, LCM_SRC_OFST); in ccp2_print_status()
103 CCP2_PRINT_REGISTER(isp, LCM_DST_ADDR); in ccp2_print_status()
104 CCP2_PRINT_REGISTER(isp, LCM_DST_OFST); in ccp2_print_status()
106 dev_dbg(isp->dev, "--------------------------------------------\n"); in ccp2_print_status()
111 * @ccp2: pointer to ISP CCP2 device
115 struct isp_device *isp = to_isp_device(ccp2); in ccp2_reset() local
119 isp_reg_set(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_SYSCONFIG, in ccp2_reset()
121 while (!(isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_SYSSTATUS) & in ccp2_reset()
125 dev_warn(isp->dev, in ccp2_reset()
134 * @ccp2: pointer to ISP CCP2 device
138 struct isp_device *isp = to_isp_device(ccp2); in ccp2_pwr_cfg() local
140 isp_reg_writel(isp, ISPCCP2_SYSCONFIG_MSTANDBY_MODE_SMART | in ccp2_pwr_cfg()
141 ((isp->revision == ISP_REVISION_15_0 && isp->autoidle) ? in ccp2_pwr_cfg()
148 * @ccp2: pointer to ISP CCP2 device
153 struct isp_device *isp = to_isp_device(ccp2); in ccp2_if_enable() local
165 isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCx_CTRL(i), in ccp2_if_enable()
170 isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_CTRL, in ccp2_if_enable()
182 * @ccp2: pointer to ISP CCP2 device
187 struct isp_device *isp = to_isp_device(ccp2); in ccp2_mem_enable() local
193 isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_CTRL, in ccp2_mem_enable()
196 isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCM_CTRL, in ccp2_mem_enable()
203 * @ccp2: Pointer to ISP CCP2 device
213 struct isp_device *isp = to_isp_device(ccp2); in ccp2_phyif_config() local
216 val = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_CTRL) | in ccp2_phyif_config()
227 isp_reg_writel(isp, val, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_CTRL); in ccp2_phyif_config()
229 val = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_CTRL); in ccp2_phyif_config()
232 dev_warn(isp->dev, "OMAP3 CCP2 bus not available\n"); in ccp2_phyif_config()
243 * @ccp2: Pointer to ISP CCP2 device
247 * values depend on the ISP revision:
252 * The exact divisor value used might differ from the requested value, as ISP
258 struct isp_device *isp = to_isp_device(ccp2); in ccp2_vp_config() local
262 val = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_CTRL); in ccp2_vp_config()
265 if (isp->revision == ISP_REVISION_15_0) { in ccp2_vp_config()
276 isp_reg_writel(isp, val, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_CTRL); in ccp2_vp_config()
281 * @ccp2: Pointer to ISP CCP2 device
282 * @config: Pointer to ISP LCx config structure.
291 struct isp_device *isp = to_isp_device(ccp2); in ccp2_lcx_config() local
304 val = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCx_CTRL(0)) in ccp2_lcx_config()
307 if (isp->revision == ISP_REVISION_15_0) { in ccp2_lcx_config()
323 isp_reg_writel(isp, val, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCx_CTRL(0)); in ccp2_lcx_config()
326 isp_reg_writel(isp, config->data_start << ISPCCP2_LCx_DAT_SHIFT, in ccp2_lcx_config()
330 isp_reg_writel(isp, config->data_size << ISPCCP2_LCx_DAT_SHIFT, in ccp2_lcx_config()
341 isp_reg_writel(isp, val, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LC01_IRQSTATUS); in ccp2_lcx_config()
342 isp_reg_set(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LC01_IRQENABLE, val); in ccp2_lcx_config()
347 * @ccp2: Pointer to ISP CCP2 device
390 struct isp_device *isp = to_isp_device(ccp2); in ccp2_adjust_bandwidth() local
420 dev_dbg(isp->dev, "%s: minimum clock divisor = %u\n", __func__, in ccp2_adjust_bandwidth()
428 * @ccp2: Pointer to ISP CCP2 device
429 * @config: Pointer to ISP mem interface config structure
438 struct isp_device *isp = to_isp_device(ccp2); in ccp2_mem_configure() local
451 isp_reg_writel(isp, ISPCCP2_LCM_HSIZE_SKIP_MIN | in ccp2_mem_configure()
456 isp_reg_writel(isp, config->vsize_count << ISPCCP2_LCM_VSIZE_SHIFT, in ccp2_mem_configure()
464 isp_reg_writel(isp, config->src_ofst, OMAP3_ISP_IOMEM_CCP2, in ccp2_mem_configure()
492 isp_reg_writel(isp, val, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCM_CTRL); in ccp2_mem_configure()
502 isp_reg_writel(isp, hwords << ISPCCP2_LCM_PREFETCH_SHIFT, in ccp2_mem_configure()
506 isp_reg_set(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_CTRL, in ccp2_mem_configure()
511 isp_reg_writel(isp, ISPCCP2_LCM_IRQSTATUS_OCPERROR_IRQ | in ccp2_mem_configure()
516 isp_reg_set(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCM_IRQENABLE, in ccp2_mem_configure()
523 * @ccp2: Pointer to ISP CCP2 device
530 struct isp_device *isp = to_isp_device(ccp2); in ccp2_set_inaddr() local
532 isp_reg_writel(isp, addr, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCM_SRC_ADDR); in ccp2_set_inaddr()
558 * omap3isp_ccp2_isr - Handle ISP CCP2 interrupts
559 * @ccp2: Pointer to ISP CCP2 device
566 struct isp_device *isp = to_isp_device(ccp2); in omap3isp_ccp2_isr() local
577 lcx_irqstatus = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCP2, in omap3isp_ccp2_isr()
579 isp_reg_writel(isp, lcx_irqstatus, OMAP3_ISP_IOMEM_CCP2, in omap3isp_ccp2_isr()
582 lcm_irqstatus = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCP2, in omap3isp_ccp2_isr()
584 isp_reg_writel(isp, lcm_irqstatus, OMAP3_ISP_IOMEM_CCP2, in omap3isp_ccp2_isr()
589 dev_dbg(isp->dev, "CCP2 err:%x\n", lcx_irqstatus); in omap3isp_ccp2_isr()
595 dev_dbg(isp->dev, "CCP2 OCP err:%x\n", lcm_irqstatus); in omap3isp_ccp2_isr()
617 * @ccp2 : Pointer to ISP CCP2 device
635 * @ccp2 : Pointer to ISP CCP2 device
801 * @sd: ISP CCP2 V4L2 subdevice
832 struct isp_device *isp = to_isp_device(ccp2); in ccp2_s_stream() local
873 omap3isp_sbl_enable(isp, OMAP3_ISP_SBL_CSI1_READ); in ccp2_s_stream()
885 omap3isp_sbl_disable(isp, OMAP3_ISP_SBL_CSI1_READ); in ccp2_s_stream()
924 * ISP ccp2 video device node
929 * @video : Pointer to isp video structure
935 struct isp_ccp2_device *ccp2 = &video->isp->isp_ccp2; in ccp2_video_queue()
1016 * @ccp2: Pointer to ISP CCP2 device
1026 * @ccp2: Pointer to ISP CCP2 device
1054 * ISP ccp2 initialisation and cleanup
1059 * @ccp2: Pointer to ISP CCP2 device
1074 strlcpy(sd->name, "OMAP3 ISP CCP2", sizeof(sd->name)); in ccp2_init_entities()
1075 sd->grp_id = 1 << 16; /* group ID for isp subdevs */ in ccp2_init_entities()
1104 ccp2->video_in.isp = to_isp_device(ccp2); in ccp2_init_entities()
1121 * @isp : Pointer to ISP device
1124 int omap3isp_ccp2_init(struct isp_device *isp) in omap3isp_ccp2_init() argument
1126 struct isp_ccp2_device *ccp2 = &isp->isp_ccp2; in omap3isp_ccp2_init()
1142 if (isp->revision == ISP_REVISION_2_0) { in omap3isp_ccp2_init()
1143 ccp2->vdds_csib = devm_regulator_get(isp->dev, "vdds_csib"); in omap3isp_ccp2_init()
1146 dev_dbg(isp->dev, in omap3isp_ccp2_init()
1150 dev_dbg(isp->dev, in omap3isp_ccp2_init()
1154 ccp2->phy = &isp->isp_csiphy2; in omap3isp_ccp2_init()
1155 } else if (isp->revision == ISP_REVISION_15_0) { in omap3isp_ccp2_init()
1156 ccp2->phy = &isp->isp_csiphy1; in omap3isp_ccp2_init()
1169 * @isp : Pointer to ISP device
1171 void omap3isp_ccp2_cleanup(struct isp_device *isp) in omap3isp_ccp2_cleanup() argument
1173 struct isp_ccp2_device *ccp2 = &isp->isp_ccp2; in omap3isp_ccp2_cleanup()