Lines Matching +full:misc +full:- +full:latch

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Copyright (C) 2006-2009 Texas Instruments Inc
6 * ------------------------------
11 * pre-process the Raw Bayer RGB data, before writing it to SDRAM.
126 * ppc - per pixel count. indicates how many pixels per cell in ccdc_setwin()
130 horz_start = image_win->left << (ppc - 1); in ccdc_setwin()
131 horz_nr_pixels = (image_win->width << (ppc - 1)) - 1; in ccdc_setwin()
135 vert_start = image_win->top; in ccdc_setwin()
138 vert_nr_lines = (image_win->height >> 1) - 1; in ccdc_setwin()
149 vert_nr_lines = image_win->height - 1; in ccdc_setwin()
154 mid_img = vert_start + (image_win->height / 2); in ccdc_setwin()
263 syn_mode = (((params->pix_fmt & CCDC_SYN_MODE_INPMOD_MASK) << in ccdc_config_ycbcr()
265 ((params->frm_fmt & CCDC_SYN_FLDMODE_MASK) << in ccdc_config_ycbcr()
270 if (params->bt656_enable) { in ccdc_config_ycbcr()
275 * fld,hd pol positive, vd negative, 8-bit data in ccdc_config_ycbcr()
284 syn_mode |= (((params->fid_pol & CCDC_FID_POL_MASK) << in ccdc_config_ycbcr()
286 ((params->hd_pol & CCDC_HD_POL_MASK) << in ccdc_config_ycbcr()
288 ((params->vd_pol & CCDC_VD_POL_MASK) << in ccdc_config_ycbcr()
294 ccdc_setwin(&params->win, params->frm_fmt, 2); in ccdc_config_ycbcr()
297 * configure the order of y cb cr in SDRAM, and disable latch in ccdc_config_ycbcr()
301 regw((params->pix_order << CCDC_CCDCFG_Y8POS_SHIFT) | in ccdc_config_ycbcr()
305 regw((params->pix_order << CCDC_CCDCFG_Y8POS_SHIFT) | in ccdc_config_ycbcr()
312 regw(((params->win.width * 2 + 31) & ~0x1f), CCDC_HSIZE_OFF); in ccdc_config_ycbcr()
315 if (params->buf_type == CCDC_BUFTYPE_FLD_INTERLEAVED) in ccdc_config_ycbcr()
327 if (!bclamp->enable) { in ccdc_config_black_clamp()
329 val = (bclamp->dc_sub) & CCDC_BLK_DC_SUB_MASK; in ccdc_config_black_clamp()
340 val = ((bclamp->sgain & CCDC_BLK_SGAIN_MASK) | in ccdc_config_black_clamp()
341 ((bclamp->start_pixel & CCDC_BLK_ST_PXL_MASK) << in ccdc_config_black_clamp()
343 ((bclamp->sample_ln & CCDC_BLK_SAMPLE_LINE_MASK) << in ccdc_config_black_clamp()
345 ((bclamp->sample_pixel & CCDC_BLK_SAMPLE_LN_MASK) << in ccdc_config_black_clamp()
358 val = ((bcomp->b & CCDC_BLK_COMP_MASK) | in ccdc_config_black_compense()
359 ((bcomp->gb & CCDC_BLK_COMP_MASK) << in ccdc_config_black_compense()
361 ((bcomp->gr & CCDC_BLK_COMP_MASK) << in ccdc_config_black_compense()
363 ((bcomp->r & CCDC_BLK_COMP_MASK) << in ccdc_config_black_compense()
396 (((params->vd_pol & CCDC_VD_POL_MASK) << CCDC_VD_POL_SHIFT) | in ccdc_config_raw()
397 ((params->hd_pol & CCDC_HD_POL_MASK) << CCDC_HD_POL_SHIFT) | in ccdc_config_raw()
398 ((params->fid_pol & CCDC_FID_POL_MASK) << CCDC_FID_POL_SHIFT) | in ccdc_config_raw()
399 ((params->frm_fmt & CCDC_FRM_FMT_MASK) << CCDC_FRM_FMT_SHIFT) | in ccdc_config_raw()
400 ((config_params->data_sz & CCDC_DATA_SZ_MASK) << in ccdc_config_raw()
402 ((params->pix_fmt & CCDC_PIX_FMT_MASK) << CCDC_PIX_FMT_SHIFT) | in ccdc_config_raw()
406 if (config_params->alaw.enable) { in ccdc_config_raw()
407 val = ((config_params->alaw.gamma_wd & in ccdc_config_raw()
414 ccdc_setwin(&params->win, params->frm_fmt, CCDC_PPC_RAW); in ccdc_config_raw()
417 ccdc_config_black_clamp(&config_params->blk_clamp); in ccdc_config_raw()
420 ccdc_config_black_compense(&config_params->blk_comp); in ccdc_config_raw()
423 if ((config_params->data_sz == CCDC_DATA_8BITS) || in ccdc_config_raw()
424 config_params->alaw.enable) in ccdc_config_raw()
430 if (config_params->data_sz == CCDC_DATA_8BITS) in ccdc_config_raw()
434 val |= (config_params->data_sz & CCDC_FMTCFG_VPIN_MASK) in ccdc_config_raw()
448 val = ((params->win.left & CCDC_FMT_HORZ_FMTSPH_MASK) << in ccdc_config_raw()
450 (params->win.width & CCDC_FMT_HORZ_FMTLNH_MASK); in ccdc_config_raw()
454 val = (params->win.top & CCDC_FMT_VERT_FMTSLV_MASK) in ccdc_config_raw()
456 if (params->frm_fmt == CCDC_FRMFMT_PROGRESSIVE) in ccdc_config_raw()
457 val |= (params->win.height) & CCDC_FMT_VERT_FMTLNV_MASK; in ccdc_config_raw()
459 val |= (params->win.height >> 1) & CCDC_FMT_VERT_FMTLNV_MASK; in ccdc_config_raw()
461 dev_dbg(ccdc_cfg.dev, "\nparams->win.height 0x%x ...\n", in ccdc_config_raw()
462 params->win.height); in ccdc_config_raw()
473 if ((config_params->data_sz == CCDC_DATA_8BITS) || in ccdc_config_raw()
474 config_params->alaw.enable) in ccdc_config_raw()
475 regw((params->win.width + CCDC_32BYTE_ALIGN_VAL) & in ccdc_config_raw()
479 regw(((params->win.width * CCDC_TWO_BYTES_PER_PIXEL) + in ccdc_config_raw()
484 if (params->frm_fmt == CCDC_FRMFMT_INTERLACED) { in ccdc_config_raw()
485 if (params->image_invert_enable) { in ccdc_config_raw()
496 } else if (params->frm_fmt == CCDC_FRMFMT_PROGRESSIVE) { in ccdc_config_raw()
503 * Here -1 is to make the height value less than FMT_VERT.FMTLNV in ccdc_config_raw()
505 if (params->frm_fmt == CCDC_FRMFMT_PROGRESSIVE) in ccdc_config_raw()
506 val = (((params->win.height - 1) & CCDC_VP_OUT_VERT_NUM_MASK)) in ccdc_config_raw()
510 ((((params->win.height >> CCDC_INTERLACED_HEIGHT_SHIFT) - in ccdc_config_raw()
514 val |= ((((params->win.width))) & CCDC_VP_OUT_HORZ_NUM_MASK) in ccdc_config_raw()
516 val |= (params->win.left) & CCDC_VP_OUT_HORZ_ST_MASK; in ccdc_config_raw()
555 int ret = -EINVAL; in ccdc_enum_pix()
577 return -EINVAL; in ccdc_set_pixel_format()
584 return -EINVAL; in ccdc_set_pixel_format()
595 if (alaw->enable) in ccdc_get_pixel_format()
632 if ((config_params->alaw.enable) || in ccdc_get_line_length()
633 (config_params->data_sz == CCDC_DATA_8BITS)) in ccdc_get_line_length()
664 /* misc operations */
672 ccdc_cfg.if_type = params->if_type; in ccdc_set_hw_if_params()
674 switch (params->if_type) { in ccdc_set_hw_if_params()
679 ccdc_cfg.ycbcr.vd_pol = params->vdpol; in ccdc_set_hw_if_params()
680 ccdc_cfg.ycbcr.hd_pol = params->hdpol; in ccdc_set_hw_if_params()
684 return -EINVAL; in ccdc_set_hw_if_params()
810 status = -ENODEV; in dm644x_ccdc_probe()
814 res = request_mem_region(res->start, resource_size(res), res->name); in dm644x_ccdc_probe()
816 status = -EBUSY; in dm644x_ccdc_probe()
820 ccdc_cfg.base_addr = ioremap(res->start, resource_size(res)); in dm644x_ccdc_probe()
822 status = -ENOMEM; in dm644x_ccdc_probe()
826 ccdc_cfg.dev = &pdev->dev; in dm644x_ccdc_probe()
830 release_mem_region(res->start, resource_size(res)); in dm644x_ccdc_probe()
843 release_mem_region(res->start, resource_size(res)); in dm644x_ccdc_remove()