camera: rockchip: support set flip api
Change-Id: Ie1aea078e81a317bb938d2112902111ebbfe5fb8 Signed-off-by: Hu Kejun <william.hu@rock-chips.com>
This commit is contained in:
@@ -51,8 +51,6 @@ void aptina_camera_module_reset(
|
||||
cam_mod->exp_config.auto_exp = false;
|
||||
cam_mod->exp_config.auto_gain = false;
|
||||
cam_mod->wb_config.auto_wb = false;
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->auto_adjust_fps = true;
|
||||
cam_mod->rotation = 0;
|
||||
cam_mod->ctrl_updt = 0;
|
||||
@@ -1153,12 +1151,14 @@ int aptina_camera_module_s_ext_ctrls(
|
||||
cam_mod->hflip = true;
|
||||
else
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->flip_flg = true;
|
||||
break;
|
||||
case V4L2_CID_VFLIP:
|
||||
if (ctrl->value)
|
||||
cam_mod->vflip = true;
|
||||
else
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->flip_flg = true;
|
||||
break;
|
||||
default:
|
||||
pltfrm_camera_module_pr_warn(&cam_mod->sd,
|
||||
@@ -1329,7 +1329,22 @@ long aptina_camera_module_ioctl(struct v4l2_subdev *sd,
|
||||
int aptina_camera_module_get_flip_mirror(
|
||||
struct aptina_camera_module *cam_mod)
|
||||
{
|
||||
return pltfrm_camera_module_get_flip_mirror(&cam_mod->sd);
|
||||
int mode = 0;
|
||||
|
||||
if (!cam_mod->flip_flg)
|
||||
return -1;
|
||||
|
||||
if (cam_mod->hflip)
|
||||
mode |= APTINA_MIRROR_BIT_MASK;
|
||||
else
|
||||
mode &= ~APTINA_MIRROR_BIT_MASK;
|
||||
|
||||
if (cam_mod->vflip)
|
||||
mode |= APTINA_FLIP_BIT_MASK;
|
||||
else
|
||||
mode &= ~APTINA_FLIP_BIT_MASK;
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
int aptina_camera_module_enum_frameintervals(
|
||||
@@ -1425,9 +1440,13 @@ int aptina_camera_module_init(struct aptina_camera_module *cam_mod,
|
||||
struct aptina_camera_module_custom_config *custom)
|
||||
{
|
||||
int ret = 0;
|
||||
int mode = 0;
|
||||
|
||||
pltfrm_camera_module_pr_debug(&cam_mod->sd, "\n");
|
||||
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->flip_flg = false;
|
||||
aptina_camera_module_reset(cam_mod);
|
||||
|
||||
if (IS_ERR_OR_NULL(custom->start_streaming) ||
|
||||
@@ -1455,6 +1474,13 @@ int aptina_camera_module_init(struct aptina_camera_module *cam_mod,
|
||||
goto err;
|
||||
}
|
||||
|
||||
mode = pltfrm_camera_module_get_flip_mirror(&cam_mod->sd);
|
||||
if (mode != -1) {
|
||||
cam_mod->hflip = mode & APTINA_MIRROR_BIT_MASK ? true : false;
|
||||
cam_mod->vflip = mode & APTINA_FLIP_BIT_MASK ? true : false;
|
||||
cam_mod->flip_flg = true;
|
||||
}
|
||||
|
||||
return 0;
|
||||
err:
|
||||
pltfrm_camera_module_pr_err(&cam_mod->sd,
|
||||
|
||||
@@ -189,6 +189,7 @@ struct aptina_camera_module {
|
||||
bool frm_intrvl_valid;
|
||||
bool hflip;
|
||||
bool vflip;
|
||||
bool flip_flg;
|
||||
u32 rotation;
|
||||
void *pltfm_data;
|
||||
bool inited;
|
||||
|
||||
@@ -45,8 +45,6 @@ static void gc_camera_module_reset(
|
||||
cam_mod->exp_config.auto_exp = false;
|
||||
cam_mod->exp_config.auto_gain = false;
|
||||
cam_mod->wb_config.auto_wb = false;
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->auto_adjust_fps = true;
|
||||
cam_mod->rotation = 0;
|
||||
cam_mod->ctrl_updt = 0;
|
||||
@@ -931,12 +929,14 @@ int gc_camera_module_s_ext_ctrls(
|
||||
cam_mod->hflip = true;
|
||||
else
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->flip_flg = true;
|
||||
break;
|
||||
case V4L2_CID_VFLIP:
|
||||
if (ctrl->value)
|
||||
cam_mod->vflip = true;
|
||||
else
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->flip_flg = true;
|
||||
break;
|
||||
default:
|
||||
pltfrm_camera_module_pr_warn(&cam_mod->sd,
|
||||
@@ -1107,7 +1107,22 @@ long gc_camera_module_ioctl(struct v4l2_subdev *sd,
|
||||
int gc_camera_module_get_flip_mirror(
|
||||
struct gc_camera_module *cam_mod)
|
||||
{
|
||||
return pltfrm_camera_module_get_flip_mirror(&cam_mod->sd);
|
||||
int mode = 0;
|
||||
|
||||
if (!cam_mod->flip_flg)
|
||||
return -1;
|
||||
|
||||
if (cam_mod->hflip)
|
||||
mode |= GC_MIRROR_BIT_MASK;
|
||||
else
|
||||
mode &= ~GC_MIRROR_BIT_MASK;
|
||||
|
||||
if (cam_mod->vflip)
|
||||
mode |= GC_FLIP_BIT_MASK;
|
||||
else
|
||||
mode &= ~GC_FLIP_BIT_MASK;
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
/* ======================================================================== */
|
||||
@@ -1224,9 +1239,13 @@ int gc_camera_module_init(struct gc_camera_module *cam_mod,
|
||||
struct gc_camera_module_custom_config *custom)
|
||||
{
|
||||
int ret = 0;
|
||||
int mode = 0;
|
||||
|
||||
pltfrm_camera_module_pr_debug(&cam_mod->sd, "\n");
|
||||
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->flip_flg = false;
|
||||
gc_camera_module_reset(cam_mod);
|
||||
|
||||
if (IS_ERR_OR_NULL(custom->start_streaming) ||
|
||||
@@ -1254,6 +1273,13 @@ int gc_camera_module_init(struct gc_camera_module *cam_mod,
|
||||
goto err;
|
||||
}
|
||||
|
||||
mode = pltfrm_camera_module_get_flip_mirror(&cam_mod->sd);
|
||||
if (mode != -1) {
|
||||
cam_mod->hflip = mode & GC_MIRROR_BIT_MASK ? true : false;
|
||||
cam_mod->vflip = mode & GC_FLIP_BIT_MASK ? true : false;
|
||||
cam_mod->flip_flg = true;
|
||||
}
|
||||
|
||||
/*
|
||||
if (custom->check_camera_id) {
|
||||
gc_camera_module_s_power(&cam_mod->sd, 1);
|
||||
|
||||
@@ -202,6 +202,7 @@ struct gc_camera_module {
|
||||
bool frm_intrvl_valid;
|
||||
bool hflip;
|
||||
bool vflip;
|
||||
bool flip_flg;
|
||||
u32 rotation;
|
||||
void *pltfm_data;
|
||||
bool inited;
|
||||
|
||||
@@ -45,8 +45,6 @@ static void imx_camera_module_reset(
|
||||
cam_mod->exp_config.auto_exp = false;
|
||||
cam_mod->exp_config.auto_gain = false;
|
||||
cam_mod->wb_config.auto_wb = false;
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->auto_adjust_fps = true;
|
||||
cam_mod->rotation = 0;
|
||||
cam_mod->ctrl_updt = 0;
|
||||
@@ -910,12 +908,14 @@ int imx_camera_module_s_ext_ctrls(
|
||||
cam_mod->hflip = true;
|
||||
else
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->flip_flg = true;
|
||||
break;
|
||||
case V4L2_CID_VFLIP:
|
||||
if (ctrl->value)
|
||||
cam_mod->vflip = true;
|
||||
else
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->flip_flg = true;
|
||||
break;
|
||||
default:
|
||||
pltfrm_camera_module_pr_warn(&cam_mod->sd,
|
||||
@@ -1103,7 +1103,22 @@ long imx_camera_module_ioctl(struct v4l2_subdev *sd,
|
||||
int imx_camera_module_get_flip_mirror(
|
||||
struct imx_camera_module *cam_mod)
|
||||
{
|
||||
return pltfrm_camera_module_get_flip_mirror(&cam_mod->sd);
|
||||
int mode = 0;
|
||||
|
||||
if (!cam_mod->flip_flg)
|
||||
return -1;
|
||||
|
||||
if (cam_mod->hflip)
|
||||
mode |= IMX_MIRROR_BIT_MASK;
|
||||
else
|
||||
mode &= ~IMX_MIRROR_BIT_MASK;
|
||||
|
||||
if (cam_mod->vflip)
|
||||
mode |= IMX_FLIP_BIT_MASK;
|
||||
else
|
||||
mode &= ~IMX_FLIP_BIT_MASK;
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
/* ======================================================================== */
|
||||
@@ -1200,9 +1215,13 @@ int imx_camera_module_init(struct imx_camera_module *cam_mod,
|
||||
struct imx_camera_module_custom_config *custom)
|
||||
{
|
||||
int ret = 0;
|
||||
int mode = 0;
|
||||
|
||||
pltfrm_camera_module_pr_debug(&cam_mod->sd, "\n");
|
||||
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->flip_flg = false;
|
||||
imx_camera_module_reset(cam_mod);
|
||||
|
||||
if (IS_ERR_OR_NULL(custom->start_streaming) ||
|
||||
@@ -1229,6 +1248,13 @@ int imx_camera_module_init(struct imx_camera_module *cam_mod,
|
||||
imx_camera_module_release(cam_mod);
|
||||
goto err;
|
||||
}
|
||||
|
||||
mode = pltfrm_camera_module_get_flip_mirror(&cam_mod->sd);
|
||||
if (mode != -1) {
|
||||
cam_mod->hflip = mode & IMX_MIRROR_BIT_MASK ? true : false;
|
||||
cam_mod->vflip = mode & IMX_FLIP_BIT_MASK ? true : false;
|
||||
cam_mod->flip_flg = true;
|
||||
}
|
||||
/*
|
||||
if (custom->check_camera_id) {
|
||||
imx_camera_module_s_power(&cam_mod->sd, 1);
|
||||
|
||||
@@ -194,6 +194,7 @@ struct imx_camera_module {
|
||||
bool frm_intrvl_valid;
|
||||
bool hflip;
|
||||
bool vflip;
|
||||
bool flip_flg;
|
||||
u32 rotation;
|
||||
void *pltfm_data;
|
||||
bool inited;
|
||||
|
||||
@@ -45,8 +45,6 @@ static void ov_camera_module_reset(
|
||||
cam_mod->exp_config.auto_exp = false;
|
||||
cam_mod->exp_config.auto_gain = false;
|
||||
cam_mod->wb_config.auto_wb = false;
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->auto_adjust_fps = true;
|
||||
cam_mod->rotation = 0;
|
||||
cam_mod->ctrl_updt = 0;
|
||||
@@ -931,12 +929,14 @@ int ov_camera_module_s_ext_ctrls(
|
||||
cam_mod->hflip = true;
|
||||
else
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->flip_flg = true;
|
||||
break;
|
||||
case V4L2_CID_VFLIP:
|
||||
if (ctrl->value)
|
||||
cam_mod->vflip = true;
|
||||
else
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->flip_flg = true;
|
||||
break;
|
||||
default:
|
||||
pltfrm_camera_module_pr_warn(&cam_mod->sd,
|
||||
@@ -1122,7 +1122,22 @@ long ov_camera_module_ioctl(struct v4l2_subdev *sd,
|
||||
int ov_camera_module_get_flip_mirror(
|
||||
struct ov_camera_module *cam_mod)
|
||||
{
|
||||
return pltfrm_camera_module_get_flip_mirror(&cam_mod->sd);
|
||||
int mode = 0;
|
||||
|
||||
if (!cam_mod->flip_flg)
|
||||
return -1;
|
||||
|
||||
if (cam_mod->hflip)
|
||||
mode |= OV_MIRROR_BIT_MASK;
|
||||
else
|
||||
mode &= ~OV_MIRROR_BIT_MASK;
|
||||
|
||||
if (cam_mod->vflip)
|
||||
mode |= OV_FLIP_BIT_MASK;
|
||||
else
|
||||
mode &= ~OV_FLIP_BIT_MASK;
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
/* ======================================================================== */
|
||||
@@ -1236,9 +1251,13 @@ int ov_camera_module_init(struct ov_camera_module *cam_mod,
|
||||
struct ov_camera_module_custom_config *custom)
|
||||
{
|
||||
int ret = 0;
|
||||
int mode = 0;
|
||||
|
||||
pltfrm_camera_module_pr_debug(&cam_mod->sd, "\n");
|
||||
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->flip_flg = false;
|
||||
ov_camera_module_reset(cam_mod);
|
||||
|
||||
if (IS_ERR_OR_NULL(custom->start_streaming) ||
|
||||
@@ -1266,6 +1285,13 @@ int ov_camera_module_init(struct ov_camera_module *cam_mod,
|
||||
goto err;
|
||||
}
|
||||
|
||||
mode = pltfrm_camera_module_get_flip_mirror(&cam_mod->sd);
|
||||
if (mode != -1) {
|
||||
cam_mod->hflip = mode & OV_MIRROR_BIT_MASK ? true : false;
|
||||
cam_mod->vflip = mode & OV_FLIP_BIT_MASK ? true : false;
|
||||
cam_mod->flip_flg = true;
|
||||
}
|
||||
|
||||
/*
|
||||
if (custom->check_camera_id) {
|
||||
ov_camera_module_s_power(&cam_mod->sd, 1);
|
||||
|
||||
@@ -198,6 +198,7 @@ struct ov_camera_module {
|
||||
bool frm_intrvl_valid;
|
||||
bool hflip;
|
||||
bool vflip;
|
||||
bool flip_flg;
|
||||
u32 rotation;
|
||||
void *pltfm_data;
|
||||
bool inited;
|
||||
|
||||
@@ -51,8 +51,6 @@ void samsung_camera_module_reset(
|
||||
cam_mod->exp_config.auto_exp = false;
|
||||
cam_mod->exp_config.auto_gain = false;
|
||||
cam_mod->wb_config.auto_wb = false;
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->auto_adjust_fps = true;
|
||||
cam_mod->rotation = 0;
|
||||
cam_mod->ctrl_updt = 0;
|
||||
@@ -943,12 +941,14 @@ int samsung_camera_module_s_ext_ctrls(
|
||||
cam_mod->hflip = true;
|
||||
else
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->flip_flg = true;
|
||||
break;
|
||||
case V4L2_CID_VFLIP:
|
||||
if (ctrl->value)
|
||||
cam_mod->vflip = true;
|
||||
else
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->flip_flg = true;
|
||||
break;
|
||||
default:
|
||||
pltfrm_camera_module_pr_warn(&cam_mod->sd,
|
||||
@@ -1134,7 +1134,22 @@ long samsung_camera_module_ioctl(struct v4l2_subdev *sd,
|
||||
int samsung_camera_module_get_flip_mirror(
|
||||
struct samsung_camera_module *cam_mod)
|
||||
{
|
||||
return pltfrm_camera_module_get_flip_mirror(&cam_mod->sd);
|
||||
int mode = 0;
|
||||
|
||||
if (!cam_mod->flip_flg)
|
||||
return -1;
|
||||
|
||||
if (cam_mod->hflip)
|
||||
mode |= SAMSUNG_MIRROR_BIT_MASK;
|
||||
else
|
||||
mode &= ~SAMSUNG_MIRROR_BIT_MASK;
|
||||
|
||||
if (cam_mod->vflip)
|
||||
mode |= SAMSUNG_FLIP_BIT_MASK;
|
||||
else
|
||||
mode &= ~SAMSUNG_FLIP_BIT_MASK;
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
int samsung_camera_module_enum_frameintervals(
|
||||
@@ -1232,9 +1247,13 @@ int samsung_camera_module_init(struct samsung_camera_module *cam_mod,
|
||||
struct samsung_camera_module_custom_config *custom)
|
||||
{
|
||||
int ret = 0;
|
||||
int mode = 0;
|
||||
|
||||
pltfrm_camera_module_pr_debug(&cam_mod->sd, "\n");
|
||||
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->flip_flg = false;
|
||||
samsung_camera_module_reset(cam_mod);
|
||||
|
||||
if (IS_ERR_OR_NULL(custom->start_streaming) ||
|
||||
@@ -1262,6 +1281,13 @@ int samsung_camera_module_init(struct samsung_camera_module *cam_mod,
|
||||
goto err;
|
||||
}
|
||||
|
||||
mode = pltfrm_camera_module_get_flip_mirror(&cam_mod->sd);
|
||||
if (mode != -1) {
|
||||
cam_mod->hflip = mode & SAMSUNG_MIRROR_BIT_MASK ? true : false;
|
||||
cam_mod->vflip = mode & SAMSUNG_FLIP_BIT_MASK ? true : false;
|
||||
cam_mod->flip_flg = true;
|
||||
}
|
||||
|
||||
return 0;
|
||||
err:
|
||||
pltfrm_camera_module_pr_err(&cam_mod->sd,
|
||||
|
||||
@@ -194,6 +194,7 @@ struct samsung_camera_module {
|
||||
bool frm_intrvl_valid;
|
||||
bool hflip;
|
||||
bool vflip;
|
||||
bool flip_flg;
|
||||
u32 rotation;
|
||||
void *pltfm_data;
|
||||
bool inited;
|
||||
|
||||
@@ -49,8 +49,6 @@ static void xc9080_camera_module_reset(
|
||||
cam_mod->exp_config.auto_exp = false;
|
||||
cam_mod->exp_config.auto_gain = false;
|
||||
cam_mod->wb_config.auto_wb = false;
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->auto_adjust_fps = true;
|
||||
cam_mod->rotation = 0;
|
||||
cam_mod->ctrl_updt = 0;
|
||||
@@ -950,12 +948,14 @@ int xc9080_camera_module_s_ext_ctrls(
|
||||
cam_mod->hflip = true;
|
||||
else
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->flip_flg = true;
|
||||
break;
|
||||
case V4L2_CID_VFLIP:
|
||||
if (ctrl->value)
|
||||
cam_mod->vflip = true;
|
||||
else
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->flip_flg = true;
|
||||
break;
|
||||
default:
|
||||
pltfrm_camera_module_pr_warn(&cam_mod->sd,
|
||||
@@ -1125,7 +1125,22 @@ long xc9080_camera_module_ioctl(struct v4l2_subdev *sd,
|
||||
int xc9080_camera_module_get_flip_mirror(
|
||||
struct xc9080_camera_module *cam_mod)
|
||||
{
|
||||
return pltfrm_camera_module_get_flip_mirror(&cam_mod->sd);
|
||||
int mode = 0;
|
||||
|
||||
if (!cam_mod->flip_flg)
|
||||
return -1;
|
||||
|
||||
if (cam_mod->hflip)
|
||||
mode |= XC9080_MIRROR_BIT_MASK;
|
||||
else
|
||||
mode &= ~XC9080_MIRROR_BIT_MASK;
|
||||
|
||||
if (cam_mod->vflip)
|
||||
mode |= XC9080_FLIP_BIT_MASK;
|
||||
else
|
||||
mode &= ~XC9080_FLIP_BIT_MASK;
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
/* ======================================================================== */
|
||||
@@ -1407,9 +1422,13 @@ int xc9080_camera_module_init(struct xc9080_camera_module *cam_mod,
|
||||
struct xc9080_camera_module_custom_config *custom)
|
||||
{
|
||||
int ret = 0;
|
||||
int mode = 0;
|
||||
|
||||
pltfrm_camera_module_pr_debug(&cam_mod->sd, "\n");
|
||||
|
||||
cam_mod->hflip = false;
|
||||
cam_mod->vflip = false;
|
||||
cam_mod->flip_flg = false;
|
||||
xc9080_camera_module_reset(cam_mod);
|
||||
|
||||
if (IS_ERR_OR_NULL(custom->start_streaming) ||
|
||||
@@ -1437,6 +1456,13 @@ int xc9080_camera_module_init(struct xc9080_camera_module *cam_mod,
|
||||
goto err;
|
||||
}
|
||||
|
||||
mode = pltfrm_camera_module_get_flip_mirror(&cam_mod->sd);
|
||||
if (mode != -1) {
|
||||
cam_mod->hflip = mode & XC9080_MIRROR_BIT_MASK ? true : false;
|
||||
cam_mod->vflip = mode & XC9080_FLIP_BIT_MASK ? true : false;
|
||||
cam_mod->flip_flg = true;
|
||||
}
|
||||
|
||||
return 0;
|
||||
err:
|
||||
pltfrm_camera_module_pr_err(&cam_mod->sd,
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
#define XC9080_CAMERA_MODULE_REG_TYPE_DATA_SINGLE \
|
||||
PLTFRM_CAMERA_MODULE_REG_TYPE_DATA_SINGLE
|
||||
#define xc9080_camera_module_reg pltfrm_camera_module_reg
|
||||
#define XC9080_FLIP_BIT_MASK (1 << PLTFRM_CAMERA_MODULE_FLIP_BIT)
|
||||
#define XC9080_MIRROR_BIT_MASK (1 << PLTFRM_CAMERA_MODULE_MIRROR_BIT)
|
||||
|
||||
#define XC9080_CAMERA_MODULE_CTRL_UPDT_GAIN 0x01
|
||||
#define XC9080_CAMERA_MODULE_CTRL_UPDT_EXP_TIME 0x02
|
||||
@@ -204,6 +206,7 @@ struct xc9080_camera_module {
|
||||
bool frm_intrvl_valid;
|
||||
bool hflip;
|
||||
bool vflip;
|
||||
bool flip_flg;
|
||||
u32 rotation;
|
||||
void *pltfm_data;
|
||||
bool inited;
|
||||
|
||||
Reference in New Issue
Block a user