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.

The discussion has been closed due to inactivity. To continue with the topic, please feel free to post a new discussion.