From 7d4a772671d98789186d9c1eb7b44cb22c1d9981 Mon Sep 17 00:00:00 2001 From: Vladimir Barinov Date: Fri, 17 May 2019 23:18:30 +0300 Subject: [PATCH 120/122] lvds: ONSEMI: fix matrix position during crop This preserves the centered window poition on imager matrix during crop Signed-off-by: Vladimir Barinov --- drivers/media/i2c/soc_camera/ar0140.c | 8 ++++---- drivers/media/i2c/soc_camera/ar0143.c | 8 ++++---- drivers/media/i2c/soc_camera/ar0147.c | 8 ++++---- drivers/media/i2c/soc_camera/ar0231.c | 8 ++++---- drivers/media/i2c/soc_camera/ar0233.c | 8 ++++---- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/drivers/media/i2c/soc_camera/ar0140.c b/drivers/media/i2c/soc_camera/ar0140.c index 807b6f8..c52ca4e 100644 --- a/drivers/media/i2c/soc_camera/ar0140.c +++ b/drivers/media/i2c/soc_camera/ar0140.c @@ -106,13 +106,13 @@ static int ar0140_set_window(struct v4l2_subdev *sd) dev_dbg(&client->dev, "L=%d T=%d %dx%d\n", priv->rect.left, priv->rect.top, priv->rect.width, priv->rect.height); /* horiz crop start */ - reg16_write16(client, 0x3004, priv->rect.left); + reg16_write16(client, 0x3004, priv->rect.left + AR0140_X_START); /* horiz crop end */ - reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1); + reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1 + AR0140_X_START); /* vert crop start */ - reg16_write16(client, 0x3002, priv->rect.top); + reg16_write16(client, 0x3002, priv->rect.top + AR0140_Y_START); /* vert crop end */ - reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height + 1); + reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height - 1 + AR0140_Y_START); return 0; }; diff --git a/drivers/media/i2c/soc_camera/ar0143.c b/drivers/media/i2c/soc_camera/ar0143.c index 01494fe..b61c7eb 100644 --- a/drivers/media/i2c/soc_camera/ar0143.c +++ b/drivers/media/i2c/soc_camera/ar0143.c @@ -140,13 +140,13 @@ static int ar0143_set_window(struct v4l2_subdev *sd) dev_dbg(&client->dev, "L=%d T=%d %dx%d\n", priv->rect.left, priv->rect.top, priv->rect.width, priv->rect.height); /* horiz crop start */ - reg16_write16(client, 0x3004, priv->rect.left); + reg16_write16(client, 0x3004, priv->rect.left + AR0143_X_START); /* horiz crop end */ - reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1); + reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1 + AR0143_X_START); /* vert crop start */ - reg16_write16(client, 0x3002, priv->rect.top); + reg16_write16(client, 0x3002, priv->rect.top + AR0143_Y_START); /* vert crop end */ - reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height + 1); + reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height + 1 + AR0143_Y_START); return 0; }; diff --git a/drivers/media/i2c/soc_camera/ar0147.c b/drivers/media/i2c/soc_camera/ar0147.c index cc7face..cc4e761 100644 --- a/drivers/media/i2c/soc_camera/ar0147.c +++ b/drivers/media/i2c/soc_camera/ar0147.c @@ -155,13 +155,13 @@ static int ar0147_set_window(struct v4l2_subdev *sd) dev_dbg(&client->dev, "L=%d T=%d %dx%d\n", priv->rect.left, priv->rect.top, priv->rect.width, priv->rect.height); /* horiz crop start */ - reg16_write16(client, 0x3004, priv->rect.left); + reg16_write16(client, 0x3004, priv->rect.left + AR0147_X_START); /* horiz crop end */ - reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1); + reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1 + AR0147_X_START); /* vert crop start */ - reg16_write16(client, 0x3002, priv->rect.top); + reg16_write16(client, 0x3002, priv->rect.top + AR0147_Y_START); /* vert crop end */ - reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height - 1); + reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height - 1 + AR0147_Y_START); return 0; }; diff --git a/drivers/media/i2c/soc_camera/ar0231.c b/drivers/media/i2c/soc_camera/ar0231.c index 05037c7..b239f56 100644 --- a/drivers/media/i2c/soc_camera/ar0231.c +++ b/drivers/media/i2c/soc_camera/ar0231.c @@ -96,13 +96,13 @@ static int ar0231_set_window(struct v4l2_subdev *sd) dev_err(&client->dev, "L=%d T=%d %dx%d\n", priv->rect.left, priv->rect.top, priv->rect.width, priv->rect.height); /* horiz crop start */ - reg16_write16(client, 0x3004, priv->rect.left); + reg16_write16(client, 0x3004, priv->rect.left + AR0231_X_START); /* horiz crop end */ - reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1); + reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1 + AR0231_X_START); /* vert crop start */ - reg16_write16(client, 0x3002, priv->rect.top); + reg16_write16(client, 0x3002, priv->rect.top + AR0231_Y_START); /* vert crop end */ - reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height + 1); + reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height - 1 + AR0231_Y_START); return 0; }; diff --git a/drivers/media/i2c/soc_camera/ar0233.c b/drivers/media/i2c/soc_camera/ar0233.c index 862c820..543b8a6 100644 --- a/drivers/media/i2c/soc_camera/ar0233.c +++ b/drivers/media/i2c/soc_camera/ar0233.c @@ -102,13 +102,13 @@ static int ar0233_set_window(struct v4l2_subdev *sd) dev_dbg(&client->dev, "L=%d T=%d %dx%d\n", priv->rect.left, priv->rect.top, priv->rect.width, priv->rect.height); /* horiz crop start */ - reg16_write16(client, 0x3004, priv->rect.left); + reg16_write16(client, 0x3004, priv->rect.left + AR0233_X_START); /* horiz crop end */ - reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1); + reg16_write16(client, 0x3008, priv->rect.left + priv->rect.width - 1 + AR0233_X_START); /* vert crop start */ - reg16_write16(client, 0x3002, priv->rect.top); + reg16_write16(client, 0x3002, priv->rect.top + AR0233_Y_START); /* vert crop end */ - reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height + 1); + reg16_write16(client, 0x3006, priv->rect.top + priv->rect.height - 1 + AR0233_Y_START); return 0; }; -- 2.7.4