平台: s5pc110
系统: android2.3
摄像头:bf3703、s5k5ba、gc0308、gt2005
1、在andorid2.2系统上调试好的摄像头驱动,移植到android2.3过程中有以下错误:
[36.338839] bf3703_enum_framesizes
[36.341381] bf3703_s_ctrl
[36.343985] xu_bin sx= -806203264,sy = -815800792,tx= 640,ty= 480
[36.350045] s3c-fimc-0 :fimc_capture_scaler_info: invalid source size(sx : -806203264, sy : -815800792)
报错位置:driver\media\video\samsung\fimc\fimc_capture.c中
static int fimc_capture_scaler_info(struct fimc_control *ctrl)
{
struct fimc_scaler *sc = &ctrl->sc;
struct v4l2_rect *window = &ctrl->cam->window;
int tx, ty, sx, sy;
sx = window->width;
sy = window->height;
tx = ctrl->cap->fmt.width;
ty = ctrl->cap->fmt.height;
sc->real_width = sx;
sc->real_height = sy;
printk("xu_bin sx= %d,sy = %d,tx= %d,ty= %d\n",sx,sy,tx,ty);
fimc_dbg("%s: CamOut (%d, %d), TargetOut (%d, %d)\n", \
__func__, sx, sy, tx, ty);
if (sx <= 0 || sy <= 0) {
fimc_err("%s: invalid source size(sx : %d, sy : %d)\n",
__func__, sx, sy);
return -EINVAL;
}
2,在android2.3的内核中要加入下面红色部分:
static int GT2005_enum_framesizes(struct v4l2_subdev *sd, \
struct v4l2_frmsizeenum *fsize)
{
int err = 0;
#if 1//modify by xu_bin for GB
fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
fsize->discrete.width = 640;
fsize->discrete.height = 480;
#endif
return err;
}