All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: linux-media@vger.kernel.org, laurent.pinchart@ideasonboard.com
Subject: Re: [PATCH 1/3] media: Provide a helper for setting bus_info field
Date: Wed, 26 Jan 2022 18:07:09 +0200	[thread overview]
Message-ID: <YfFxrdCCR4UOkBiT@paasikivi.fi.intel.com> (raw)
In-Reply-To: <1266d262-526e-1244-d49b-c5778d2d7729@xs4all.nl>

Hi Hans,

On Tue, Jan 25, 2022 at 01:54:45PM +0100, Hans Verkuil wrote:
> Hi Sakari,
> 
> On 22/01/2022 17:36, Sakari Ailus wrote:
> > The bus_info or a similar field exists in a lot of structs, yet drivers
> > tend to set the value of that field by themselves in a determinable way.
> > Thus provide a helper for doing this. To be used in subsequent patches.
> > 
> > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > ---
> >  include/media/media-device.h | 30 +++++++++++++++++++++++++++---
> >  1 file changed, 27 insertions(+), 3 deletions(-)
> > 
> > diff --git a/include/media/media-device.h b/include/media/media-device.h
> > index 1345e6da688a..9f0458068196 100644
> > --- a/include/media/media-device.h
> > +++ b/include/media/media-device.h
> > @@ -13,12 +13,13 @@
> >  
> >  #include <linux/list.h>
> >  #include <linux/mutex.h>
> > +#include <linux/pci.h>
> > +#include <linux/platform_device.h>
> >  
> >  #include <media/media-devnode.h>
> >  #include <media/media-entity.h>
> >  
> >  struct ida;
> > -struct device;
> >  struct media_device;
> >  
> >  /**
> > @@ -181,8 +182,7 @@ struct media_device {
> >  	atomic_t request_id;
> >  };
> >  
> > -/* We don't need to include pci.h or usb.h here */
> > -struct pci_dev;
> > +/* We don't need to include usb.h here */
> >  struct usb_device;
> >  
> >  #ifdef CONFIG_MEDIA_CONTROLLER
> > @@ -496,4 +496,28 @@ static inline void __media_device_usb_init(struct media_device *mdev,
> >  #define media_device_usb_init(mdev, udev, name) \
> >  	__media_device_usb_init(mdev, udev, name, KBUILD_MODNAME)
> >  
> > +static inline void
> > +__media_set_bus_info(char *bus_info, size_t bus_info_size, struct device *dev)
> > +{
> > +	if (!dev || *bus_info)
> > +		return;
> > +
> > +	if (dev_is_platform(dev))
> > +		snprintf(bus_info, bus_info_size, "platform:%s", dev_name(dev));
> > +	else if (dev_is_pci(dev))
> > +		snprintf(bus_info, bus_info_size, "PCI:%s", dev_name(dev));
> > +}
> > +
> > +/**
> > + * media_set_bus_info() - Conditionally set bus_info
> > + *
> > + * @bus_info:	Variable where to write the bus info (char array)
> > + * @dev:	Related struct device
> > + *
> > + * Sets bus information based on device conditionally, if the first character of
> > + * &bus_info is not '\0' and dev is non-NULL.
> > + */
> > +#define media_set_bus_info(bus_info, dev) \
> > +	__media_set_bus_info(bus_info, sizeof(bus_info), dev)
> 
> Wouldn't it be simpler to make two #defines:
> 
> #define media_set_bus_info(mdev, dev) \
> 	__media_set_bus_info(mdev->bus_info, sizeof(mdev->bus_info), dev)
> 
> and:
> 
> #define v4l2_cap_set_bus_info(cap, dev) \
> 	__media_set_bus_info(cap->bus_info, sizeof(cap->bus_info), dev)
> 
> That way the sizeof() always works correctly.
> 
> This could also be static inlines to have better type checking, of course.
> 
> Another option is:
> 
> #define media_set_bus_info(s, dev) \
> 	__media_set_bus_info((s)->bus_info, sizeof((s)->bus_info), dev)
> 
> That's more generic, but it does make the assumption that the struct s
> has a field bus_info. Which is a reasonable assumption IMHO.
> 
> I do like the idea of this series.

Thanks for the comments.

I prefer Laurent's suggestion of removing the macro and simply using
sizeof() in the caller. Note that there will be a very small number of
these calls and so far none in the drivers (nor there should be any).

-- 
Kind regards,

Sakari Ailus

  reply	other threads:[~2022-01-26 16:07 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-22 16:36 [PATCH 0/3] Set bus_info field in framework Sakari Ailus
2022-01-22 16:36 ` [PATCH 1/3] media: Provide a helper for setting bus_info field Sakari Ailus
2022-01-22 23:44   ` Laurent Pinchart
2022-01-24 15:55     ` Sakari Ailus
2022-01-25 12:54   ` Hans Verkuil
2022-01-26 16:07     ` Sakari Ailus [this message]
2022-01-22 16:36 ` [PATCH 2/3] media: Set bus_info in media_device_init() Sakari Ailus
2022-01-22 23:48   ` Laurent Pinchart
2022-01-24 15:59     ` Sakari Ailus
2022-01-24 16:21       ` Laurent Pinchart
2022-01-22 16:36 ` [PATCH 3/3] v4l: ioctl: Set bus_info in v4l_querycap() Sakari Ailus
2022-01-22 23:51   ` Laurent Pinchart
2022-01-24 16:02     ` Sakari Ailus
2022-01-24 16:23       ` Laurent Pinchart
2022-01-24 16:47         ` Sakari Ailus
2022-01-24 22:23   ` kernel test robot
2022-01-24 22:23     ` kernel test robot

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=YfFxrdCCR4UOkBiT@paasikivi.fi.intel.com \
    --to=sakari.ailus@linux.intel.com \
    --cc=hverkuil@xs4all.nl \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    /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.