[RFC,v3,12/13] V4L: s5k6a3: Change sensor min/max resolutions
Commit Message
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
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
@@ -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(