Lines Matching refs:ccdc

295 static inline u32 vpfe_reg_read(struct vpfe_ccdc *ccdc, u32 offset)  in vpfe_reg_read()  argument
297 return ioread32(ccdc->ccdc_cfg.base_addr + offset); in vpfe_reg_read()
300 static inline void vpfe_reg_write(struct vpfe_ccdc *ccdc, u32 val, u32 offset) in vpfe_reg_write() argument
302 iowrite32(val, ccdc->ccdc_cfg.base_addr + offset); in vpfe_reg_write()
305 static inline struct vpfe_device *to_vpfe(struct vpfe_ccdc *ccdc) in to_vpfe() argument
307 return container_of(ccdc, struct vpfe_device, ccdc); in to_vpfe()
316 static inline void vpfe_pcr_enable(struct vpfe_ccdc *ccdc, int flag) in vpfe_pcr_enable() argument
318 vpfe_reg_write(ccdc, !!flag, VPFE_PCR); in vpfe_pcr_enable()
321 static void vpfe_config_enable(struct vpfe_ccdc *ccdc, int flag) in vpfe_config_enable() argument
326 cfg = vpfe_reg_read(ccdc, VPFE_CONFIG); in vpfe_config_enable()
332 vpfe_reg_write(ccdc, cfg, VPFE_CONFIG); in vpfe_config_enable()
335 static void vpfe_ccdc_setwin(struct vpfe_ccdc *ccdc, in vpfe_ccdc_setwin() argument
351 vpfe_reg_write(ccdc, (horz_start << VPFE_HORZ_INFO_SPH_SHIFT) | in vpfe_ccdc_setwin()
376 vpfe_reg_write(ccdc, val, VPFE_VDINT); in vpfe_ccdc_setwin()
378 vpfe_reg_write(ccdc, (vert_start << VPFE_VERT_START_SLV0_SHIFT) | in vpfe_ccdc_setwin()
380 vpfe_reg_write(ccdc, vert_nr_lines, VPFE_VERT_LINES); in vpfe_ccdc_setwin()
383 static void vpfe_reg_dump(struct vpfe_ccdc *ccdc) in vpfe_reg_dump() argument
385 struct vpfe_device *vpfe = to_vpfe(ccdc); in vpfe_reg_dump()
387 vpfe_dbg(3, vpfe, "ALAW: 0x%x\n", vpfe_reg_read(ccdc, VPFE_ALAW)); in vpfe_reg_dump()
388 vpfe_dbg(3, vpfe, "CLAMP: 0x%x\n", vpfe_reg_read(ccdc, VPFE_CLAMP)); in vpfe_reg_dump()
389 vpfe_dbg(3, vpfe, "DCSUB: 0x%x\n", vpfe_reg_read(ccdc, VPFE_DCSUB)); in vpfe_reg_dump()
390 vpfe_dbg(3, vpfe, "BLKCMP: 0x%x\n", vpfe_reg_read(ccdc, VPFE_BLKCMP)); in vpfe_reg_dump()
391 vpfe_dbg(3, vpfe, "COLPTN: 0x%x\n", vpfe_reg_read(ccdc, VPFE_COLPTN)); in vpfe_reg_dump()
392 vpfe_dbg(3, vpfe, "SDOFST: 0x%x\n", vpfe_reg_read(ccdc, VPFE_SDOFST)); in vpfe_reg_dump()
394 vpfe_reg_read(ccdc, VPFE_SYNMODE)); in vpfe_reg_dump()
396 vpfe_reg_read(ccdc, VPFE_HSIZE_OFF)); in vpfe_reg_dump()
398 vpfe_reg_read(ccdc, VPFE_HORZ_INFO)); in vpfe_reg_dump()
400 vpfe_reg_read(ccdc, VPFE_VERT_START)); in vpfe_reg_dump()
402 vpfe_reg_read(ccdc, VPFE_VERT_LINES)); in vpfe_reg_dump()
406 vpfe_ccdc_validate_param(struct vpfe_ccdc *ccdc, in vpfe_ccdc_validate_param() argument
409 struct vpfe_device *vpfe = to_vpfe(ccdc); in vpfe_ccdc_validate_param()
429 vpfe_ccdc_update_raw_params(struct vpfe_ccdc *ccdc, in vpfe_ccdc_update_raw_params() argument
433 &ccdc->ccdc_cfg.bayer.config_params; in vpfe_ccdc_update_raw_params()
442 static void vpfe_ccdc_restore_defaults(struct vpfe_ccdc *ccdc) in vpfe_ccdc_restore_defaults() argument
447 vpfe_pcr_enable(ccdc, 0); in vpfe_ccdc_restore_defaults()
451 vpfe_reg_write(ccdc, 0, i); in vpfe_ccdc_restore_defaults()
453 vpfe_reg_write(ccdc, VPFE_NO_CULLING, VPFE_CULLING); in vpfe_ccdc_restore_defaults()
454 vpfe_reg_write(ccdc, VPFE_CCDC_GAMMA_BITS_11_2, VPFE_ALAW); in vpfe_ccdc_restore_defaults()
457 static int vpfe_ccdc_close(struct vpfe_ccdc *ccdc, struct device *dev) in vpfe_ccdc_close() argument
464 pcr = vpfe_reg_read(ccdc, VPFE_PCR); in vpfe_ccdc_close()
469 vpfe_pcr_enable(ccdc, 0); in vpfe_ccdc_close()
473 vpfe_ccdc_restore_defaults(ccdc); in vpfe_ccdc_close()
479 dma_cntl = vpfe_reg_read(ccdc, VPFE_DMA_CNTL); in vpfe_ccdc_close()
484 vpfe_reg_write(ccdc, dma_cntl, VPFE_DMA_CNTL); in vpfe_ccdc_close()
489 vpfe_config_enable(ccdc, 0); in vpfe_ccdc_close()
496 static int vpfe_ccdc_set_params(struct vpfe_ccdc *ccdc, void __user *params) in vpfe_ccdc_set_params() argument
498 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); in vpfe_ccdc_set_params()
502 if (ccdc->ccdc_cfg.if_type != VPFE_RAW_BAYER) in vpfe_ccdc_set_params()
513 if (!vpfe_ccdc_validate_param(ccdc, &raw_params)) { in vpfe_ccdc_set_params()
514 vpfe_ccdc_update_raw_params(ccdc, &raw_params); in vpfe_ccdc_set_params()
525 static void vpfe_ccdc_config_ycbcr(struct vpfe_ccdc *ccdc) in vpfe_ccdc_config_ycbcr() argument
527 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); in vpfe_ccdc_config_ycbcr()
528 struct ccdc_params_ycbcr *params = &ccdc->ccdc_cfg.ycbcr; in vpfe_ccdc_config_ycbcr()
537 vpfe_ccdc_restore_defaults(ccdc); in vpfe_ccdc_config_ycbcr()
552 vpfe_reg_write(ccdc, VPFE_REC656IF_BT656_EN, VPFE_REC656IF); in vpfe_ccdc_config_ycbcr()
559 if (ccdc->ccdc_cfg.if_type == VPFE_BT656_10BIT) in vpfe_ccdc_config_ycbcr()
572 vpfe_reg_write(ccdc, syn_mode, VPFE_SYNMODE); in vpfe_ccdc_config_ycbcr()
575 vpfe_ccdc_setwin(ccdc, &params->win, in vpfe_ccdc_config_ycbcr()
582 if (ccdc->ccdc_cfg.if_type == VPFE_BT656_10BIT) in vpfe_ccdc_config_ycbcr()
583 vpfe_reg_write(ccdc, in vpfe_ccdc_config_ycbcr()
588 vpfe_reg_write(ccdc, in vpfe_ccdc_config_ycbcr()
596 vpfe_reg_write(ccdc, params->bytesperline, VPFE_HSIZE_OFF); in vpfe_ccdc_config_ycbcr()
601 vpfe_reg_write(ccdc, VPFE_SDOFST_FIELD_INTERLEAVED, in vpfe_ccdc_config_ycbcr()
606 vpfe_ccdc_config_black_clamp(struct vpfe_ccdc *ccdc, in vpfe_ccdc_config_black_clamp() argument
614 vpfe_reg_write(ccdc, val, VPFE_DCSUB); in vpfe_ccdc_config_black_clamp()
615 vpfe_reg_write(ccdc, VPFE_CLAMP_DEFAULT_VAL, VPFE_CLAMP); in vpfe_ccdc_config_black_clamp()
629 vpfe_reg_write(ccdc, val, VPFE_CLAMP); in vpfe_ccdc_config_black_clamp()
631 vpfe_reg_write(ccdc, VPFE_DCSUB_DEFAULT_VAL, VPFE_DCSUB); in vpfe_ccdc_config_black_clamp()
635 vpfe_ccdc_config_black_compense(struct vpfe_ccdc *ccdc, in vpfe_ccdc_config_black_compense() argument
647 vpfe_reg_write(ccdc, val, VPFE_BLKCMP); in vpfe_ccdc_config_black_compense()
654 static void vpfe_ccdc_config_raw(struct vpfe_ccdc *ccdc) in vpfe_ccdc_config_raw() argument
656 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); in vpfe_ccdc_config_raw()
658 &ccdc->ccdc_cfg.bayer.config_params; in vpfe_ccdc_config_raw()
659 struct ccdc_params_raw *params = &ccdc->ccdc_cfg.bayer; in vpfe_ccdc_config_raw()
666 vpfe_ccdc_restore_defaults(ccdc); in vpfe_ccdc_config_raw()
669 vpfe_reg_write(ccdc, VPFE_LATCH_ON_VSYNC_DISABLE, VPFE_CCDCFG); in vpfe_ccdc_config_raw()
692 vpfe_reg_write(ccdc, val, VPFE_ALAW); in vpfe_ccdc_config_raw()
697 vpfe_ccdc_setwin(ccdc, &params->win, params->frm_fmt, in vpfe_ccdc_config_raw()
701 vpfe_ccdc_config_black_clamp(ccdc, &config_params->blk_clamp); in vpfe_ccdc_config_raw()
704 vpfe_ccdc_config_black_compense(ccdc, &config_params->blk_comp); in vpfe_ccdc_config_raw()
715 vpfe_reg_write(ccdc, params->bytesperline, VPFE_HSIZE_OFF); in vpfe_ccdc_config_raw()
724 vpfe_reg_write(ccdc, VPFE_INTERLACED_IMAGE_INVERT, in vpfe_ccdc_config_raw()
728 vpfe_reg_write(ccdc, VPFE_INTERLACED_NO_IMAGE_INVERT, in vpfe_ccdc_config_raw()
732 vpfe_reg_write(ccdc, VPFE_PROGRESSIVE_NO_IMAGE_INVERT, in vpfe_ccdc_config_raw()
736 vpfe_reg_write(ccdc, syn_mode, VPFE_SYNMODE); in vpfe_ccdc_config_raw()
738 vpfe_reg_dump(ccdc); in vpfe_ccdc_config_raw()
742 vpfe_ccdc_set_buftype(struct vpfe_ccdc *ccdc, in vpfe_ccdc_set_buftype() argument
745 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_ccdc_set_buftype()
746 ccdc->ccdc_cfg.bayer.buf_type = buf_type; in vpfe_ccdc_set_buftype()
748 ccdc->ccdc_cfg.ycbcr.buf_type = buf_type; in vpfe_ccdc_set_buftype()
753 static inline enum ccdc_buftype vpfe_ccdc_get_buftype(struct vpfe_ccdc *ccdc) in vpfe_ccdc_get_buftype() argument
755 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_ccdc_get_buftype()
756 return ccdc->ccdc_cfg.bayer.buf_type; in vpfe_ccdc_get_buftype()
758 return ccdc->ccdc_cfg.ycbcr.buf_type; in vpfe_ccdc_get_buftype()
761 static int vpfe_ccdc_set_pixel_format(struct vpfe_ccdc *ccdc, u32 pixfmt) in vpfe_ccdc_set_pixel_format() argument
763 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); in vpfe_ccdc_set_pixel_format()
766 ccdc->ccdc_cfg.if_type, print_fourcc(pixfmt)); in vpfe_ccdc_set_pixel_format()
768 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) { in vpfe_ccdc_set_pixel_format()
769 ccdc->ccdc_cfg.bayer.pix_fmt = CCDC_PIXFMT_RAW; in vpfe_ccdc_set_pixel_format()
774 ccdc->ccdc_cfg.bayer.config_params.alaw.enable = 0; in vpfe_ccdc_set_pixel_format()
778 ccdc->ccdc_cfg.bayer.config_params.alaw.enable = 1; in vpfe_ccdc_set_pixel_format()
795 ccdc->ccdc_cfg.ycbcr.pix_order = CCDC_PIXORDER_YCBYCR; in vpfe_ccdc_set_pixel_format()
799 ccdc->ccdc_cfg.ycbcr.pix_order = CCDC_PIXORDER_CBYCRY; in vpfe_ccdc_set_pixel_format()
810 static u32 vpfe_ccdc_get_pixel_format(struct vpfe_ccdc *ccdc) in vpfe_ccdc_get_pixel_format() argument
814 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) { in vpfe_ccdc_get_pixel_format()
817 if (ccdc->ccdc_cfg.ycbcr.pix_order == CCDC_PIXORDER_YCBYCR) in vpfe_ccdc_get_pixel_format()
827 vpfe_ccdc_set_image_window(struct vpfe_ccdc *ccdc, in vpfe_ccdc_set_image_window() argument
830 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) { in vpfe_ccdc_set_image_window()
831 ccdc->ccdc_cfg.bayer.win = *win; in vpfe_ccdc_set_image_window()
832 ccdc->ccdc_cfg.bayer.bytesperpixel = bpp; in vpfe_ccdc_set_image_window()
833 ccdc->ccdc_cfg.bayer.bytesperline = ALIGN(win->width * bpp, 32); in vpfe_ccdc_set_image_window()
835 ccdc->ccdc_cfg.ycbcr.win = *win; in vpfe_ccdc_set_image_window()
836 ccdc->ccdc_cfg.ycbcr.bytesperpixel = bpp; in vpfe_ccdc_set_image_window()
837 ccdc->ccdc_cfg.ycbcr.bytesperline = ALIGN(win->width * bpp, 32); in vpfe_ccdc_set_image_window()
844 vpfe_ccdc_get_image_window(struct vpfe_ccdc *ccdc, in vpfe_ccdc_get_image_window() argument
847 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_ccdc_get_image_window()
848 *win = ccdc->ccdc_cfg.bayer.win; in vpfe_ccdc_get_image_window()
850 *win = ccdc->ccdc_cfg.ycbcr.win; in vpfe_ccdc_get_image_window()
853 static inline unsigned int vpfe_ccdc_get_line_length(struct vpfe_ccdc *ccdc) in vpfe_ccdc_get_line_length() argument
855 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_ccdc_get_line_length()
856 return ccdc->ccdc_cfg.bayer.bytesperline; in vpfe_ccdc_get_line_length()
858 return ccdc->ccdc_cfg.ycbcr.bytesperline; in vpfe_ccdc_get_line_length()
862 vpfe_ccdc_set_frame_format(struct vpfe_ccdc *ccdc, in vpfe_ccdc_set_frame_format() argument
865 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_ccdc_set_frame_format()
866 ccdc->ccdc_cfg.bayer.frm_fmt = frm_fmt; in vpfe_ccdc_set_frame_format()
868 ccdc->ccdc_cfg.ycbcr.frm_fmt = frm_fmt; in vpfe_ccdc_set_frame_format()
874 vpfe_ccdc_get_frame_format(struct vpfe_ccdc *ccdc) in vpfe_ccdc_get_frame_format() argument
876 if (ccdc->ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_ccdc_get_frame_format()
877 return ccdc->ccdc_cfg.bayer.frm_fmt; in vpfe_ccdc_get_frame_format()
879 return ccdc->ccdc_cfg.ycbcr.frm_fmt; in vpfe_ccdc_get_frame_format()
882 static inline int vpfe_ccdc_getfid(struct vpfe_ccdc *ccdc) in vpfe_ccdc_getfid() argument
884 return (vpfe_reg_read(ccdc, VPFE_SYNMODE) >> 15) & 1; in vpfe_ccdc_getfid()
887 static inline void vpfe_set_sdr_addr(struct vpfe_ccdc *ccdc, unsigned long addr) in vpfe_set_sdr_addr() argument
889 vpfe_reg_write(ccdc, addr & 0xffffffe0, VPFE_SDR_ADDR); in vpfe_set_sdr_addr()
892 static int vpfe_ccdc_set_hw_if_params(struct vpfe_ccdc *ccdc, in vpfe_ccdc_set_hw_if_params() argument
895 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); in vpfe_ccdc_set_hw_if_params()
897 ccdc->ccdc_cfg.if_type = params->if_type; in vpfe_ccdc_set_hw_if_params()
904 ccdc->ccdc_cfg.ycbcr.vd_pol = params->vdpol; in vpfe_ccdc_set_hw_if_params()
905 ccdc->ccdc_cfg.ycbcr.hd_pol = params->hdpol; in vpfe_ccdc_set_hw_if_params()
909 ccdc->ccdc_cfg.bayer.vd_pol = params->vdpol; in vpfe_ccdc_set_hw_if_params()
910 ccdc->ccdc_cfg.bayer.hd_pol = params->hdpol; in vpfe_ccdc_set_hw_if_params()
912 ccdc->ccdc_cfg.bayer.config_params.data_sz = in vpfe_ccdc_set_hw_if_params()
915 ccdc->ccdc_cfg.bayer.config_params.data_sz = in vpfe_ccdc_set_hw_if_params()
920 ccdc->ccdc_cfg.bayer.config_params.data_sz); in vpfe_ccdc_set_hw_if_params()
930 static void vpfe_clear_intr(struct vpfe_ccdc *ccdc, int vdint) in vpfe_clear_intr() argument
934 vpfe_int_status = vpfe_reg_read(ccdc, VPFE_IRQ_STS); in vpfe_clear_intr()
966 vpfe_reg_write(ccdc, vpfe_int_status, VPFE_IRQ_STS); in vpfe_clear_intr()
968 vpfe_int_status = vpfe_reg_read(ccdc, VPFE_IRQ_STS); in vpfe_clear_intr()
971 vpfe_reg_write(ccdc, 1, VPFE_IRQ_EOI); in vpfe_clear_intr()
974 static void vpfe_ccdc_config_defaults(struct vpfe_ccdc *ccdc) in vpfe_ccdc_config_defaults() argument
976 ccdc->ccdc_cfg.if_type = VPFE_RAW_BAYER; in vpfe_ccdc_config_defaults()
978 ccdc->ccdc_cfg.ycbcr.pix_fmt = CCDC_PIXFMT_YCBCR_8BIT; in vpfe_ccdc_config_defaults()
979 ccdc->ccdc_cfg.ycbcr.frm_fmt = CCDC_FRMFMT_INTERLACED; in vpfe_ccdc_config_defaults()
980 ccdc->ccdc_cfg.ycbcr.fid_pol = VPFE_PINPOL_POSITIVE; in vpfe_ccdc_config_defaults()
981 ccdc->ccdc_cfg.ycbcr.vd_pol = VPFE_PINPOL_POSITIVE; in vpfe_ccdc_config_defaults()
982 ccdc->ccdc_cfg.ycbcr.hd_pol = VPFE_PINPOL_POSITIVE; in vpfe_ccdc_config_defaults()
983 ccdc->ccdc_cfg.ycbcr.pix_order = CCDC_PIXORDER_CBYCRY; in vpfe_ccdc_config_defaults()
984 ccdc->ccdc_cfg.ycbcr.buf_type = CCDC_BUFTYPE_FLD_INTERLEAVED; in vpfe_ccdc_config_defaults()
986 ccdc->ccdc_cfg.ycbcr.win.left = 0; in vpfe_ccdc_config_defaults()
987 ccdc->ccdc_cfg.ycbcr.win.top = 0; in vpfe_ccdc_config_defaults()
988 ccdc->ccdc_cfg.ycbcr.win.width = 720; in vpfe_ccdc_config_defaults()
989 ccdc->ccdc_cfg.ycbcr.win.height = 576; in vpfe_ccdc_config_defaults()
990 ccdc->ccdc_cfg.ycbcr.bt656_enable = 1; in vpfe_ccdc_config_defaults()
992 ccdc->ccdc_cfg.bayer.pix_fmt = CCDC_PIXFMT_RAW; in vpfe_ccdc_config_defaults()
993 ccdc->ccdc_cfg.bayer.frm_fmt = CCDC_FRMFMT_PROGRESSIVE; in vpfe_ccdc_config_defaults()
994 ccdc->ccdc_cfg.bayer.fid_pol = VPFE_PINPOL_POSITIVE; in vpfe_ccdc_config_defaults()
995 ccdc->ccdc_cfg.bayer.vd_pol = VPFE_PINPOL_POSITIVE; in vpfe_ccdc_config_defaults()
996 ccdc->ccdc_cfg.bayer.hd_pol = VPFE_PINPOL_POSITIVE; in vpfe_ccdc_config_defaults()
998 ccdc->ccdc_cfg.bayer.win.left = 0; in vpfe_ccdc_config_defaults()
999 ccdc->ccdc_cfg.bayer.win.top = 0; in vpfe_ccdc_config_defaults()
1000 ccdc->ccdc_cfg.bayer.win.width = 800; in vpfe_ccdc_config_defaults()
1001 ccdc->ccdc_cfg.bayer.win.height = 600; in vpfe_ccdc_config_defaults()
1002 ccdc->ccdc_cfg.bayer.config_params.data_sz = VPFE_CCDC_DATA_8BITS; in vpfe_ccdc_config_defaults()
1003 ccdc->ccdc_cfg.bayer.config_params.alaw.gamma_wd = in vpfe_ccdc_config_defaults()
1019 vpfe_ccdc_get_image_window(&vpfe->ccdc, &image_win); in vpfe_get_ccdc_image_format()
1022 f->fmt.pix.bytesperline = vpfe_ccdc_get_line_length(&vpfe->ccdc); in vpfe_get_ccdc_image_format()
1025 buf_type = vpfe_ccdc_get_buftype(&vpfe->ccdc); in vpfe_get_ccdc_image_format()
1026 f->fmt.pix.pixelformat = vpfe_ccdc_get_pixel_format(&vpfe->ccdc); in vpfe_get_ccdc_image_format()
1027 frm_fmt = vpfe_ccdc_get_frame_format(&vpfe->ccdc); in vpfe_get_ccdc_image_format()
1057 if (vpfe_ccdc_set_pixel_format(&vpfe->ccdc, in vpfe_config_ccdc_image_format()
1064 vpfe_ccdc_set_image_window(&vpfe->ccdc, &vpfe->crop, vpfe->bpp); in vpfe_config_ccdc_image_format()
1070 &vpfe->ccdc, in vpfe_config_ccdc_image_format()
1081 &vpfe->ccdc, in vpfe_config_ccdc_image_format()
1092 return vpfe_ccdc_set_frame_format(&vpfe->ccdc, frm_fmt); in vpfe_config_ccdc_image_format()
1171 vpfe_config_enable(&vpfe->ccdc, 1); in vpfe_initialize_device()
1173 vpfe_ccdc_restore_defaults(&vpfe->ccdc); in vpfe_initialize_device()
1176 vpfe_clear_intr(&vpfe->ccdc, -1); in vpfe_initialize_device()
1206 vpfe_ccdc_close(&vpfe->ccdc, vpfe->pdev); in vpfe_release()
1260 vpfe_set_sdr_addr(&vpfe->ccdc, in vpfe_schedule_next_buffer()
1271 vpfe_set_sdr_addr(&vpfe->ccdc, addr); in vpfe_schedule_bottom_field()
1306 intr_status = vpfe_reg_read(&vpfe->ccdc, VPFE_IRQ_STS); in vpfe_isr()
1320 fid = vpfe_ccdc_getfid(&vpfe->ccdc); in vpfe_isr()
1374 vpfe_clear_intr(&vpfe->ccdc, intr_status); in vpfe_isr()
1384 frame_format = vpfe_ccdc_get_frame_format(&vpfe->ccdc); in vpfe_detach_irq()
1388 vpfe_reg_write(&vpfe->ccdc, intr, VPFE_IRQ_EN_CLR); in vpfe_detach_irq()
1396 frame_format = vpfe_ccdc_get_frame_format(&vpfe->ccdc); in vpfe_attach_irq()
1400 vpfe_reg_write(&vpfe->ccdc, intr, VPFE_IRQ_EN_SET); in vpfe_attach_irq()
1800 ret = vpfe_ccdc_set_hw_if_params(&vpfe->ccdc, &sdinfo->vpfe_param); in vpfe_set_input()
1894 vpfe_ccdc_get_image_window(&vpfe->ccdc, &image_win); in vpfe_calculate_offsets()
2000 if (vpfe->ccdc.ccdc_cfg.if_type == VPFE_RAW_BAYER) in vpfe_start_streaming()
2001 vpfe_ccdc_config_raw(&vpfe->ccdc); in vpfe_start_streaming()
2003 vpfe_ccdc_config_ycbcr(&vpfe->ccdc); in vpfe_start_streaming()
2015 vpfe_set_sdr_addr(&vpfe->ccdc, (unsigned long)(addr)); in vpfe_start_streaming()
2017 vpfe_pcr_enable(&vpfe->ccdc, 1); in vpfe_start_streaming()
2050 vpfe_pcr_enable(&vpfe->ccdc, 0); in vpfe_stop_streaming()
2174 vpfe_ccdc_set_image_window(&vpfe->ccdc, &r, vpfe->bpp); in vpfe_s_selection()
2177 vpfe->fmt.fmt.pix.bytesperline = vpfe_ccdc_get_line_length(&vpfe->ccdc); in vpfe_s_selection()
2208 ret = vpfe_ccdc_set_params(&vpfe->ccdc, (void __user *)param); in vpfe_ioctl_default()
2533 struct vpfe_ccdc *ccdc; in vpfe_probe() local
2548 ccdc = &vpfe->ccdc; in vpfe_probe()
2551 ccdc->ccdc_cfg.base_addr = devm_ioremap_resource(&pdev->dev, res); in vpfe_probe()
2552 if (IS_ERR(ccdc->ccdc_cfg.base_addr)) in vpfe_probe()
2553 return PTR_ERR(ccdc->ccdc_cfg.base_addr); in vpfe_probe()
2584 vpfe_ccdc_config_defaults(ccdc); in vpfe_probe()
2634 static void vpfe_save_context(struct vpfe_ccdc *ccdc) in vpfe_save_context() argument
2636 ccdc->ccdc_ctx[VPFE_PCR >> 2] = vpfe_reg_read(ccdc, VPFE_PCR); in vpfe_save_context()
2637 ccdc->ccdc_ctx[VPFE_SYNMODE >> 2] = vpfe_reg_read(ccdc, VPFE_SYNMODE); in vpfe_save_context()
2638 ccdc->ccdc_ctx[VPFE_SDOFST >> 2] = vpfe_reg_read(ccdc, VPFE_SDOFST); in vpfe_save_context()
2639 ccdc->ccdc_ctx[VPFE_SDR_ADDR >> 2] = vpfe_reg_read(ccdc, VPFE_SDR_ADDR); in vpfe_save_context()
2640 ccdc->ccdc_ctx[VPFE_CLAMP >> 2] = vpfe_reg_read(ccdc, VPFE_CLAMP); in vpfe_save_context()
2641 ccdc->ccdc_ctx[VPFE_DCSUB >> 2] = vpfe_reg_read(ccdc, VPFE_DCSUB); in vpfe_save_context()
2642 ccdc->ccdc_ctx[VPFE_COLPTN >> 2] = vpfe_reg_read(ccdc, VPFE_COLPTN); in vpfe_save_context()
2643 ccdc->ccdc_ctx[VPFE_BLKCMP >> 2] = vpfe_reg_read(ccdc, VPFE_BLKCMP); in vpfe_save_context()
2644 ccdc->ccdc_ctx[VPFE_VDINT >> 2] = vpfe_reg_read(ccdc, VPFE_VDINT); in vpfe_save_context()
2645 ccdc->ccdc_ctx[VPFE_ALAW >> 2] = vpfe_reg_read(ccdc, VPFE_ALAW); in vpfe_save_context()
2646 ccdc->ccdc_ctx[VPFE_REC656IF >> 2] = vpfe_reg_read(ccdc, VPFE_REC656IF); in vpfe_save_context()
2647 ccdc->ccdc_ctx[VPFE_CCDCFG >> 2] = vpfe_reg_read(ccdc, VPFE_CCDCFG); in vpfe_save_context()
2648 ccdc->ccdc_ctx[VPFE_CULLING >> 2] = vpfe_reg_read(ccdc, VPFE_CULLING); in vpfe_save_context()
2649 ccdc->ccdc_ctx[VPFE_HD_VD_WID >> 2] = vpfe_reg_read(ccdc, in vpfe_save_context()
2651 ccdc->ccdc_ctx[VPFE_PIX_LINES >> 2] = vpfe_reg_read(ccdc, in vpfe_save_context()
2653 ccdc->ccdc_ctx[VPFE_HORZ_INFO >> 2] = vpfe_reg_read(ccdc, in vpfe_save_context()
2655 ccdc->ccdc_ctx[VPFE_VERT_START >> 2] = vpfe_reg_read(ccdc, in vpfe_save_context()
2657 ccdc->ccdc_ctx[VPFE_VERT_LINES >> 2] = vpfe_reg_read(ccdc, in vpfe_save_context()
2659 ccdc->ccdc_ctx[VPFE_HSIZE_OFF >> 2] = vpfe_reg_read(ccdc, in vpfe_save_context()
2667 struct vpfe_ccdc *ccdc = &vpfe->ccdc; in vpfe_suspend() local
2674 vpfe_config_enable(ccdc, 1); in vpfe_suspend()
2677 vpfe_save_context(ccdc); in vpfe_suspend()
2680 vpfe_pcr_enable(ccdc, 0); in vpfe_suspend()
2681 vpfe_config_enable(ccdc, 0); in vpfe_suspend()
2692 static void vpfe_restore_context(struct vpfe_ccdc *ccdc) in vpfe_restore_context() argument
2694 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_SYNMODE >> 2], VPFE_SYNMODE); in vpfe_restore_context()
2695 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_CULLING >> 2], VPFE_CULLING); in vpfe_restore_context()
2696 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_SDOFST >> 2], VPFE_SDOFST); in vpfe_restore_context()
2697 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_SDR_ADDR >> 2], VPFE_SDR_ADDR); in vpfe_restore_context()
2698 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_CLAMP >> 2], VPFE_CLAMP); in vpfe_restore_context()
2699 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_DCSUB >> 2], VPFE_DCSUB); in vpfe_restore_context()
2700 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_COLPTN >> 2], VPFE_COLPTN); in vpfe_restore_context()
2701 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_BLKCMP >> 2], VPFE_BLKCMP); in vpfe_restore_context()
2702 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_VDINT >> 2], VPFE_VDINT); in vpfe_restore_context()
2703 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_ALAW >> 2], VPFE_ALAW); in vpfe_restore_context()
2704 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_REC656IF >> 2], VPFE_REC656IF); in vpfe_restore_context()
2705 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_CCDCFG >> 2], VPFE_CCDCFG); in vpfe_restore_context()
2706 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_PCR >> 2], VPFE_PCR); in vpfe_restore_context()
2707 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_HD_VD_WID >> 2], in vpfe_restore_context()
2709 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_PIX_LINES >> 2], in vpfe_restore_context()
2711 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_HORZ_INFO >> 2], in vpfe_restore_context()
2713 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_VERT_START >> 2], in vpfe_restore_context()
2715 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_VERT_LINES >> 2], in vpfe_restore_context()
2717 vpfe_reg_write(ccdc, ccdc->ccdc_ctx[VPFE_HSIZE_OFF >> 2], in vpfe_restore_context()
2725 struct vpfe_ccdc *ccdc = &vpfe->ccdc; in vpfe_resume() local
2733 vpfe_config_enable(ccdc, 1); in vpfe_resume()
2736 vpfe_restore_context(ccdc); in vpfe_resume()
2738 vpfe_config_enable(ccdc, 0); in vpfe_resume()