V4L/DVB: tm6000: only register after initialized
authorMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 12 Feb 2010 06:51:43 +0000 (03:51 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 18 May 2010 03:43:59 +0000 (00:43 -0300)
Udev calls an utility when it senses a v4l device. So, register needs
to be delayed, otherwise it may cause block conditions.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/staging/tm6000/tm6000-cards.c

index e09d75707714217f6bcfee9b9f562bb6009c4436..43620a3f5ec1c0e2d694fa8acea4c9fbe37c8d99 100644 (file)
@@ -453,11 +453,6 @@ static int tm6000_init_dev(struct tm6000_core *dev)
        if (rc<0)
                goto err;
 
-       /* register and initialize V4L2 */
-       rc=tm6000_v4l2_register(dev);
-       if (rc<0)
-               goto err;
-
        /* Default values for STD and resolutions */
        dev->width = 720;
        dev->height = 480;
@@ -480,12 +475,18 @@ static int tm6000_init_dev(struct tm6000_core *dev)
                v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap,
                        "tvaudio", "tvaudio", I2C_ADDR_TDA9874, NULL);
 
+       /* register and initialize V4L2 */
+       rc=tm6000_v4l2_register(dev);
+       if (rc<0)
+               goto err;
+
        if(dev->caps.has_dvb) {
                dev->dvb = kzalloc(sizeof(*(dev->dvb)), GFP_KERNEL);
                if(!dev->dvb) {
                        rc = -ENOMEM;
                        goto err2;
                }
+
 #ifdef CONFIG_VIDEO_TM6000_DVB
                rc = tm6000_dvb_register(dev);
                if(rc < 0) {