Message ID | 20220128083309.213122-3-sakari.ailus@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Set bus_info field in framework | expand |
Hi Sakari, Thank you for the patch. On Fri, Jan 28, 2022 at 10:33:07AM +0200, 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 | 28 +++++++++++++++++++++++++--- > 1 file changed, 25 insertions(+), 3 deletions(-) > > diff --git a/include/media/media-device.h b/include/media/media-device.h > index 1345e6da688a..54f0c12bc682 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,26 @@ 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) > > + > +/** > + * media_set_bus_info() - Conditionally set bus_info It's not conditional anymore. > + * > + * @bus_info: Variable where to write the bus info (char array) > + * @bus_info_size: Length of the bus_info > + * @dev: Related struct device > + * > + * Sets bus information based on &dev. This is currently done for PCI and > + * platform devices. dev is required to be non-NULL for this to happen. Are there drivers that set a NULL dev ? I'd also mention that this function is not meant to be called by drivers. > + */ > +static inline void > +media_set_bus_info(char *bus_info, size_t bus_info_size, struct device *dev) > +{ > + if (!dev) > + strscpy(bus_info, "no bus info", bus_info_size); > + else 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)); > +} > + > #endif
Hi Laurent, On Fri, Jan 28, 2022 at 04:51:32PM +0200, Laurent Pinchart wrote: > > + * @bus_info: Variable where to write the bus info (char array) > > + * @bus_info_size: Length of the bus_info > > + * @dev: Related struct device > > + * > > + * Sets bus information based on &dev. This is currently done for PCI and > > + * platform devices. dev is required to be non-NULL for this to happen. > > Are there drivers that set a NULL dev ? There shouldn't be but when the function is called from the framework, it's better to assume this could be the case.
diff --git a/include/media/media-device.h b/include/media/media-device.h index 1345e6da688a..54f0c12bc682 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,26 @@ 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) + +/** + * media_set_bus_info() - Conditionally set bus_info + * + * @bus_info: Variable where to write the bus info (char array) + * @bus_info_size: Length of the bus_info + * @dev: Related struct device + * + * Sets bus information based on &dev. This is currently done for PCI and + * platform devices. dev is required to be non-NULL for this to happen. + */ +static inline void +media_set_bus_info(char *bus_info, size_t bus_info_size, struct device *dev) +{ + if (!dev) + strscpy(bus_info, "no bus info", bus_info_size); + else 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)); +} + #endif
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 | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-)