On 06/03/2015 11:42 AM, Mauro Carvalho Chehab wrote: > Em Wed, 03 Jun 2015 09:12:53 -0600 > Shuah Khan <shuahkh@xxxxxxxxxxxxxxx> escreveu: > >> Add new media controller API to allocate media device as a >> device resource. When a media device is created on the main >> struct device which is the parent device for the interface >> device, it will be available to all drivers associated with >> that interface. For example, if a usb media device driver >> creates the media device on the main struct device which is >> common for all the drivers that control the media device, >> including the non-media ALSA driver, media controller API >> can be used to share access to the resources on the media >> device. This new interface provides the above described >> feature. A second interface that finds and returns the media >> device is added to allow drivers to find the media device >> created by any of the drivers associated with the device. >> >> Signed-off-by: Shuah Khan <shuahkh@xxxxxxxxxxxxxxx> >> --- >> drivers/media/media-device.c | 33 +++++++++++++++++++++++++++++++++ >> include/media/media-device.h | 2 ++ >> 2 files changed, 35 insertions(+) >> >> diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c >> index 7b39440..a4d5b24 100644 >> --- a/drivers/media/media-device.c >> +++ b/drivers/media/media-device.c >> @@ -462,3 +462,36 @@ void media_device_unregister_entity(struct media_entity *entity) >> entity->parent = NULL; >> } >> EXPORT_SYMBOL_GPL(media_device_unregister_entity); >> + >> +static void media_device_release_devres(struct device *dev, void *res) >> +{ >> +} >> + >> +/* >> + * media_device_get_devres() - get media device as device resource >> + * creates if one doesn't exist >> +*/ >> +struct media_device *media_device_get_devres(struct device *dev) >> +{ >> + struct media_device *mdev; >> + >> + mdev = devres_find(dev, media_device_release_devres, NULL, NULL); >> + if (mdev) >> + return mdev; >> + >> + mdev = devres_alloc(media_device_release_devres, >> + sizeof(struct media_device), GFP_KERNEL); >> + if (!mdev) >> + return NULL; >> + return devres_get(dev, mdev, NULL, NULL); >> +} >> +EXPORT_SYMBOL_GPL(media_device_get_devres); >> + >> +/* >> + * media_device_find_devres() - find media device as device resource >> +*/ >> +struct media_device *media_device_find_devres(struct device *dev) >> +{ >> + return devres_find(dev, media_device_release_devres, NULL, NULL); >> +} >> +EXPORT_SYMBOL_GPL(media_device_find_devres); >> diff --git a/include/media/media-device.h b/include/media/media-device.h >> index 6e6db78..22792cd 100644 >> --- a/include/media/media-device.h >> +++ b/include/media/media-device.h >> @@ -95,6 +95,8 @@ void media_device_unregister(struct media_device *mdev); >> int __must_check media_device_register_entity(struct media_device *mdev, >> struct media_entity *entity); >> void media_device_unregister_entity(struct media_entity *entity); >> +struct media_device *media_device_get_devres(struct device *dev); >> +struct media_device *media_device_find_devres(struct device *dev); > > Hmm... what happens if the Kernel is compiled without MC controller > support? Yeah. I noticed media controller api users have the code in ifdef CONFIG_MEDIA_CONTROLLER. > > I think that the best would be to add a #ifdef at the header file and > provide an alternate dummy method to avoid the need of testing for it > everywhere. > I agree with you that a better way to do it would be defining media controller api in ifdef CONFIG_MEDIA_CONTROLLER and provide stubs for else case, similar to what I did in sound/usb/media.c I followed the existing code to add new interfaces. Do you want to see all media controller interfaces in ifdef clause with stubs or just the two new interfaces I added? Or is this something that should be done as a separate change to catch all media controller interfaces? thanks, -- Shuah -- Shuah Khan Sr. Linux Kernel Developer Open Source Innovation Group Samsung Research America (Silicon Valley) shuahkh@xxxxxxxxxxxxxxx | (970) 217-8978 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html