From 3406a0aa7630cd74e82a090e2c2c9b2f00152481 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Tue, 28 Oct 2008 01:27:37 +0000 Subject: add DVB_DEVICE_NUM and DVB_ADAPTER_NUM to uevent From: Kay Sievers This allows udev to create proper device nodes without any hacky shell scripts/programs to call, which guess these numbers from the kernel device names. Signed-off-by: Kay Sievers Signed-off-by: Mauro Carvalho Chehab --- linux/drivers/media/dvb/dvb-core/dvbdev.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'linux/drivers/media/dvb/dvb-core') diff --git a/linux/drivers/media/dvb/dvb-core/dvbdev.c b/linux/drivers/media/dvb/dvb-core/dvbdev.c index a35286f1a..59a65a8c3 100644 --- a/linux/drivers/media/dvb/dvb-core/dvbdev.c +++ b/linux/drivers/media/dvb/dvb-core/dvbdev.c @@ -262,11 +262,11 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev, #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 27) clsdev = device_create(dvb_class, adap->device, MKDEV(DVB_MAJOR, nums2minor(adap->num, type, id)), - NULL, "dvb%d.%s%d", adap->num, dnames[type], id); + dvbdev, "dvb%d.%s%d", adap->num, dnames[type], id); #elif LINUX_VERSION_CODE == KERNEL_VERSION(2, 6, 27) clsdev = device_create_drvdata(dvb_class, adap->device, MKDEV(DVB_MAJOR, minor), - NULL, "dvb%d.%s%d", adap->num, dnames[type], id); + dvbdev, "dvb%d.%s%d", adap->num, dnames[type], id); #else clsdev = device_create(dvb_class, adap->device, MKDEV(DVB_MAJOR, minor), @@ -451,6 +451,17 @@ out: return err; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) +static int dvb_uevent(struct device *dev, struct kobj_uevent_env *env) +{ + struct dvb_device *dvbdev = dev_get_drvdata(dev); + + add_uevent_var(env, "DVB_DEVICE_NUM=%d", dvbdev->id); + add_uevent_var(env, "DVB_ADAPTER_NUM=%d", dvbdev->adapter->num); + return 0; +} +#endif + static int __init init_dvbdev(void) { int retval; @@ -477,6 +488,9 @@ static int __init init_dvbdev(void) retval = PTR_ERR(dvb_class); goto error; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + dvb_class->dev_uevent = dvb_uevent; +#endif return 0; error: -- cgit v1.2.3 From 6488005057c88e93e54414d4660efc871acb3e54 Mon Sep 17 00:00:00 2001 From: Manu Abraham Date: Tue, 28 Oct 2008 12:58:04 +0400 Subject: Fix: Commit 9344 breaks tning of cx24123 From: Matthias Schwarzott Signed-off-by: Matthias Schwarzott Signed-off-by: Manu Abraham --- linux/drivers/media/dvb/dvb-core/dvb_frontend.c | 1 + 1 file changed, 1 insertion(+) (limited to 'linux/drivers/media/dvb/dvb-core') diff --git a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c index 56f99bb63..f5d8d5274 100644 --- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c @@ -584,6 +584,7 @@ restart: if (fepriv->state & FESTATE_RETUNE) { dprintk("%s: Retune requested, FESTATE_RETUNE\n", __func__); + params = &fepriv->parameters; fepriv->state = FESTATE_TUNED; } -- cgit v1.2.3 From fe4b378af5d94e1e72541ea0924605fc54489829 Mon Sep 17 00:00:00 2001 From: Manu Abraham Date: Tue, 28 Oct 2008 13:11:24 +0400 Subject: Fix: parameters not supplied in the search process From: Manu Abraham Signed-off-by: Manu Abraham --- linux/drivers/media/dvb/dvb-core/dvb_frontend.c | 1 + 1 file changed, 1 insertion(+) (limited to 'linux/drivers/media/dvb/dvb-core') diff --git a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c index f5d8d5274..f6bab07a5 100644 --- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c @@ -606,6 +606,7 @@ restart: dprintk("%s: Frontend ALGO = DVBFE_ALGO_CUSTOM, state=%d\n", __func__, fepriv->state); if (fepriv->state & FESTATE_RETUNE) { dprintk("%s: Retune requested, FESTAT_RETUNE\n", __func__); + params = &fepriv->parameters; fepriv->state = FESTATE_TUNED; } /* Case where we are going to search for a carrier -- cgit v1.2.3 From ed724f377e9b06f98df43e7f32709b9804da711e Mon Sep 17 00:00:00 2001 From: Manu Abraham Date: Thu, 30 Oct 2008 09:38:59 +0400 Subject: Fix frontend DVBFE_ALGO_CUSTOM Search Issue: Currently, the DVBFE_ALGO_CUSTOM is called only at the first tuning. After the first call, the status is never set to force a new tuning. From: Marco Schluessler Signed-off-by: Marco Schluessler Signed-off-by: Manu Abraham --- linux/drivers/media/dvb/dvb-core/dvb_frontend.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'linux/drivers/media/dvb/dvb-core') diff --git a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c index f6bab07a5..4d668e16d 100644 --- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c @@ -1389,6 +1389,9 @@ int dtv_property_process_set(struct dvb_frontend *fe, struct dtv_property *tvp, dprintk("%s() Finalised property cache\n", __func__); dtv_property_cache_submit(fe); + /* Request the search algorithm to search */ + fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN; + r |= dvb_frontend_ioctl_legacy(inode, file, FE_SET_FRONTEND, &fepriv->parameters); break; -- cgit v1.2.3