diff mbox

[RFC,v3,12/13] V4L: s5k6a3: Change sensor min/max resolutions

Message ID 1375455762-22071-13-git-send-email-arun.kk@samsung.com (mailing list archive)
State New, archived
Headers show

Commit Message

Arun Kumar K Aug. 2, 2013, 3:02 p.m. UTC
s5k6a3 sensor has actual pixel resolution of 1408x1402 against
the active resolution 1392x1392. The real resolution is needed
when raw sensor SRGB data is dumped to memory by fimc-lite.

Signed-off-by: Arun Kumar K <arun.kk@samsung.com>
---
 drivers/media/i2c/s5k6a3.c |   14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

Comments

Sylwester Nawrocki Aug. 3, 2013, 9:51 p.m. UTC | #1
Hi Arun,

On 08/02/2013 05:02 PM, Arun Kumar K wrote:
> s5k6a3 sensor has actual pixel resolution of 1408x1402 against
> the active resolution 1392x1392. The real resolution is needed
> when raw sensor SRGB data is dumped to memory by fimc-lite.
>
> Signed-off-by: Arun Kumar K<arun.kk@samsung.com>
> ---
>   drivers/media/i2c/s5k6a3.c |   14 ++++++++++----
>   1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/media/i2c/s5k6a3.c b/drivers/media/i2c/s5k6a3.c
> index ccbb4fc..d81638d 100644
> --- a/drivers/media/i2c/s5k6a3.c
> +++ b/drivers/media/i2c/s5k6a3.c
> @@ -30,6 +30,9 @@
>   #define S5K6A3_SENSOR_MIN_WIDTH		32
>   #define S5K6A3_SENSOR_MIN_HEIGHT	32
>
> +#define S5K6A3_WIDTH_PADDING		16
> +#define S5K6A3_HEIGHT_PADDING		10

How about instead defining MAX and ACTIVE sizes, e.g.

#define S5K6A3_SENSOR_MAX_WIDTH			1408
#define S5K6A3_SENSOR_MAX_HEIGHT		1402

#define S5K6A3_SENSOR_ACTIVE_WIDTH		1392	
#define S5K6A3_SENSOR_ACTIVE_HEIGHT		1392

>   #define S5K6A3_DEF_PIX_WIDTH		1296
>   #define S5K6A3_DEF_PIX_HEIGHT		732

I'm going to remove "_PIX" from those macros in next iteration.

> @@ -107,10 +110,13 @@ static void s5k6a3_try_format(struct v4l2_mbus_framefmt *mf)
>
>   	fmt = find_sensor_format(mf);
>   	mf->code = fmt->code;
> -	v4l_bound_align_image(&mf->width, S5K6A3_SENSOR_MIN_WIDTH,
> -			      S5K6A3_SENSOR_MAX_WIDTH, 0,
> -			&mf->height, S5K6A3_SENSOR_MIN_HEIGHT,
> -			      S5K6A3_SENSOR_MAX_HEIGHT, 0, 0);
> +	v4l_bound_align_image(&mf->width,
> +			S5K6A3_SENSOR_MIN_WIDTH + S5K6A3_WIDTH_PADDING,
> +			S5K6A3_SENSOR_MAX_WIDTH + S5K6A3_WIDTH_PADDING, 0,
> +			&mf->height,
> +			S5K6A3_SENSOR_MIN_HEIGHT + S5K6A3_HEIGHT_PADDING,
> +			S5K6A3_SENSOR_MAX_HEIGHT + S5K6A3_HEIGHT_PADDING, 0,
> +			0);

Then this would become:

	v4l_bound_align_image(&mf->width,
			S5K6A3_SENSOR_MIN_WIDTH + S5K6A3_WIDTH_PADDING,
			S5K6A3_SENSOR_MAX_WIDTH, 0,
			&mf->height,
			S5K6A3_SENSOR_MIN_HEIGHT + S5K6A3_HEIGHT_PADDING,
			S5K6A3_SENSOR_MAX_HEIGHT, 0,
			0);

I'm not sure about minimal width/height, perhaps we could just define it as:

#define S5K6A3_SENSOR_MIN_WIDTH		(32 + 10)
#define S5K6A3_SENSOR_MIN_HEIGHT	(32 + 8)

? I'll also double check with the documentation if the original 32x23 value
is really correct.

--
Regards,
Sylwester
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/media/i2c/s5k6a3.c b/drivers/media/i2c/s5k6a3.c
index ccbb4fc..d81638d 100644
--- a/drivers/media/i2c/s5k6a3.c
+++ b/drivers/media/i2c/s5k6a3.c
@@ -30,6 +30,9 @@ 
 #define S5K6A3_SENSOR_MIN_WIDTH		32
 #define S5K6A3_SENSOR_MIN_HEIGHT	32
 
+#define S5K6A3_WIDTH_PADDING		16
+#define S5K6A3_HEIGHT_PADDING		10
+
 #define S5K6A3_DEF_PIX_WIDTH		1296
 #define S5K6A3_DEF_PIX_HEIGHT		732
 
@@ -107,10 +110,13 @@  static void s5k6a3_try_format(struct v4l2_mbus_framefmt *mf)
 
 	fmt = find_sensor_format(mf);
 	mf->code = fmt->code;
-	v4l_bound_align_image(&mf->width, S5K6A3_SENSOR_MIN_WIDTH,
-			      S5K6A3_SENSOR_MAX_WIDTH, 0,
-			      &mf->height, S5K6A3_SENSOR_MIN_HEIGHT,
-			      S5K6A3_SENSOR_MAX_HEIGHT, 0, 0);
+	v4l_bound_align_image(&mf->width,
+			S5K6A3_SENSOR_MIN_WIDTH + S5K6A3_WIDTH_PADDING,
+			S5K6A3_SENSOR_MAX_WIDTH + S5K6A3_WIDTH_PADDING, 0,
+			&mf->height,
+			S5K6A3_SENSOR_MIN_HEIGHT + S5K6A3_HEIGHT_PADDING,
+			S5K6A3_SENSOR_MAX_HEIGHT + S5K6A3_HEIGHT_PADDING, 0,
+			0);
 }
 
 static struct v4l2_mbus_framefmt *__s5k6a3_get_format(