Lines Matching refs:ccdc
294 static inline u32 vpfe_reg_read(struct vpfe_ccdc *ccdc, u32 offset) in vpfe_reg_read() argument
296 return ioread32(ccdc->ccdc_cfg.base_addr + offset); in vpfe_reg_read()
299 static inline void vpfe_reg_write(struct vpfe_ccdc *ccdc, u32 val, u32 offset) in vpfe_reg_write() argument
301 iowrite32(val, ccdc->ccdc_cfg.base_addr + offset); in vpfe_reg_write()
304 static inline struct vpfe_device *to_vpfe(struct vpfe_ccdc *ccdc) in to_vpfe() argument
306 return container_of(ccdc, struct vpfe_device, ccdc); in to_vpfe()
314 static inline void vpfe_pcr_enable(struct vpfe_ccdc *ccdc, int flag) in vpfe_pcr_enable() argument
316 vpfe_reg_write(ccdc, !!flag, VPFE_PCR); in vpfe_pcr_enable()
319 static void vpfe_config_enable(struct vpfe_ccdc *ccdc, int flag) in vpfe_config_enable() argument
324 cfg = vpfe_reg_read(ccdc, VPFE_CONFIG); in vpfe_config_enable()
330 vpfe_reg_write(ccdc, cfg, VPFE_CONFIG); in vpfe_config_enable()
333 static void vpfe_ccdc_setwin(struct vpfe_ccdc *ccdc, in vpfe_ccdc_setwin() argument
349 vpfe_reg_write(ccdc, (horz_start << VPFE_HORZ_INFO_SPH_SHIFT) | in vpfe_ccdc_setwin()
374 vpfe_reg_write(ccdc, val, VPFE_VDINT); in vpfe_ccdc_setwin()
376 vpfe_reg_write(ccdc, (vert_start << VPFE_VERT_START_SLV0_SHIFT) | in vpfe_ccdc_setwin()
378 vpfe_reg_write(ccdc, vert_nr_lines, VPFE_VERT_LINES); in vpfe_ccdc_setwin()
381 static void vpfe_reg_dump(struct vpfe_ccdc *ccdc) in vpfe_reg_dump() argument
383 struct vpfe_device *vpfe = to_vpfe(ccdc); in vpfe_reg_dump()
385 vpfe_dbg(3, vpfe, "ALAW: 0x%x\n", vpfe_reg_read(ccdc, VPFE_ALAW)); in vpfe_reg_dump()
386 vpfe_dbg(3, vpfe, "CLAMP: 0x%x\n", vpfe_reg_read(ccdc, VPFE_CLAMP)); in vpfe_reg_dump()
387 vpfe_dbg(3, vpfe, "DCSUB: 0x%x\n", vpfe_reg_read(ccdc, VPFE_DCSUB)); in vpfe_reg_dump()
388 vpfe_dbg(3, vpfe, "BLKCMP: 0x%x\n", vpfe_reg_read(ccdc, VPFE_BLKCMP)); in vpfe_reg_dump()
389 vpfe_dbg(3, vpfe, "COLPTN: 0x%x\n", vpfe_reg_read(ccdc, VPFE_COLPTN)); in vpfe_reg_dump()
390 vpfe_dbg(3, vpfe, "SDOFST: 0x%x\n", vpfe_reg_read(ccdc, VPFE_SDOFST)); in vpfe_reg_dump()
392 vpfe_reg_read(ccdc, VPFE_SYNMODE)); in vpfe_reg_dump()
394 vpfe_reg_read(ccdc, VPFE_HSIZE_OFF)); in vpfe_reg_dump()
396 vpfe_reg_read(ccdc, VPFE_HORZ_INFO)); in vpfe_reg_dump()
398 vpfe_reg_read(ccdc, VPFE_VERT_START)); in vpfe_reg_dump()
400 vpfe_reg_read(ccdc, VPFE_VERT_LINES)); in vpfe_reg_dump()
404 vpfe_ccdc_validate_param(struct vpfe_ccdc *ccdc, in vpfe_ccdc_validate_param() argument
407 struct vpfe_device *vpfe = to_vpfe(ccdc); in vpfe_ccdc_validate_param()
427 vpfe_ccdc_update_raw_params(struct vpfe_ccdc *ccdc, in vpfe_ccdc_update_raw_params() argument
431 &ccdc->ccdc_cfg.bayer.config_params; in vpfe_ccdc_update_raw_params()
440 static void vpfe_ccdc_restore_defaults(struct vpfe_ccdc *ccdc) in vpfe_ccdc_restore_defaults() argument
445 vpfe_pcr_enable(ccdc, 0); in vpfe_ccdc_restore_defaults()
449 vpfe_reg_write(ccdc, 0, i); in vpfe_ccdc_restore_defaults()
451 vpfe_reg_write(ccdc, VPFE_NO_CULLING, VPFE_CULLING); in vpfe_ccdc_restore_defaults()
452 vpfe_reg_write(ccdc, VPFE_CCDC_GAMMA_BITS_11_2, VPFE_ALAW); in vpfe_ccdc_restore_defaults()
455 static int vpfe_ccdc_close(struct vpfe_ccdc *ccdc, struct device *dev) in vpfe_ccdc_close() argument
462 pcr = vpfe_reg_read(ccdc, VPFE_PCR); in vpfe_ccdc_close()
467 vpfe_pcr_enable(ccdc, 0); in vpfe_ccdc_close()
471 vpfe_ccdc_restore_defaults(ccdc); in vpfe_ccdc_close()
477 dma_cntl = vpfe_reg_read(ccdc, VPFE_DMA_CNTL); in vpfe_ccdc_close()
482 vpfe_reg_write(ccdc, dma_cntl, VPFE_DMA_CNTL); in vpfe_ccdc_close()
487 vpfe_config_enable(ccdc, 0); in vpfe_ccdc_close()
494 static int vpfe_ccdc_set_params(struct vpfe_ccdc *ccdc, void __user *params) in vpfe_ccdc_set_params() argument
496 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); in vpfe_ccdc_set_params()
500 if (ccdc->ccdc_cfg.if_type != VPFE_RAW_BAYER) in vpfe_ccdc_set_params()
511 if (!vpfe_ccdc_validate_param(ccdc, &raw_params)) { in vpfe_ccdc_set_params()
512 vpfe_ccdc_update_raw_params(ccdc, &raw_params); in vpfe_ccdc_set_params()
523 static void vpfe_ccdc_config_ycbcr(struct vpfe_ccdc *ccdc) in vpfe_ccdc_config_ycbcr() argument
525 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); in vpfe_ccdc_config_ycbcr()
526 struct ccdc_params_ycbcr *params = &ccdc->ccdc_cfg.ycbcr; in vpfe_ccdc_config_ycbcr()
535 vpfe_ccdc_restore_defaults(ccdc); in vpfe_ccdc_config_ycbcr()
550 vpfe_reg_write(ccdc, VPFE_REC656IF_BT656_EN, VPFE_REC656IF); in vpfe_ccdc_config_ycbcr()
557 if (ccdc->ccdc_cfg.if_type == VPFE_BT656_10BIT) in vpfe_ccdc_config_ycbcr()
570 vpfe_reg_write(ccdc, syn_mode, VPFE_SYNMODE); in vpfe_ccdc_config_ycbcr()
573 vpfe_ccdc_setwin(ccdc, ¶ms->win, in vpfe_ccdc_config_ycbcr()
580 if (ccdc->ccdc_cfg.if_type == VPFE_BT656_10BIT) in vpfe_ccdc_config_ycbcr()
581 vpfe_reg_write(ccdc, in vpfe_ccdc_config_ycbcr()
586 vpfe_reg_write(ccdc, in vpfe_ccdc_config_ycbcr()
594 vpfe_reg_write(ccdc, params->bytesperline, VPFE_HSIZE_OFF); in vpfe_ccdc_config_ycbcr()
599 vpfe_reg_write(ccdc, VPFE_SDOFST_FIELD_INTERLEAVED, in vpfe_ccdc_config_ycbcr()
604 vpfe_ccdc_config_black_clamp(struct vpfe_ccdc *ccdc, in vpfe_ccdc_config_black_clamp() argument
612 vpfe_reg_write(ccdc, val, VPFE_DCSUB); in vpfe_ccdc_config_black_clamp()
613 vpfe_reg_write(ccdc, VPFE_CLAMP_DEFAULT_VAL, VPFE_CLAMP); in vpfe_ccdc_config_black_clamp()
627 vpfe_reg_write(ccdc, val, VPFE_CLAMP); in vpfe_ccdc_config_black_clamp()
629 vpfe_reg_write(ccdc, VPFE_DCSUB_DEFAULT_VAL, VPFE_DCSUB); in vpfe_ccdc_config_black_clamp()
633 vpfe_ccdc_config_black_compense(struct vpfe_ccdc *ccdc, in vpfe_ccdc_config_black_compense() argument
645 vpfe_reg_write(ccdc, val, VPFE_BLKCMP); in vpfe_ccdc_config_black_compense()
652 static void vpfe_ccdc_config_raw(struct vpfe_ccdc *ccdc) in vpfe_ccdc_config_raw() argument
654 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); in vpfe_ccdc_config_raw()
656 &ccdc->ccdc_cfg.bayer.config_params; in vpfe_ccdc_config_raw()
657 struct ccdc_params_raw *params = &ccdc->ccdc_cfg.bayer; in vpfe_ccdc_config_raw()
664 vpfe_ccdc_restore_defaults(ccdc); in vpfe_ccdc_config_raw()
667 vpfe_reg_write(ccdc, VPFE_LATCH_ON_VSYNC_DISABLE, VPFE_CCDCFG); in vpfe_ccdc_config_raw()
690 vpfe_reg_write(ccdc, val, VPFE_ALAW); in vpfe_ccdc_config_raw()
695 vpfe_ccdc_setwin(ccdc, ¶ms->win, params->frm_fmt, in vpfe_ccdc_config_raw()
699 vpfe_ccdc_config_black_clamp(ccdc, &config_params->blk_clamp); in vpfe_ccdc_config_raw()
702 vpfe_ccdc_config_black_compense(ccdc, &config_params->blk_comp); in vpfe_ccdc_config_raw()
713 vpfe_reg_write(ccdc, params->bytesperline, VPFE_HSIZE_OFF); in vpfe_ccdc_config_raw()
722 vpfe_reg_write(ccdc, VPFE_INTERLACED_IMAGE_INVERT, in vpfe_ccdc_config_raw()
726 vpfe_reg_write(ccdc, VPFE_INTERLACED_NO_IMAGE_INVERT, in vpfe_ccdc_config_raw()
730 vpfe_reg_write(ccdc, VPFE_PROGRESSIVE_NO_IMAGE_INVERT, in vpfe_ccdc_config_raw()
734 vpfe_reg_write(ccdc, syn_mode, VPFE_SYNMODE); in vpfe_ccdc_config_raw()
736 vpfe_reg_dump(ccdc); in vpfe_ccdc_config_raw()
740 vpfe_ccdc_set_buftype(struct vpfe_ccdc *ccdc, in vpfe_ccdc_set_buftype() argument
743 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_ccdc_set_buftype()
744 ccdc->ccdc_cfg.bayer.buf_type = buf_type; in vpfe_ccdc_set_buftype()
746 ccdc->ccdc_cfg.ycbcr.buf_type = buf_type; in vpfe_ccdc_set_buftype()
751 static inline enum ccdc_buftype vpfe_ccdc_get_buftype(struct vpfe_ccdc *ccdc) in vpfe_ccdc_get_buftype() argument
753 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_ccdc_get_buftype()
754 return ccdc->ccdc_cfg.bayer.buf_type; in vpfe_ccdc_get_buftype()
756 return ccdc->ccdc_cfg.ycbcr.buf_type; in vpfe_ccdc_get_buftype()
759 static int vpfe_ccdc_set_pixel_format(struct vpfe_ccdc *ccdc, u32 pixfmt) in vpfe_ccdc_set_pixel_format() argument
761 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); in vpfe_ccdc_set_pixel_format()
764 ccdc->ccdc_cfg.if_type, print_fourcc(pixfmt)); in vpfe_ccdc_set_pixel_format()
766 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) { in vpfe_ccdc_set_pixel_format()
767 ccdc->ccdc_cfg.bayer.pix_fmt = CCDC_PIXFMT_RAW; in vpfe_ccdc_set_pixel_format()
772 ccdc->ccdc_cfg.bayer.config_params.alaw.enable = 0; in vpfe_ccdc_set_pixel_format()
776 ccdc->ccdc_cfg.bayer.config_params.alaw.enable = 1; in vpfe_ccdc_set_pixel_format()
793 ccdc->ccdc_cfg.ycbcr.pix_order = CCDC_PIXORDER_YCBYCR; in vpfe_ccdc_set_pixel_format()
797 ccdc->ccdc_cfg.ycbcr.pix_order = CCDC_PIXORDER_CBYCRY; in vpfe_ccdc_set_pixel_format()
808 static u32 vpfe_ccdc_get_pixel_format(struct vpfe_ccdc *ccdc) in vpfe_ccdc_get_pixel_format() argument
812 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) { in vpfe_ccdc_get_pixel_format()
815 if (ccdc->ccdc_cfg.ycbcr.pix_order == CCDC_PIXORDER_YCBYCR) in vpfe_ccdc_get_pixel_format()
825 vpfe_ccdc_set_image_window(struct vpfe_ccdc *ccdc, in vpfe_ccdc_set_image_window() argument
828 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) { in vpfe_ccdc_set_image_window()
829 ccdc->ccdc_cfg.bayer.win = *win; in vpfe_ccdc_set_image_window()
830 ccdc->ccdc_cfg.bayer.bytesperpixel = bpp; in vpfe_ccdc_set_image_window()
831 ccdc->ccdc_cfg.bayer.bytesperline = ALIGN(win->width * bpp, 32); in vpfe_ccdc_set_image_window()
833 ccdc->ccdc_cfg.ycbcr.win = *win; in vpfe_ccdc_set_image_window()
834 ccdc->ccdc_cfg.ycbcr.bytesperpixel = bpp; in vpfe_ccdc_set_image_window()
835 ccdc->ccdc_cfg.ycbcr.bytesperline = ALIGN(win->width * bpp, 32); in vpfe_ccdc_set_image_window()
842 vpfe_ccdc_get_image_window(struct vpfe_ccdc *ccdc, in vpfe_ccdc_get_image_window() argument
845 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_ccdc_get_image_window()
846 *win = ccdc->ccdc_cfg.bayer.win; in vpfe_ccdc_get_image_window()
848 *win = ccdc->ccdc_cfg.ycbcr.win; in vpfe_ccdc_get_image_window()
851 static inline unsigned int vpfe_ccdc_get_line_length(struct vpfe_ccdc *ccdc) in vpfe_ccdc_get_line_length() argument
853 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_ccdc_get_line_length()
854 return ccdc->ccdc_cfg.bayer.bytesperline; in vpfe_ccdc_get_line_length()
856 return ccdc->ccdc_cfg.ycbcr.bytesperline; in vpfe_ccdc_get_line_length()
860 vpfe_ccdc_set_frame_format(struct vpfe_ccdc *ccdc, in vpfe_ccdc_set_frame_format() argument
863 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_ccdc_set_frame_format()
864 ccdc->ccdc_cfg.bayer.frm_fmt = frm_fmt; in vpfe_ccdc_set_frame_format()
866 ccdc->ccdc_cfg.ycbcr.frm_fmt = frm_fmt; in vpfe_ccdc_set_frame_format()
872 vpfe_ccdc_get_frame_format(struct vpfe_ccdc *ccdc) in vpfe_ccdc_get_frame_format() argument
874 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_ccdc_get_frame_format()
875 return ccdc->ccdc_cfg.bayer.frm_fmt; in vpfe_ccdc_get_frame_format()
877 return ccdc->ccdc_cfg.ycbcr.frm_fmt; in vpfe_ccdc_get_frame_format()
880 static inline int vpfe_ccdc_getfid(struct vpfe_ccdc *ccdc) in vpfe_ccdc_getfid() argument
882 return (vpfe_reg_read(ccdc, VPFE_SYNMODE) >> 15) & 1; in vpfe_ccdc_getfid()
885 static inline void vpfe_set_sdr_addr(struct vpfe_ccdc *ccdc, unsigned long addr) in vpfe_set_sdr_addr() argument
887 vpfe_reg_write(ccdc, addr & 0xffffffe0, VPFE_SDR_ADDR); in vpfe_set_sdr_addr()
890 static int vpfe_ccdc_set_hw_if_params(struct vpfe_ccdc *ccdc, in vpfe_ccdc_set_hw_if_params() argument
893 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); in vpfe_ccdc_set_hw_if_params()
895 ccdc->ccdc_cfg.if_type = params->if_type; in vpfe_ccdc_set_hw_if_params()
902 ccdc->ccdc_cfg.ycbcr.vd_pol = params->vdpol; in vpfe_ccdc_set_hw_if_params()
903 ccdc->ccdc_cfg.ycbcr.hd_pol = params->hdpol; in vpfe_ccdc_set_hw_if_params()
907 ccdc->ccdc_cfg.bayer.vd_pol = params->vdpol; in vpfe_ccdc_set_hw_if_params()
908 ccdc->ccdc_cfg.bayer.hd_pol = params->hdpol; in vpfe_ccdc_set_hw_if_params()
910 ccdc->ccdc_cfg.bayer.config_params.data_sz = in vpfe_ccdc_set_hw_if_params()
913 ccdc->ccdc_cfg.bayer.config_params.data_sz = in vpfe_ccdc_set_hw_if_params()
918 ccdc->ccdc_cfg.bayer.config_params.data_sz); in vpfe_ccdc_set_hw_if_params()
928 static void vpfe_clear_intr(struct vpfe_ccdc *ccdc, int vdint) in vpfe_clear_intr() argument
932 vpfe_int_status = vpfe_reg_read(ccdc, VPFE_IRQ_STS); in vpfe_clear_intr()
964 vpfe_reg_write(ccdc, vpfe_int_status, VPFE_IRQ_STS); in vpfe_clear_intr()
966 vpfe_int_status = vpfe_reg_read(ccdc, VPFE_IRQ_STS); in vpfe_clear_intr()
969 vpfe_reg_write(ccdc, 1, VPFE_IRQ_EOI); in vpfe_clear_intr()
972 static void vpfe_ccdc_config_defaults(struct vpfe_ccdc *ccdc) in vpfe_ccdc_config_defaults() argument
974 ccdc->ccdc_cfg.if_type = VPFE_RAW_BAYER; in vpfe_ccdc_config_defaults()
976 ccdc->ccdc_cfg.ycbcr.pix_fmt = CCDC_PIXFMT_YCBCR_8BIT; in vpfe_ccdc_config_defaults()
977 ccdc->ccdc_cfg.ycbcr.frm_fmt = CCDC_FRMFMT_INTERLACED; in vpfe_ccdc_config_defaults()
978 ccdc->ccdc_cfg.ycbcr.fid_pol = VPFE_PINPOL_POSITIVE; in vpfe_ccdc_config_defaults()
979 ccdc->ccdc_cfg.ycbcr.vd_pol = VPFE_PINPOL_POSITIVE; in vpfe_ccdc_config_defaults()
980 ccdc->ccdc_cfg.ycbcr.hd_pol = VPFE_PINPOL_POSITIVE; in vpfe_ccdc_config_defaults()
981 ccdc->ccdc_cfg.ycbcr.pix_order = CCDC_PIXORDER_CBYCRY; in vpfe_ccdc_config_defaults()
982 ccdc->ccdc_cfg.ycbcr.buf_type = CCDC_BUFTYPE_FLD_INTERLEAVED; in vpfe_ccdc_config_defaults()
984 ccdc->ccdc_cfg.ycbcr.win.left = 0; in vpfe_ccdc_config_defaults()
985 ccdc->ccdc_cfg.ycbcr.win.top = 0; in vpfe_ccdc_config_defaults()
986 ccdc->ccdc_cfg.ycbcr.win.width = 720; in vpfe_ccdc_config_defaults()
987 ccdc->ccdc_cfg.ycbcr.win.height = 576; in vpfe_ccdc_config_defaults()
988 ccdc->ccdc_cfg.ycbcr.bt656_enable = 1; in vpfe_ccdc_config_defaults()
990 ccdc->ccdc_cfg.bayer.pix_fmt = CCDC_PIXFMT_RAW; in vpfe_ccdc_config_defaults()
991 ccdc->ccdc_cfg.bayer.frm_fmt = CCDC_FRMFMT_PROGRESSIVE; in vpfe_ccdc_config_defaults()
992 ccdc->ccdc_cfg.bayer.fid_pol = VPFE_PINPOL_POSITIVE; in vpfe_ccdc_config_defaults()
993 ccdc->ccdc_cfg.bayer.vd_pol = VPFE_PINPOL_POSITIVE; in vpfe_ccdc_config_defaults()
994 ccdc->ccdc_cfg.bayer.hd_pol = VPFE_PINPOL_POSITIVE; in vpfe_ccdc_config_defaults()
996 ccdc->ccdc_cfg.bayer.win.left = 0; in vpfe_ccdc_config_defaults()
997 ccdc->ccdc_cfg.bayer.win.top = 0; in vpfe_ccdc_config_defaults()
998 ccdc->ccdc_cfg.bayer.win.width = 800; in vpfe_ccdc_config_defaults()
999 ccdc->ccdc_cfg.bayer.win.height = 600; in vpfe_ccdc_config_defaults()
1000 ccdc->ccdc_cfg.bayer.config_params.data_sz = VPFE_CCDC_DATA_8BITS; in vpfe_ccdc_config_defaults()
1001 ccdc->ccdc_cfg.bayer.config_params.alaw.gamma_wd = in vpfe_ccdc_config_defaults()
1017 vpfe_ccdc_get_image_window(&vpfe->ccdc, &image_win); in vpfe_get_ccdc_image_format()
1020 f->fmt.pix.bytesperline = vpfe_ccdc_get_line_length(&vpfe->ccdc); in vpfe_get_ccdc_image_format()
1023 buf_type = vpfe_ccdc_get_buftype(&vpfe->ccdc); in vpfe_get_ccdc_image_format()
1024 f->fmt.pix.pixelformat = vpfe_ccdc_get_pixel_format(&vpfe->ccdc); in vpfe_get_ccdc_image_format()
1025 frm_fmt = vpfe_ccdc_get_frame_format(&vpfe->ccdc); in vpfe_get_ccdc_image_format()
1055 if (vpfe_ccdc_set_pixel_format(&vpfe->ccdc, in vpfe_config_ccdc_image_format()
1062 vpfe_ccdc_set_image_window(&vpfe->ccdc, &vpfe->crop, vpfe->bpp); in vpfe_config_ccdc_image_format()
1068 &vpfe->ccdc, in vpfe_config_ccdc_image_format()
1079 &vpfe->ccdc, in vpfe_config_ccdc_image_format()
1090 return vpfe_ccdc_set_frame_format(&vpfe->ccdc, frm_fmt); in vpfe_config_ccdc_image_format()
1169 vpfe_config_enable(&vpfe->ccdc, 1); in vpfe_initialize_device()
1171 vpfe_ccdc_restore_defaults(&vpfe->ccdc); in vpfe_initialize_device()
1174 vpfe_clear_intr(&vpfe->ccdc, -1); in vpfe_initialize_device()
1204 vpfe_ccdc_close(&vpfe->ccdc, vpfe->pdev); in vpfe_release()
1258 vpfe_set_sdr_addr(&vpfe->ccdc, in vpfe_schedule_next_buffer()
1269 vpfe_set_sdr_addr(&vpfe->ccdc, addr); in vpfe_schedule_bottom_field()
1304 intr_status = vpfe_reg_read(&vpfe->ccdc, VPFE_IRQ_STS); in vpfe_isr()
1318 fid = vpfe_ccdc_getfid(&vpfe->ccdc); in vpfe_isr()
1372 vpfe_clear_intr(&vpfe->ccdc, intr_status); in vpfe_isr()
1382 frame_format = vpfe_ccdc_get_frame_format(&vpfe->ccdc); in vpfe_detach_irq()
1386 vpfe_reg_write(&vpfe->ccdc, intr, VPFE_IRQ_EN_CLR); in vpfe_detach_irq()
1394 frame_format = vpfe_ccdc_get_frame_format(&vpfe->ccdc); in vpfe_attach_irq()
1398 vpfe_reg_write(&vpfe->ccdc, intr, VPFE_IRQ_EN_SET); in vpfe_attach_irq()
1814 ret = vpfe_ccdc_set_hw_if_params(&vpfe->ccdc, &sdinfo->vpfe_param); in vpfe_set_input()
1908 vpfe_ccdc_get_image_window(&vpfe->ccdc, &image_win); in vpfe_calculate_offsets()
2011 if (vpfe->ccdc.ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_start_streaming()
2012 vpfe_ccdc_config_raw(&vpfe->ccdc); in vpfe_start_streaming()
2014 vpfe_ccdc_config_ycbcr(&vpfe->ccdc); in vpfe_start_streaming()
2026 vpfe_set_sdr_addr(&vpfe->ccdc, (unsigned long)(addr)); in vpfe_start_streaming()
2028 vpfe_pcr_enable(&vpfe->ccdc, 1); in vpfe_start_streaming()
2061 vpfe_pcr_enable(&vpfe->ccdc, 0); in vpfe_stop_streaming()
2183 vpfe_ccdc_set_image_window(&vpfe->ccdc, &r, vpfe->bpp); in vpfe_s_selection()
2186 vpfe->fmt.fmt.pix.bytesperline = vpfe_ccdc_get_line_length(&vpfe->ccdc); in vpfe_s_selection()
2217 ret = vpfe_ccdc_set_params(&vpfe->ccdc, (void __user *)param); in vpfe_ioctl_default()
2542 struct vpfe_ccdc *ccdc; in vpfe_probe() local
2557 ccdc = &vpfe->ccdc; in vpfe_probe()
2560 ccdc->ccdc_cfg.base_addr = devm_ioremap_resource(&pdev->dev, res); in vpfe_probe()
2561 if (IS_ERR(ccdc->ccdc_cfg.base_addr)) in vpfe_probe()
2562 return PTR_ERR(ccdc->ccdc_cfg.base_addr); in vpfe_probe()
2592 vpfe_ccdc_config_defaults(ccdc); in vpfe_probe()
2642 static void vpfe_save_context(struct vpfe_ccdc *ccdc) in vpfe_save_context() argument
2644 ccdc->ccdc_ctx[VPFE_PCR >> 2] = vpfe_reg_read(ccdc, VPFE_PCR); in vpfe_save_context()
2645 ccdc->ccdc_ctx[VPFE_SYNMODE >> 2] = vpfe_reg_read(ccdc, VPFE_SYNMODE); in vpfe_save_context()
2646 ccdc->ccdc_ctx[VPFE_SDOFST >> 2] = vpfe_reg_read(ccdc, VPFE_SDOFST); in vpfe_save_context()
2647 ccdc->ccdc_ctx[VPFE_SDR_ADDR >> 2] = vpfe_reg_read(ccdc, VPFE_SDR_ADDR); in vpfe_save_context()
2648 ccdc->ccdc_ctx[VPFE_CLAMP >> 2] = vpfe_reg_read(ccdc, VPFE_CLAMP); in vpfe_save_context()
2649 ccdc->ccdc_ctx[VPFE_DCSUB >> 2] = vpfe_reg_read(ccdc, VPFE_DCSUB); in vpfe_save_context()
2650 ccdc->ccdc_ctx[VPFE_COLPTN >> 2] = vpfe_reg_read(ccdc, VPFE_COLPTN); in vpfe_save_context()
2651 ccdc->ccdc_ctx[VPFE_BLKCMP >> 2] = vpfe_reg_read(ccdc, VPFE_BLKCMP); in vpfe_save_context()
2652 ccdc->ccdc_ctx[VPFE_VDINT >> 2] = vpfe_reg_read(ccdc, VPFE_VDINT); in vpfe_save_context()
2653 ccdc->ccdc_ctx[VPFE_ALAW >> 2] = vpfe_reg_read(ccdc, VPFE_ALAW); in vpfe_save_context()
2654 ccdc->ccdc_ctx[VPFE_REC656IF >> 2] = vpfe_reg_read(ccdc, VPFE_REC656IF); in vpfe_save_context()
2655 ccdc->ccdc_ctx[VPFE_CCDCFG >> 2] = vpfe_reg_read(ccdc, VPFE_CCDCFG); in vpfe_save_context()
2656 ccdc->ccdc_ctx[VPFE_CULLING >> 2] = vpfe_reg_read(ccdc, VPFE_CULLING); in vpfe_save_context()
2657 ccdc->ccdc_ctx[VPFE_HD_VD_WID >> 2] = vpfe_reg_read(ccdc, in vpfe_save_context()
2659 ccdc->ccdc_ctx[VPFE_PIX_LINES >> 2] = vpfe_reg_read(ccdc, in vpfe_save_context()
2661 ccdc->ccdc_ctx[VPFE_HORZ_INFO >> 2] = vpfe_reg_read(ccdc, in vpfe_save_context()
2663 ccdc->ccdc_ctx[VPFE_VERT_START >> 2] = vpfe_reg_read(ccdc, in vpfe_save_context()
2665 ccdc->ccdc_ctx[VPFE_VERT_LINES >> 2] = vpfe_reg_read(ccdc, in vpfe_save_context()
2667 ccdc->ccdc_ctx[VPFE_HSIZE_OFF >> 2] = vpfe_reg_read(ccdc, in vpfe_save_context()
2675 struct vpfe_ccdc *ccdc = &vpfe->ccdc; in vpfe_suspend() local
2682 vpfe_config_enable(ccdc, 1); in vpfe_suspend()
2685 vpfe_save_context(ccdc); in vpfe_suspend()
2688 vpfe_pcr_enable(ccdc, 0); in vpfe_suspend()
2689 vpfe_config_enable(ccdc, 0); in vpfe_suspend()
2700 static void vpfe_restore_context(struct vpfe_ccdc *ccdc) in vpfe_restore_context() argument
2702 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_SYNMODE >> 2], VPFE_SYNMODE); in vpfe_restore_context()
2703 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_CULLING >> 2], VPFE_CULLING); in vpfe_restore_context()
2704 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_SDOFST >> 2], VPFE_SDOFST); in vpfe_restore_context()
2705 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_SDR_ADDR >> 2], VPFE_SDR_ADDR); in vpfe_restore_context()
2706 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_CLAMP >> 2], VPFE_CLAMP); in vpfe_restore_context()
2707 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_DCSUB >> 2], VPFE_DCSUB); in vpfe_restore_context()
2708 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_COLPTN >> 2], VPFE_COLPTN); in vpfe_restore_context()
2709 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_BLKCMP >> 2], VPFE_BLKCMP); in vpfe_restore_context()
2710 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_VDINT >> 2], VPFE_VDINT); in vpfe_restore_context()
2711 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_ALAW >> 2], VPFE_ALAW); in vpfe_restore_context()
2712 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_REC656IF >> 2], VPFE_REC656IF); in vpfe_restore_context()
2713 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_CCDCFG >> 2], VPFE_CCDCFG); in vpfe_restore_context()
2714 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_PCR >> 2], VPFE_PCR); in vpfe_restore_context()
2715 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_HD_VD_WID >> 2], in vpfe_restore_context()
2717 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_PIX_LINES >> 2], in vpfe_restore_context()
2719 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_HORZ_INFO >> 2], in vpfe_restore_context()
2721 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_VERT_START >> 2], in vpfe_restore_context()
2723 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_VERT_LINES >> 2], in vpfe_restore_context()
2725 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_HSIZE_OFF >> 2], in vpfe_restore_context()
2733 struct vpfe_ccdc *ccdc = &vpfe->ccdc; in vpfe_resume() local
2741 vpfe_config_enable(ccdc, 1); in vpfe_resume()
2744 vpfe_restore_context(ccdc); in vpfe_resume()
2746 vpfe_config_enable(ccdc, 0); in vpfe_resume()