mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 22:14:04 +02:00
media: i2c: gc4653: fix image corruption when switch sensor flip/mirror
The configuration of flip/mirror would take effect in the half of frame, which cause frame corruption. To make sure the flip/mirror configuration is took effect in the next frame, we should enable register frame buffer on gc4653. Signed-off-by: Zhichao Yu <zhichao.yu@rock-chips.com> Change-Id: Ibf85eb46d7c22785a820bcf781bd3e96a3455f00
This commit is contained in:
parent
aaf9c163ea
commit
4b50d2f038
|
|
@ -76,6 +76,10 @@
|
|||
#define GC4653_MIRROR_BIT_MASK BIT(0)
|
||||
#define GC4653_FLIP_BIT_MASK BIT(1)
|
||||
|
||||
#define GC4653_FRAME_BUFFER_REG 0x031d
|
||||
#define GC4653_FRAME_BUFFER_START 0x2d
|
||||
#define GC4653_FRAME_BUFFER_END 0x28
|
||||
|
||||
#define REG_NULL 0xFFFF
|
||||
|
||||
#define GC4653_REG_VALUE_08BIT 1
|
||||
|
|
@ -1254,8 +1258,12 @@ static int gc4653_set_ctrl(struct v4l2_ctrl *ctrl)
|
|||
val |= GC4653_MIRROR_BIT_MASK;
|
||||
else
|
||||
val &= ~GC4653_MIRROR_BIT_MASK;
|
||||
ret |= gc4653_write_reg(gc4653->client, GC4653_FRAME_BUFFER_REG,
|
||||
GC4653_REG_VALUE_08BIT, GC4653_FRAME_BUFFER_START);
|
||||
ret |= gc4653_write_reg(gc4653->client, GC4653_FLIP_MIRROR_REG,
|
||||
GC4653_REG_VALUE_08BIT, val);
|
||||
ret |= gc4653_write_reg(gc4653->client, GC4653_FRAME_BUFFER_REG,
|
||||
GC4653_REG_VALUE_08BIT, GC4653_FRAME_BUFFER_END);
|
||||
break;
|
||||
case V4L2_CID_VFLIP:
|
||||
ret = gc4653_read_reg(gc4653->client, GC4653_FLIP_MIRROR_REG,
|
||||
|
|
@ -1264,8 +1272,12 @@ static int gc4653_set_ctrl(struct v4l2_ctrl *ctrl)
|
|||
val |= GC4653_FLIP_BIT_MASK;
|
||||
else
|
||||
val &= ~GC4653_FLIP_BIT_MASK;
|
||||
ret |= gc4653_write_reg(gc4653->client, GC4653_FRAME_BUFFER_REG,
|
||||
GC4653_REG_VALUE_08BIT, GC4653_FRAME_BUFFER_START);
|
||||
ret |= gc4653_write_reg(gc4653->client, GC4653_FLIP_MIRROR_REG,
|
||||
GC4653_REG_VALUE_08BIT, val);
|
||||
ret |= gc4653_write_reg(gc4653->client, GC4653_FRAME_BUFFER_REG,
|
||||
GC4653_REG_VALUE_08BIT, GC4653_FRAME_BUFFER_END);
|
||||
break;
|
||||
default:
|
||||
dev_warn(&client->dev, "%s Unhandled id:0x%x, val:0x%x\n",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user