* [PATCH] [media] s5p-fimc: update checking scaling ratio range
@ 2010-12-27 9:17 Hyunwoong Kim
2010-12-27 10:56 ` Sylwester Nawrocki
0 siblings, 1 reply; 4+ messages in thread
From: Hyunwoong Kim @ 2010-12-27 9:17 UTC (permalink / raw)
To: linux-media, linux-samsung-soc; +Cc: s.nawrocki, Hyunwoong Kim
Horizontal and vertical scaling range are according to the following equations.
If (SRC_Width >= 64 x DST_Width) { Exit(-1); /* Out of Horizontal scale range}
If (SRC_Height >= 64 x DST_Height) { Exit(-1); /* Out of Vertical scale range}
fimc_check_scaler_ratio() is used to check if horizontal and vertical
scale range are valid or not. To use fimc_check_scaler_ratio,
source and destination format should be set by VIDIOC_S_FMT.
And in case of scaling up, it doesn't have to check the scale range.
Reviewed-by: Jonghun Han <jonghun.han@samsung.com>
Signed-off-by: Hyunwoong Kim <khw0178.kim@samsung.com>
---
This patch is depended on Hyunwoong Kim's last patch.
- [PATCH v2] [media] s5p-fimc: Configure scaler registers depending on FIMC version
drivers/media/video/s5p-fimc/fimc-capture.c | 5 ++-
drivers/media/video/s5p-fimc/fimc-core.c | 66 +++++++++++++++++++--------
drivers/media/video/s5p-fimc/fimc-core.h | 2 +-
3 files changed, 52 insertions(+), 21 deletions(-)
diff --git a/drivers/media/video/s5p-fimc/fimc-capture.c b/drivers/media/video/s5p-fimc/fimc-capture.c
index b1cb937..078e5ab 100644
--- a/drivers/media/video/s5p-fimc/fimc-capture.c
+++ b/drivers/media/video/s5p-fimc/fimc-capture.c
@@ -744,6 +744,7 @@ static int fimc_cap_s_crop(struct file *file, void *fh,
struct fimc_frame *f;
struct fimc_ctx *ctx = file->private_data;
struct fimc_dev *fimc = ctx->fimc_dev;
+ struct v4l2_rect r;
int ret = -EINVAL;
if (fimc_capture_active(fimc))
@@ -761,7 +762,9 @@ static int fimc_cap_s_crop(struct file *file, void *fh,
f = &ctx->s_frame;
/* Check for the pixel scaling ratio when cropping input image. */
- ret = fimc_check_scaler_ratio(&cr->c, &ctx->d_frame);
+ r.width = ctx->d_frame.width;
+ r.height = ctx->d_frame.height;
+ ret = fimc_check_scaler_ratio(&cr->c, &r, ctx->rotation);
if (ret) {
v4l2_err(&fimc->vid_cap.v4l2_dev, "Out of the scaler range");
return ret;
diff --git a/drivers/media/video/s5p-fimc/fimc-core.c b/drivers/media/video/s5p-fimc/fimc-core.c
index 2b65961..cc5c28f 100644
--- a/drivers/media/video/s5p-fimc/fimc-core.c
+++ b/drivers/media/video/s5p-fimc/fimc-core.c
@@ -198,24 +198,24 @@ static struct v4l2_queryctrl *get_ctrl(int id)
return NULL;
}
-int fimc_check_scaler_ratio(struct v4l2_rect *r, struct fimc_frame *f)
+int fimc_check_scaler_ratio(struct v4l2_rect *s, struct v4l2_rect *d, int rot)
{
- if (r->width > f->width) {
- if (f->width > (r->width * SCALER_MAX_HRATIO))
- return -EINVAL;
- } else {
- if ((f->width * SCALER_MAX_HRATIO) < r->width)
- return -EINVAL;
- }
+ int tx, ty, sx, sy;
- if (r->height > f->height) {
- if (f->height > (r->height * SCALER_MAX_VRATIO))
- return -EINVAL;
+ sx = s->width;
+ sy = s->height;
+
+ if (rot == 90 || rot == 270) {
+ ty = d->width;
+ tx = d->height;
} else {
- if ((f->height * SCALER_MAX_VRATIO) < r->height)
- return -EINVAL;
+ tx = d->width;
+ ty = d->height;
}
+ if ((sx >= SCALER_MAX_HRATIO * tx) || (sy >= SCALER_MAX_VRATIO * ty))
+ return -EINVAL;
+
return 0;
}
@@ -1062,7 +1062,9 @@ int fimc_s_ctrl(struct fimc_ctx *ctx, struct v4l2_control *ctrl)
{
struct samsung_fimc_variant *variant = ctx->fimc_dev->variant;
struct fimc_dev *fimc = ctx->fimc_dev;
+ struct v4l2_rect s, d;
unsigned long flags;
+ int ret = 0;
if (ctx->rotation != 0 &&
(ctrl->id == V4L2_CID_HFLIP || ctrl->id == V4L2_CID_VFLIP)) {
@@ -1089,6 +1091,21 @@ int fimc_s_ctrl(struct fimc_ctx *ctx, struct v4l2_control *ctrl)
break;
case V4L2_CID_ROTATE:
+ if (!(~ctx->state & (FIMC_DST_FMT | FIMC_SRC_FMT))) {
+ s.width = ctx->s_frame.width;
+ s.height = ctx->s_frame.height;
+
+ d.width = ctx->d_frame.width;
+ d.height = ctx->d_frame.height;
+
+ ret = fimc_check_scaler_ratio(&s, &d, ctrl->value);
+ if (ret) {
+ v4l2_err(&fimc->m2m.v4l2_dev, "Out of scaler range");
+ spin_unlock_irqrestore(&ctx->slock, flags);
+ return -EINVAL;
+ }
+ }
+
/* Check for the output rotator availability */
if ((ctrl->value == 90 || ctrl->value == 270) &&
(ctx->in_path == FIMC_DMA && !variant->has_out_rot)) {
@@ -1227,6 +1244,7 @@ static int fimc_m2m_s_crop(struct file *file, void *fh, struct v4l2_crop *cr)
struct fimc_dev *fimc = ctx->fimc_dev;
unsigned long flags;
struct fimc_frame *f;
+ struct v4l2_rect s, d;
int ret;
ret = fimc_try_crop(ctx, cr);
@@ -1237,18 +1255,28 @@ static int fimc_m2m_s_crop(struct file *file, void *fh, struct v4l2_crop *cr)
&ctx->s_frame : &ctx->d_frame;
spin_lock_irqsave(&ctx->slock, flags);
- if (~ctx->state & (FIMC_SRC_FMT | FIMC_DST_FMT)) {
- /* Check to see if scaling ratio is within supported range */
- if (cr->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
- ret = fimc_check_scaler_ratio(&cr->c, &ctx->d_frame);
- else
- ret = fimc_check_scaler_ratio(&cr->c, &ctx->s_frame);
+ /* Check to see if scaling ratio is within supported range */
+ if (!(~ctx->state & (FIMC_DST_FMT | FIMC_SRC_FMT))) {
+ if (cr->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) {
+ s.width = cr->c.width;
+ s.height = cr->c.height;
+ d.width = ctx->d_frame.width;
+ d.height = ctx->d_frame.height;
+ } else {
+ s.width = ctx->s_frame.width;
+ s.height = ctx->s_frame.height;
+ d.width = cr->c.width;
+ d.height = cr->c.height;
+ }
+
+ ret = fimc_check_scaler_ratio(&s, &d, ctx->rotation);
if (ret) {
v4l2_err(&fimc->m2m.v4l2_dev, "Out of scaler range");
spin_unlock_irqrestore(&ctx->slock, flags);
return -EINVAL;
}
}
+
ctx->state |= FIMC_PARAMS;
f->offs_h = cr->c.left;
diff --git a/drivers/media/video/s5p-fimc/fimc-core.h b/drivers/media/video/s5p-fimc/fimc-core.h
index d690398..f7a72a3 100644
--- a/drivers/media/video/s5p-fimc/fimc-core.h
+++ b/drivers/media/video/s5p-fimc/fimc-core.h
@@ -605,7 +605,7 @@ struct fimc_fmt *find_format(struct v4l2_format *f, unsigned int mask);
struct fimc_fmt *find_mbus_format(struct v4l2_mbus_framefmt *f,
unsigned int mask);
-int fimc_check_scaler_ratio(struct v4l2_rect *r, struct fimc_frame *f);
+int fimc_check_scaler_ratio(struct v4l2_rect *s, struct v4l2_rect *d, int rot);
int fimc_set_scaler_info(struct fimc_ctx *ctx);
int fimc_prepare_config(struct fimc_ctx *ctx, u32 flags);
int fimc_prepare_addr(struct fimc_ctx *ctx, struct vb2_buffer *vb,
--
1.6.2.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] [media] s5p-fimc: update checking scaling ratio range
2010-12-27 9:17 [PATCH] [media] s5p-fimc: update checking scaling ratio range Hyunwoong Kim
@ 2010-12-27 10:56 ` Sylwester Nawrocki
2010-12-28 1:47 ` Hyunwoong Kim
0 siblings, 1 reply; 4+ messages in thread
From: Sylwester Nawrocki @ 2010-12-27 10:56 UTC (permalink / raw)
To: Hyunwoong Kim; +Cc: linux-media, linux-samsung-soc
Hi Hyunwoong,
On 12/27/2010 10:17 AM, Hyunwoong Kim wrote:
> Horizontal and vertical scaling range are according to the following equations.
> If (SRC_Width >= 64 x DST_Width) { Exit(-1); /* Out of Horizontal scale range}
> If (SRC_Height >= 64 x DST_Height) { Exit(-1); /* Out of Vertical scale range}
>
> fimc_check_scaler_ratio() is used to check if horizontal and vertical
> scale range are valid or not. To use fimc_check_scaler_ratio,
> source and destination format should be set by VIDIOC_S_FMT.
> And in case of scaling up, it doesn't have to check the scale range.
>
> Reviewed-by: Jonghun Han <jonghun.han@samsung.com>
> Signed-off-by: Hyunwoong Kim <khw0178.kim@samsung.com>
> ---
> This patch is depended on Hyunwoong Kim's last patch.
> - [PATCH v2] [media] s5p-fimc: Configure scaler registers depending on FIMC version
>
> drivers/media/video/s5p-fimc/fimc-capture.c | 5 ++-
> drivers/media/video/s5p-fimc/fimc-core.c | 66 +++++++++++++++++++--------
> drivers/media/video/s5p-fimc/fimc-core.h | 2 +-
> 3 files changed, 52 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/media/video/s5p-fimc/fimc-capture.c b/drivers/media/video/s5p-fimc/fimc-capture.c
> index b1cb937..078e5ab 100644
> --- a/drivers/media/video/s5p-fimc/fimc-capture.c
> +++ b/drivers/media/video/s5p-fimc/fimc-capture.c
> @@ -744,6 +744,7 @@ static int fimc_cap_s_crop(struct file *file, void *fh,
> struct fimc_frame *f;
> struct fimc_ctx *ctx = file->private_data;
> struct fimc_dev *fimc = ctx->fimc_dev;
> + struct v4l2_rect r;
> int ret = -EINVAL;
>
> if (fimc_capture_active(fimc))
> @@ -761,7 +762,9 @@ static int fimc_cap_s_crop(struct file *file, void *fh,
>
> f = &ctx->s_frame;
> /* Check for the pixel scaling ratio when cropping input image. */
> - ret = fimc_check_scaler_ratio(&cr->c, &ctx->d_frame);
> + r.width = ctx->d_frame.width;
> + r.height = ctx->d_frame.height;
> + ret = fimc_check_scaler_ratio(&cr->c, &r, ctx->rotation);
> if (ret) {
> v4l2_err(&fimc->vid_cap.v4l2_dev, "Out of the scaler range");
> return ret;
> diff --git a/drivers/media/video/s5p-fimc/fimc-core.c b/drivers/media/video/s5p-fimc/fimc-core.c
> index 2b65961..cc5c28f 100644
> --- a/drivers/media/video/s5p-fimc/fimc-core.c
> +++ b/drivers/media/video/s5p-fimc/fimc-core.c
> @@ -198,24 +198,24 @@ static struct v4l2_queryctrl *get_ctrl(int id)
> return NULL;
> }
>
> -int fimc_check_scaler_ratio(struct v4l2_rect *r, struct fimc_frame *f)
> +int fimc_check_scaler_ratio(struct v4l2_rect *s, struct v4l2_rect *d, int rot)
> {
> - if (r->width > f->width) {
> - if (f->width > (r->width * SCALER_MAX_HRATIO))
> - return -EINVAL;
> - } else {
> - if ((f->width * SCALER_MAX_HRATIO) < r->width)
> - return -EINVAL;
> - }
> + int tx, ty, sx, sy;
>
> - if (r->height > f->height) {
> - if (f->height > (r->height * SCALER_MAX_VRATIO))
> - return -EINVAL;
> + sx = s->width;
> + sy = s->height;
> +
> + if (rot == 90 || rot == 270) {
> + ty = d->width;
> + tx = d->height;
> } else {
> - if ((f->height * SCALER_MAX_VRATIO) < r->height)
> - return -EINVAL;
> + tx = d->width;
> + ty = d->height;
> }
>
> + if ((sx >= SCALER_MAX_HRATIO * tx) || (sy >= SCALER_MAX_VRATIO * ty))
> + return -EINVAL;
> +
> return 0;
> }
>
> @@ -1062,7 +1062,9 @@ int fimc_s_ctrl(struct fimc_ctx *ctx, struct v4l2_control *ctrl)
> {
> struct samsung_fimc_variant *variant = ctx->fimc_dev->variant;
> struct fimc_dev *fimc = ctx->fimc_dev;
> + struct v4l2_rect s, d;
> unsigned long flags;
> + int ret = 0;
>
> if (ctx->rotation != 0 &&
> (ctrl->id == V4L2_CID_HFLIP || ctrl->id == V4L2_CID_VFLIP)) {
> @@ -1089,6 +1091,21 @@ int fimc_s_ctrl(struct fimc_ctx *ctx, struct v4l2_control *ctrl)
> break;
>
> case V4L2_CID_ROTATE:
> + if (!(~ctx->state & (FIMC_DST_FMT | FIMC_SRC_FMT))) {
> + s.width = ctx->s_frame.width;
> + s.height = ctx->s_frame.height;
> +
> + d.width = ctx->d_frame.width;
> + d.height = ctx->d_frame.height;
> +
> + ret = fimc_check_scaler_ratio(&s, &d, ctrl->value);
> + if (ret) {
> + v4l2_err(&fimc->m2m.v4l2_dev, "Out of scaler range");
> + spin_unlock_irqrestore(&ctx->slock, flags);
> + return -EINVAL;
> + }
> + }
> +
> /* Check for the output rotator availability */
> if ((ctrl->value == 90 || ctrl->value == 270) &&
> (ctx->in_path == FIMC_DMA && !variant->has_out_rot)) {
> @@ -1227,6 +1244,7 @@ static int fimc_m2m_s_crop(struct file *file, void *fh, struct v4l2_crop *cr)
> struct fimc_dev *fimc = ctx->fimc_dev;
> unsigned long flags;
> struct fimc_frame *f;
> + struct v4l2_rect s, d;
> int ret;
>
> ret = fimc_try_crop(ctx, cr);
> @@ -1237,18 +1255,28 @@ static int fimc_m2m_s_crop(struct file *file, void *fh, struct v4l2_crop *cr)
> &ctx->s_frame : &ctx->d_frame;
>
> spin_lock_irqsave(&ctx->slock, flags);
> - if (~ctx->state & (FIMC_SRC_FMT | FIMC_DST_FMT)) {
> - /* Check to see if scaling ratio is within supported range */
> - if (cr->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
> - ret = fimc_check_scaler_ratio(&cr->c, &ctx->d_frame);
> - else
> - ret = fimc_check_scaler_ratio(&cr->c, &ctx->s_frame);
> + /* Check to see if scaling ratio is within supported range */
> + if (!(~ctx->state & (FIMC_DST_FMT | FIMC_SRC_FMT))) {
> + if (cr->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) {
> + s.width = cr->c.width;
> + s.height = cr->c.height;
> + d.width = ctx->d_frame.width;
> + d.height = ctx->d_frame.height;
> + } else {
> + s.width = ctx->s_frame.width;
> + s.height = ctx->s_frame.height;
> + d.width = cr->c.width;
> + d.height = cr->c.height;
> + }
> +
> + ret = fimc_check_scaler_ratio(&s, &d, ctx->rotation);
> if (ret) {
> v4l2_err(&fimc->m2m.v4l2_dev, "Out of scaler range");
> spin_unlock_irqrestore(&ctx->slock, flags);
> return -EINVAL;
> }
> }
> +
> ctx->state |= FIMC_PARAMS;
>
> f->offs_h = cr->c.left;
> diff --git a/drivers/media/video/s5p-fimc/fimc-core.h b/drivers/media/video/s5p-fimc/fimc-core.h
> index d690398..f7a72a3 100644
> --- a/drivers/media/video/s5p-fimc/fimc-core.h
> +++ b/drivers/media/video/s5p-fimc/fimc-core.h
> @@ -605,7 +605,7 @@ struct fimc_fmt *find_format(struct v4l2_format *f, unsigned int mask);
> struct fimc_fmt *find_mbus_format(struct v4l2_mbus_framefmt *f,
> unsigned int mask);
>
> -int fimc_check_scaler_ratio(struct v4l2_rect *r, struct fimc_frame *f);
> +int fimc_check_scaler_ratio(struct v4l2_rect *s, struct v4l2_rect *d, int rot);
This function always compares 2 width/height pairs, don't you think it could
be better to do something like:
int fimc_check_scaler_ratio(int sw, int sh, int dw, int dh, int rot);
considering your changed usage?
That could let us avoid copying arguments before each function call.
Otherwise looks good to me.
> int fimc_set_scaler_info(struct fimc_ctx *ctx);
> int fimc_prepare_config(struct fimc_ctx *ctx, u32 flags);
> int fimc_prepare_addr(struct fimc_ctx *ctx, struct vb2_buffer *vb,
Regards,
--
Sylwester Nawrocki
Samsung Poland R&D Center
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [PATCH] [media] s5p-fimc: update checking scaling ratio range
2010-12-27 10:56 ` Sylwester Nawrocki
@ 2010-12-28 1:47 ` Hyunwoong Kim
2010-12-28 17:22 ` Sylwester Nawrocki
0 siblings, 1 reply; 4+ messages in thread
From: Hyunwoong Kim @ 2010-12-28 1:47 UTC (permalink / raw)
To: 'Sylwester Nawrocki'; +Cc: linux-media, linux-samsung-soc
Sylwester Nawrocki wrote:
> -----Original Message-----
> From: linux-samsung-soc-owner@vger.kernel.org [mailto:linux-samsung-soc-
> owner@vger.kernel.org] On Behalf Of Sylwester Nawrocki
> Sent: Monday, December 27, 2010 7:57 PM
> To: Hyunwoong Kim
> Cc: linux-media@vger.kernel.org; linux-samsung-soc@vger.kernel.org
> Subject: Re: [PATCH] [media] s5p-fimc: update checking scaling ratio range
>
> Hi Hyunwoong,
>
> On 12/27/2010 10:17 AM, Hyunwoong Kim wrote:
> > Horizontal and vertical scaling range are according to the following
> equations.
> > If (SRC_Width >= 64 x DST_Width) { Exit(-1); /* Out of Horizontal scale
> range}
> > If (SRC_Height >= 64 x DST_Height) { Exit(-1); /* Out of Vertical scale
> range}
<snip>
> > -int fimc_check_scaler_ratio(struct v4l2_rect *r, struct fimc_frame *f);
> > +int fimc_check_scaler_ratio(struct v4l2_rect *s, struct v4l2_rect *d,
> int rot);
>
> This function always compares 2 width/height pairs, don't you think it
> could
> be better to do something like:
> int fimc_check_scaler_ratio(int sw, int sh, int dw, int dh, int rot);
> considering your changed usage?
> That could let us avoid copying arguments before each function call.
If we use the 5 parameters as you commented, we can avoid copying arguments.
However, according to ATPCS(The ARM-THUMB Procedure Call Standard),
4 registers from r0 to r3 is used for function's parameters and return
value.
If the number of parameters is more than 4, e.g. 5 parameters.
Four of the parameters are passed by register from r0 to r3. and the fifth
parameter is pushed in stack.
That could affect system performance compared to the case that the number of
parameter is below 4.
So, I think it's the better way to use 3 parameters according to ATPCS.
If you don't agree with my opinion,
I will send the second patch after modifying the definition of function as
you mentioned.
Thank you for your comment.
> Otherwise looks good to me.
> > int fimc_set_scaler_info(struct fimc_ctx *ctx);
> > int fimc_prepare_config(struct fimc_ctx *ctx, u32 flags);
> > int fimc_prepare_addr(struct fimc_ctx *ctx, struct vb2_buffer *vb,
>
> Regards,
> --
> Sylwester Nawrocki
> Samsung Poland R&D Center
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-
> soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] [media] s5p-fimc: update checking scaling ratio range
2010-12-28 1:47 ` Hyunwoong Kim
@ 2010-12-28 17:22 ` Sylwester Nawrocki
0 siblings, 0 replies; 4+ messages in thread
From: Sylwester Nawrocki @ 2010-12-28 17:22 UTC (permalink / raw)
To: Hyunwoong Kim; +Cc: linux-media, linux-samsung-soc
On 12/28/2010 02:47 AM, Hyunwoong Kim wrote:
> Sylwester Nawrocki wrote:
>
>> -----Original Message-----
>> From: linux-samsung-soc-owner@vger.kernel.org [mailto:linux-samsung-soc-
>> owner@vger.kernel.org] On Behalf Of Sylwester Nawrocki
>> Sent: Monday, December 27, 2010 7:57 PM
>> To: Hyunwoong Kim
>> Cc: linux-media@vger.kernel.org; linux-samsung-soc@vger.kernel.org
>> Subject: Re: [PATCH] [media] s5p-fimc: update checking scaling ratio range
>>
>> Hi Hyunwoong,
>>
>> On 12/27/2010 10:17 AM, Hyunwoong Kim wrote:
>>> Horizontal and vertical scaling range are according to the following
>> equations.
>>> If (SRC_Width >= 64 x DST_Width) { Exit(-1); /* Out of Horizontal scale
>> range}
>>> If (SRC_Height >= 64 x DST_Height) { Exit(-1); /* Out of Vertical scale
>> range}
>
> <snip>
>
>>> -int fimc_check_scaler_ratio(struct v4l2_rect *r, struct fimc_frame *f);
>>> +int fimc_check_scaler_ratio(struct v4l2_rect *s, struct v4l2_rect *d,
>> int rot);
>>
>> This function always compares 2 width/height pairs, don't you think it
>> could
>> be better to do something like:
>> int fimc_check_scaler_ratio(int sw, int sh, int dw, int dh, int rot);
>> considering your changed usage?
>> That could let us avoid copying arguments before each function call.
>
> If we use the 5 parameters as you commented, we can avoid copying arguments.
> However, according to ATPCS(The ARM-THUMB Procedure Call Standard),
> 4 registers from r0 to r3 is used for function's parameters and return
> value.
> If the number of parameters is more than 4, e.g. 5 parameters.
> Four of the parameters are passed by register from r0 to r3. and the fifth
> parameter is pushed in stack.
> That could affect system performance compared to the case that the number of
> parameter is below 4.
> So, I think it's the better way to use 3 parameters according to ATPCS.
IIRC passing and argument by a pointer rather than by value leaves less
possibilities to the compiler for optimization.
By creating a local copy of the function arguments you most likely passing
them *all* through the stack. I think we should not try to over-optimize
the code, the function is not used in fast paths anyway.
Let's make the code simple and let the compiler do the optimization work
what he is best at.
Thank you
Sylwester
> If you don't agree with my opinion,
> I will send the second patch after modifying the definition of function as
> you mentioned.
>
> Thank you for your comment.
>
>> Otherwise looks good to me.
>>> int fimc_set_scaler_info(struct fimc_ctx *ctx);
>>> int fimc_prepare_config(struct fimc_ctx *ctx, u32 flags);
>>> int fimc_prepare_addr(struct fimc_ctx *ctx, struct vb2_buffer *vb,
>>
--
Sylwester Nawrocki
Samsung Poland R&D Center
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-12-28 17:22 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-27 9:17 [PATCH] [media] s5p-fimc: update checking scaling ratio range Hyunwoong Kim
2010-12-27 10:56 ` Sylwester Nawrocki
2010-12-28 1:47 ` Hyunwoong Kim
2010-12-28 17:22 ` Sylwester Nawrocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).