kdrv_csi2rx_enable fmt->pixelformat 判斷
sdk1.3, sdk1.4
kdrv_csi2rx_enable fmt->pixelformat 使用V2K_PIX_FMT_RGB565,V2K_PIX_FMT_RAW10,V2K_PIX_FMT_RAW8與kmdw_cam_set_format傳入的format定義不同(IMAGE_FORMAT_RGB565,IMAGE_FORMAT_RAW10,IMAGE_FORMAT_RAW8)
#define V2K_PIX_FMT_YCBCR v2k_fourcc('Y', 'B', 'Y', 'R')
#define V2K_PIX_FMT_RGB565 v2k_fourcc('R', 'G', 'B', 'P')
#define V2K_PIX_FMT_RAW10 v2k_fourcc('R', 'A', '1', '0')
#define V2K_PIX_FMT_RAW8 v2k_fourcc('R', 'A', 'W', '8')
#define IMAGE_FORMAT_RGB565 0
#define IMAGE_FORMAT_RAW10 1
#define IMAGE_FORMAT_RAW8 2
#define IMAGE_FORMAT_YCBCR 3
kdrv_status_t kdrv_csi2rx_enable(uint32_t input_type, uint32_t cam_idx, uint32_t sens
{
...
#ifdef SOURCE_FROM_PATTERN
CSIRX_REG_PECR_SET_PEC(csirx_base + CSI2RX_REG_PECR, 1);
val = (inw(csirx_base + CSI2RX_REG_BPGLR) & 0xFF);
cam_msg("CSI2RX_REG_BPGLR val=%x\n", val);
val = (inw(csirx_base + CSI2RX_REG_BPGHR) & 0x0F);
switch (fmt->pixelformat) {
case V2K_PIX_FMT_RGB565:
val |= 0x40;
break;
case V2K_PIX_FMT_RAW10:
val |= 0x40;
break;
case V2K_PIX_FMT_RAW8:
val |= 0;
break;
}
outw(csirx_base + CSI2RX_REG_BPGHR, val);
val = inw(csirx_base + CSI2RX_REG_BPGHR);
#endif
...
return KDRV_STATUS_OK;
}
static kmdw_status_t kmdw_cam_set_format(uint32_t cam_idx, struct cam_format *format)
{
....
if (format->pixelformat == IMAGE_FORMAT_RGB565)
bpp = 2;
else if (format->pixelformat == IMAGE_FORMAT_RAW8)
{
if(cam_ctx[cam_idx].cam_input_type == IMGSRC_IN_PORT_DPI)
bpp = 2;
else
bpp = 1;
}
...
kdrv_dpi2ahb_enable(ctx->id, format);
kdrv_csi2rx_enable(ctx->cam_input_type, ctx->id, ctx->sensor_id, format);
kmdw_sensor_set_fmt(cam_idx, &ctx->fmt);
return KMDW_STATUS_OK;
}
Comments
Hi
SOURCE_FROM_PATTERN is internally verified use and will not be used in normal case.
Format define please follow "IMAGE_FORMAT_XXX".
Thank you so much.