All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Prabhakar Lad <prabhakar.csengg@gmail.com>
Cc: Hans Verkuil <hverkuil@xs4all.nl>,
	linux-media <linux-media@vger.kernel.org>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Sakari Ailus <sakari.ailus@iki.fi>
Subject: Re: [PATCH] media: v4l2-subdev.h: drop the guard CONFIG_VIDEO_V4L2_SUBDEV_API for v4l2_subdev_get_try_*()
Date: Sat, 29 Nov 2014 21:12:25 +0200	[thread overview]
Message-ID: <3017627.SLutb67dz2@avalon> (raw)
In-Reply-To: <CA+V-a8s-mP+Fjok2s_nDUAOb4vN3RWyRc5VHuZqPdk4pJtv03A@mail.gmail.com>

Hi Prabhakar,

On Saturday 29 November 2014 18:30:09 Prabhakar Lad wrote:
> On Tue, Nov 18, 2014 at 6:07 PM, Sakari Ailus <sakari.ailus@iki.fi> wrote:
> > On Tue, Nov 18, 2014 at 10:39:24AM +0100, Hans Verkuil wrote:
> >> On 11/17/14 11:41, Lad, Prabhakar wrote:
> >> > this patch removes the guard CONFIG_VIDEO_V4L2_SUBDEV_API
> >> > for v4l2_subdev_get_try_*() functions.
> >> > In cases where a subdev using v4l2_subdev_get_try_*() calls
> >> > internally and the bridge using subdev pad ops which is
> >> > not MC aware forces to select MEDIA_CONTROLLER, as
> >> > VIDEO_V4L2_SUBDEV_API is dependent on it.
> >> > 
> >> > Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
> >> > ---
> >> > 
> >> >  include/media/v4l2-subdev.h | 2 --
> >> >  1 file changed, 2 deletions(-)
> >> > 
> >> > diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
> >> > index 5860292..076ca11 100644
> >> > --- a/include/media/v4l2-subdev.h
> >> > +++ b/include/media/v4l2-subdev.h
> >> > @@ -642,7 +642,6 @@ struct v4l2_subdev_fh {
> >> >  #define to_v4l2_subdev_fh(fh)      \
> >> >     container_of(fh, struct v4l2_subdev_fh, vfh)
> >> > 
> >> > -#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API)
> >> >  #define __V4L2_SUBDEV_MK_GET_TRY(rtype, fun_name, field_name)         
> >> >      \
> >> >     static inline struct rtype *                                    \
> >> >     v4l2_subdev_get_try_##fun_name(struct v4l2_subdev_fh *fh,       \
> >> > 
> >> > @@ -656,7 +655,6 @@ struct v4l2_subdev_fh {
> >> >  __V4L2_SUBDEV_MK_GET_TRY(v4l2_mbus_framefmt, format, try_fmt)
> >> >  __V4L2_SUBDEV_MK_GET_TRY(v4l2_rect, crop, try_crop)
> >> >  __V4L2_SUBDEV_MK_GET_TRY(v4l2_rect, compose, try_compose)
> >> > -#endif
> >> > 
> >> >  extern const struct v4l2_file_operations v4l2_subdev_fops;
> >> 
> >> The problem is that v4l2_subdev_get_try_*() needs a v4l2_subdev_fh which
> >> you don't have if CONFIG_VIDEO_V4L2_SUBDEV_API is not defined. So I don't
> >> see how removing the guards help with that.
> >> 
> >> What can be done is that if CONFIG_VIDEO_V4L2_SUBDEV_API is not defined,
> >> then these functions return NULL.
> > 
> > Sure. That's a better choice than removing the config option dependency of
> > the fields struct v4l2_subdev.

Decoupling CONFIG_VIDEO_V4L2_SUBDEV_API from the availability of the in-kernel 
pad format and selection rectangles helpers is definitely a good idea. I was 
thinking about decoupling the try format and rectangles from v4l2_subdev_fh by 
creating a kind of configuration store structure to store them, and embedding 
that structure in v4l2_subdev_fh. The pad-level operations would then take a 
pointer to the configuration store instead of the v4l2_subdev_fh. Bridge 
drivers that want to implement TRY_FMT based on pad-level operations would 
create a configuration store, use the pad-level operations, and destroy the 
configuration store. The userspace subdev API would use the configuration 
store from the file handle.

> >> BTW, one patch I will very happily accept is one where the
> >> __V4L2_SUBDEV_MK_GET_TRY is removed and these three try functions are
> >> just written as proper static inlines. I find it very obfuscated code.
> > 
> > I originally wrote them like that in order to avoid writing essentially
> > the same code three times over. If there will be more targets, the same
> > repeats further, should one write those functions open for all different
> > macro arguments. That's why it was a macro to begin with.
> > 
> >> In addition, because it is a macro you won't find the function
> >> definitions if you grep on the function name.
> > 
> > True as well. You could simply change the macro to include the full
> > function name. This was not suggested in review back then AFAIR.
> > 
> >> But any functional changes here need to be Acked by Laurent first.
> 
> How do you want me to proceed on this ?

-- 
Regards,

Laurent Pinchart


  reply	other threads:[~2014-11-29 19:11 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-17 10:41 [PATCH] media: v4l2-subdev.h: drop the guard CONFIG_VIDEO_V4L2_SUBDEV_API for v4l2_subdev_get_try_*() Lad, Prabhakar
2014-11-17 10:53 ` Sakari Ailus
2014-11-17 10:56   ` Prabhakar Lad
2014-11-18  9:39 ` Hans Verkuil
2014-11-18 13:35   ` Prabhakar Lad
2014-11-18 18:07   ` Sakari Ailus
2014-11-29 18:30     ` Prabhakar Lad
2014-11-29 19:12       ` Laurent Pinchart [this message]
2014-11-30 21:05         ` Prabhakar Lad
2014-11-30 21:16           ` Laurent Pinchart
2014-11-30 21:30             ` Prabhakar Lad
2014-12-01 23:26               ` Laurent Pinchart
2014-12-02  7:45                 ` Hans Verkuil
2014-12-02 12:53                   ` Hans Verkuil
2014-12-02 12:59                     ` Laurent Pinchart
2014-12-02 19:34                       ` Hans Verkuil
2014-12-02 20:56                         ` Laurent Pinchart
2014-12-02  7:51                 ` Prabhakar Lad

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3017627.SLutb67dz2@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=hans.verkuil@cisco.com \
    --cc=hverkuil@xs4all.nl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=prabhakar.csengg@gmail.com \
    --cc=sakari.ailus@iki.fi \
    --cc=sakari.ailus@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.