|
@@ -134,10 +134,10 @@ static void au0828_unregister_media_device(struct au0828_dev *dev)
|
|
|
{
|
|
|
|
|
|
#ifdef CONFIG_MEDIA_CONTROLLER
|
|
|
- if (dev->media_dev) {
|
|
|
+ if (dev->media_dev &&
|
|
|
+ media_devnode_is_registered(&dev->media_dev->devnode)) {
|
|
|
media_device_unregister(dev->media_dev);
|
|
|
media_device_cleanup(dev->media_dev);
|
|
|
- kfree(dev->media_dev);
|
|
|
dev->media_dev = NULL;
|
|
|
}
|
|
|
#endif
|
|
@@ -191,14 +191,11 @@ 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_get_devres(&udev->dev);
|
|
|
if (!mdev)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
- if (!dev->board.name)
|
|
|
- media_device_usb_init(mdev, udev, "unknown au0828");
|
|
|
- else
|
|
|
- media_device_usb_init(mdev, udev, dev->board.name);
|
|
|
+ media_device_usb_init(mdev, udev, udev->product);
|
|
|
|
|
|
dev->media_dev = mdev;
|
|
|
#endif
|