[media] tm6000: add radio capabilities
[pandora-kernel.git] / drivers / staging / tm6000 / tm6000-video.c
index c80a316..a434a32 100644 (file)
@@ -182,7 +182,7 @@ static inline void get_next_buf(struct tm6000_dmaqueue *dma_q,
        if (!buf)
                return;
 
-       /* Cleans up buffer - Usefull for testing for frame/URB loss */
+       /* Cleans up buffer - Useful for testing for frame/URB loss */
        outp = videobuf_to_vmalloc(&(*buf)->vb);
 
        return;
@@ -228,7 +228,7 @@ static int copy_streams(u8 *data, unsigned long len,
        unsigned long header = 0;
        int rc = 0;
        unsigned int cmd, cpysize, pktsize, size, field, block, line, pos = 0;
-       struct tm6000_buffer *vbuf;
+       struct tm6000_buffer *vbuf = NULL;
        char *voutp = NULL;
        unsigned int linewidth;
 
@@ -318,7 +318,7 @@ static int copy_streams(u8 *data, unsigned long len,
                                        if (pos + size > vbuf->vb.size)
                                                cmd = TM6000_URB_MSG_ERR;
                                        dev->isoc_ctl.vfield = field;
-                       }
+                               }
                                break;
                        case TM6000_URB_MSG_VBI:
                                break;
@@ -1730,24 +1730,26 @@ int tm6000_v4l2_register(struct tm6000_core *dev)
        printk(KERN_INFO "%s: registered device %s\n",
               dev->name, video_device_node_name(dev->vfd));
 
-       dev->radio_dev = vdev_init(dev, &tm6000_radio_template,
-                                                  "radio");
-       if (!dev->radio_dev) {
-               printk(KERN_INFO "%s: can't register radio device\n",
-                      dev->name);
-               return ret; /* FIXME release resource */
-       }
+       if (dev->caps.has_radio) {
+               dev->radio_dev = vdev_init(dev, &tm6000_radio_template,
+                                                          "radio");
+               if (!dev->radio_dev) {
+                       printk(KERN_INFO "%s: can't register radio device\n",
+                              dev->name);
+                       return ret; /* FIXME release resource */
+               }
 
-       ret = video_register_device(dev->radio_dev, VFL_TYPE_RADIO,
-                                   radio_nr);
-       if (ret < 0) {
-               printk(KERN_INFO "%s: can't register radio device\n",
-                      dev->name);
-               return ret; /* FIXME release resource */
-       }
+               ret = video_register_device(dev->radio_dev, VFL_TYPE_RADIO,
+                                           radio_nr);
+               if (ret < 0) {
+                       printk(KERN_INFO "%s: can't register radio device\n",
+                              dev->name);
+                       return ret; /* FIXME release resource */
+               }
 
-       printk(KERN_INFO "%s: registered device %s\n",
-              dev->name, video_device_node_name(dev->radio_dev));
+               printk(KERN_INFO "%s: registered device %s\n",
+                      dev->name, video_device_node_name(dev->radio_dev));
+       }
 
        printk(KERN_INFO "Trident TVMaster TM5600/TM6000/TM6010 USB2 board (Load status: %d)\n", ret);
        return ret;