All pastes #509631 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-05-25 15:51 UTC
rendered paste body
diff -urNp v4l-dvb.org/linux/drivers/media/dvb/dvb-core/dvb_frontend.c v4l-dvb/linux/drivers/media/dvb/dvb-core/dvb_frontend.c
--- v4l-dvb.org/linux/drivers/media/dvb/dvb-core/dvb_frontend.c	2007-02-24 11:57:13.000000000 +0100
+++ v4l-dvb/linux/drivers/media/dvb/dvb-core/dvb_frontend.c	2007-05-21 19:16:42.000000000 +0200
@@ -460,8 +460,8 @@ int newapi_to_olddrv(struct dvbfe_params
 	case DVBFE_DELSYS_DVBS2:
 	case DVBFE_DELSYS_DSS:
 	case DVBFE_DELSYS_DVBH:
-		printk("%s: SORRY ! Backward compatibility unavailable for these delivery systems !!\n", __func__);
-		break;
+/*		printk("%s: SORRY ! Backward compatibility unavailable for these delivery systems !!\n", __func__);
+*/		break;
 	default:
 		dprintk("%s: Unsupported delivery system\n", __func__);
 		return -EINVAL;
@@ -1559,10 +1559,20 @@ static int dvb_frontend_ioctl(struct ino
 		struct dvb_frontend_tune_settings fetunesettings;
 
 		fe->legacy = 1;
+
+		memset(&fepriv->fe_info, 0, sizeof (struct dvbfe_info));
+		fepriv->fe_info.delivery = DVBFE_DELSYS_DVBS;
+		fe->ops.get_info(fe, &fepriv->fe_info);
+
 		memcpy(&fepriv->parameters, parg, sizeof (struct dvb_frontend_parameters));
 		memset(&fetunesettings, 0, sizeof(struct dvb_frontend_tune_settings));
 		memcpy(&fetunesettings.parameters, parg, sizeof (struct dvb_frontend_parameters));
 
+		olddrv_to_newapi(fe,&fepriv->fe_params, &fepriv->parameters, FE_QPSK);
+
+		/* Request the search algorithm to search	*/
+		fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN;
+
 		/* force auto frequency inversion if requested */
 		if (dvb_force_auto_inversion) {
 			fepriv->parameters.inversion = INVERSION_AUTO;
@@ -1710,8 +1720,8 @@ static int dvb_frontend_ioctl(struct ino
 			fepriv->min_delay = (dvb_override_tune_delay * HZ) / 1000;
 
 		fepriv->state = FESTATE_RETUNE;
-		printk("%s: FESTATE_RETUNE: fepriv->state=%d\n", __func__, fepriv->state);
-		dvb_frontend_wakeup(fe);
+/*		printk("%s: FESTATE_RETUNE: fepriv->state=%d\n", __func__, fepriv->state);
+*/		dvb_frontend_wakeup(fe);
 		dvb_frontend_add_event(fe, 0);
 		fepriv->status = 0;
 		err = 0;
@@ -1737,8 +1747,8 @@ static int dvb_frontend_ioctl(struct ino
 		}
 		break;
 	case DVBFE_GET_INFO:
-		printk("%s: DVBFE_GET_INFO\n", __func__);
-		fe->legacy = 0;
+/*		printk("%s: DVBFE_GET_INFO\n", __func__);
+*/		fe->legacy = 0;
 		if (fe->ops.get_info) {
 			memcpy(&fepriv->fe_info, (struct dvbfe_info *) parg, sizeof (struct dvbfe_info));
 			err = fe->ops.get_info(fe, &fepriv->fe_info);
@@ -1893,13 +1903,15 @@ void dvb_frontend_detach(struct dvb_fron
 {
 	void *ptr;
 
-	if (fe->ops.release_sec) {
+	ptr = (void*)fe->ops.release_sec;
+	if (ptr) {
 		fe->ops.release_sec(fe);
-		symbol_put_addr(fe->ops.release_sec);
+		symbol_put_addr(ptr);
 	}
-	if (fe->ops.tuner_ops.release) {
+	ptr = (void*)fe->ops.tuner_ops.release;
+	if (ptr) {
 		fe->ops.tuner_ops.release(fe);
-		symbol_put_addr(fe->ops.tuner_ops.release);
+		symbol_put_addr(ptr);
 	}
 	ptr = (void*)fe->ops.release;
 	if (ptr) {