{
 
 #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
 #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