Re: [PATCH v4 2/3] media: change au0828 to use Media Device Allocator API

From: Mauro Carvalho Chehab
Date: Fri Nov 25 2016 - 04:25:30 EST


Em Wed, 16 Nov 2016 07:29:10 -0700
Shuah Khan <shuahkh@xxxxxxxxxxxxxxx> escreveu:

> Change au0828 to use Media Device Allocator API to allocate media device
> with the parent usb struct device as the key, so it can be shared with the
> snd_usb_audio driver.
>
> Signed-off-by: Shuah Khan <shuahkh@xxxxxxxxxxxxxxx>

I missed a v5 for this patch. This one looks OK.

If you don't change this anymore, please add on the v6:

Reviewed-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>

> ---
> Changes since v2:
> - Updated media_device_delete() to pass in module name.
>
> drivers/media/usb/au0828/au0828-core.c | 12 ++++--------
> drivers/media/usb/au0828/au0828.h | 1 +
> 2 files changed, 5 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/media/usb/au0828/au0828-core.c b/drivers/media/usb/au0828/au0828-core.c
> index bf53553..582f31f 100644
> --- a/drivers/media/usb/au0828/au0828-core.c
> +++ b/drivers/media/usb/au0828/au0828-core.c
> @@ -157,9 +157,7 @@ static void au0828_unregister_media_device(struct au0828_dev *dev)
> dev->media_dev->enable_source = NULL;
> dev->media_dev->disable_source = NULL;
>
> - media_device_unregister(dev->media_dev);
> - media_device_cleanup(dev->media_dev);
> - kfree(dev->media_dev);
> + media_device_delete(dev->media_dev, KBUILD_MODNAME);
> dev->media_dev = NULL;
> #endif
> }
> @@ -212,14 +210,10 @@ static int au0828_media_device_init(struct au0828_dev *dev,
> #ifdef CONFIG_MEDIA_CONTROLLER
> struct media_device *mdev;
>
> - mdev = kzalloc(sizeof(*mdev), GFP_KERNEL);
> + mdev = media_device_usb_allocate(udev, KBUILD_MODNAME);
> if (!mdev)
> return -ENOMEM;
>
> - /* check if media device is already initialized */
> - if (!mdev->dev)
> - media_device_usb_init(mdev, udev, udev->product);
> -
> dev->media_dev = mdev;
> #endif
> return 0;
> @@ -487,6 +481,8 @@ static int au0828_media_device_register(struct au0828_dev *dev,
> /* register media device */
> ret = media_device_register(dev->media_dev);
> if (ret) {
> + media_device_delete(dev->media_dev, KBUILD_MODNAME);
> + dev->media_dev = NULL;
> dev_err(&udev->dev,
> "Media Device Register Error: %d\n", ret);
> return ret;
> diff --git a/drivers/media/usb/au0828/au0828.h b/drivers/media/usb/au0828/au0828.h
> index dd7b378..4bf1b0c 100644
> --- a/drivers/media/usb/au0828/au0828.h
> +++ b/drivers/media/usb/au0828/au0828.h
> @@ -35,6 +35,7 @@
> #include <media/v4l2-ctrls.h>
> #include <media/v4l2-fh.h>
> #include <media/media-device.h>
> +#include <media/media-dev-allocator.h>
>
> /* DVB */
> #include "demux.h"



Thanks,
Mauro