From: Mauro Carvalho Chehab Date: Fri, 12 Feb 2010 06:51:43 +0000 (-0300) Subject: V4L/DVB: tm6000: only register after initialized X-Git-Tag: v2.6.35-rc1~480^2~434 X-Git-Url: https://bbs.cooldavid.org/git/?a=commitdiff_plain;h=762e17eb520cf31daa46061818f13b0665e38d7f;p=net-next-2.6.git V4L/DVB: tm6000: only register after initialized 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 --- diff --git a/drivers/staging/tm6000/tm6000-cards.c b/drivers/staging/tm6000/tm6000-cards.c index e09d7570771..43620a3f5ec 100644 --- a/drivers/staging/tm6000/tm6000-cards.c +++ b/drivers/staging/tm6000/tm6000-cards.c @@ -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) {