diff options
Diffstat (limited to 'drivers/media/dvb-core')
| -rw-r--r-- | drivers/media/dvb-core/demux.h | 39 | ||||
| -rw-r--r-- | drivers/media/dvb-core/dmxdev.c | 5 | ||||
| -rw-r--r-- | drivers/media/dvb-core/dvb-usb-ids.h | 3 | ||||
| -rw-r--r-- | drivers/media/dvb-core/dvb_demux.c | 30 | ||||
| -rw-r--r-- | drivers/media/dvb-core/dvb_demux.h | 4 | ||||
| -rw-r--r-- | drivers/media/dvb-core/dvb_frontend.c | 333 | ||||
| -rw-r--r-- | drivers/media/dvb-core/dvb_frontend.h | 4 | ||||
| -rw-r--r-- | drivers/media/dvb-core/dvb_net.c | 2 | 
8 files changed, 209 insertions, 211 deletions
diff --git a/drivers/media/dvb-core/demux.h b/drivers/media/dvb-core/demux.h index eb91fd808c1..833191bcd81 100644 --- a/drivers/media/dvb-core/demux.h +++ b/drivers/media/dvb-core/demux.h @@ -83,45 +83,6 @@ enum dmx_success {  #define TS_DEMUX        8   /* in case TS_PACKET is set, send the TS to  			       the demux device, not to the dvr device */ -/* PES type for filters which write to built-in decoder */ -/* these should be kept identical to the types in dmx.h */ - -enum dmx_ts_pes -{  /* also send packets to decoder (if it exists) */ -	DMX_TS_PES_AUDIO0, -	DMX_TS_PES_VIDEO0, -	DMX_TS_PES_TELETEXT0, -	DMX_TS_PES_SUBTITLE0, -	DMX_TS_PES_PCR0, - -	DMX_TS_PES_AUDIO1, -	DMX_TS_PES_VIDEO1, -	DMX_TS_PES_TELETEXT1, -	DMX_TS_PES_SUBTITLE1, -	DMX_TS_PES_PCR1, - -	DMX_TS_PES_AUDIO2, -	DMX_TS_PES_VIDEO2, -	DMX_TS_PES_TELETEXT2, -	DMX_TS_PES_SUBTITLE2, -	DMX_TS_PES_PCR2, - -	DMX_TS_PES_AUDIO3, -	DMX_TS_PES_VIDEO3, -	DMX_TS_PES_TELETEXT3, -	DMX_TS_PES_SUBTITLE3, -	DMX_TS_PES_PCR3, - -	DMX_TS_PES_OTHER -}; - -#define DMX_TS_PES_AUDIO    DMX_TS_PES_AUDIO0 -#define DMX_TS_PES_VIDEO    DMX_TS_PES_VIDEO0 -#define DMX_TS_PES_TELETEXT DMX_TS_PES_TELETEXT0 -#define DMX_TS_PES_SUBTITLE DMX_TS_PES_SUBTITLE0 -#define DMX_TS_PES_PCR      DMX_TS_PES_PCR0 - -  struct dmx_ts_feed {  	int is_filtering; /* Set to non-zero when filtering in progress */  	struct dmx_demux *parent; /* Back-pointer */ diff --git a/drivers/media/dvb-core/dmxdev.c b/drivers/media/dvb-core/dmxdev.c index d81dbb22aa8..a1a3a5159d7 100644 --- a/drivers/media/dvb-core/dmxdev.c +++ b/drivers/media/dvb-core/dmxdev.c @@ -569,7 +569,7 @@ static int dvb_dmxdev_start_feed(struct dmxdev *dmxdev,  	dmx_output_t otype;  	int ret;  	int ts_type; -	dmx_pes_type_t ts_pes; +	enum dmx_ts_pes ts_pes;  	struct dmx_ts_feed *tsfeed;  	feed->ts = NULL; @@ -852,7 +852,8 @@ static int dvb_dmxdev_filter_set(struct dmxdev *dmxdev,  				 struct dmxdev_filter *dmxdevfilter,  				 struct dmx_sct_filter_params *params)  { -	dprintk("function : %s\n", __func__); +	dprintk("function : %s, PID=0x%04x, flags=%02x, timeout=%d\n", +		__func__, params->pid, params->flags, params->timeout);  	dvb_dmxdev_filter_stop(dmxdevfilter); diff --git a/drivers/media/dvb-core/dvb-usb-ids.h b/drivers/media/dvb-core/dvb-usb-ids.h index 399e1042d35..335a8f4695b 100644 --- a/drivers/media/dvb-core/dvb-usb-ids.h +++ b/drivers/media/dvb-core/dvb-usb-ids.h @@ -124,8 +124,7 @@  #define USB_PID_DIBCOM_STK7770P				0x1e80  #define USB_PID_DIBCOM_NIM7090				0x1bb2  #define USB_PID_DIBCOM_TFE7090PVR			0x1bb4 -#define USB_PID_DIBCOM_TFE7090E				0x1bb7 -#define USB_PID_DIBCOM_TFE7790E				0x1e6e +#define USB_PID_DIBCOM_TFE7790P				0x1e6e  #define USB_PID_DIBCOM_NIM9090M				0x2383  #define USB_PID_DIBCOM_NIM9090MD			0x2384  #define USB_PID_DPOSH_M9206_COLD			0x9206 diff --git a/drivers/media/dvb-core/dvb_demux.c b/drivers/media/dvb-core/dvb_demux.c index d319717eb53..3485655fa08 100644 --- a/drivers/media/dvb-core/dvb_demux.c +++ b/drivers/media/dvb-core/dvb_demux.c @@ -440,20 +440,22 @@ static void dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf)  		if (!dvb_demux_feed_err_pkts)  			return;  	} else /* if TEI bit is set, pid may be wrong- skip pkt counter */ -	if (demux->cnt_storage && dvb_demux_tscheck) { -		/* check pkt counter */ -		if (pid < MAX_PID) { -			if ((buf[3] & 0xf) != demux->cnt_storage[pid]) -				dprintk_tscheck("TS packet counter mismatch. " -						"PID=0x%x expected 0x%x " -						"got 0x%x\n", +		if (demux->cnt_storage && dvb_demux_tscheck) { +			/* check pkt counter */ +			if (pid < MAX_PID) { +				if (buf[3] & 0x10) +					demux->cnt_storage[pid] = +						(demux->cnt_storage[pid] + 1) & 0xf; + +				if ((buf[3] & 0xf) != demux->cnt_storage[pid]) { +					dprintk_tscheck("TS packet counter mismatch. PID=0x%x expected 0x%x got 0x%x\n",  						pid, demux->cnt_storage[pid],  						buf[3] & 0xf); - -			demux->cnt_storage[pid] = ((buf[3] & 0xf) + 1)&0xf; +					demux->cnt_storage[pid] = buf[3] & 0xf; +				} +			} +			/* end check */  		} -		/* end check */ -	}  	list_for_each_entry(feed, &demux->feed_list, list_head) {  		if ((feed->pid != pid) && (feed->pid != 0x2000)) @@ -672,7 +674,7 @@ static int dmx_ts_feed_set(struct dmx_ts_feed *ts_feed, u16 pid, int ts_type,  		return -ERESTARTSYS;  	if (ts_type & TS_DECODER) { -		if (pes_type >= DMX_TS_PES_OTHER) { +		if (pes_type >= DMX_PES_OTHER) {  			mutex_unlock(&demux->mutex);  			return -EINVAL;  		} @@ -844,7 +846,7 @@ static int dvbdmx_release_ts_feed(struct dmx_demux *dmx,  	feed->pid = 0xffff; -	if (feed->ts_type & TS_DECODER && feed->pes_type < DMX_TS_PES_OTHER) +	if (feed->ts_type & TS_DECODER && feed->pes_type < DMX_PES_OTHER)  		demux->pesfilter[feed->pes_type] = NULL;  	mutex_unlock(&demux->mutex); @@ -1266,7 +1268,7 @@ int dvb_dmx_init(struct dvb_demux *dvbdemux)  	INIT_LIST_HEAD(&dvbdemux->frontend_list); -	for (i = 0; i < DMX_TS_PES_OTHER; i++) { +	for (i = 0; i < DMX_PES_OTHER; i++) {  		dvbdemux->pesfilter[i] = NULL;  		dvbdemux->pids[i] = 0xffff;  	} diff --git a/drivers/media/dvb-core/dvb_demux.h b/drivers/media/dvb-core/dvb_demux.h index fa7188a253a..ae7fc33c323 100644 --- a/drivers/media/dvb-core/dvb_demux.h +++ b/drivers/media/dvb-core/dvb_demux.h @@ -119,8 +119,8 @@ struct dvb_demux {  	struct list_head frontend_list; -	struct dvb_demux_feed *pesfilter[DMX_TS_PES_OTHER]; -	u16 pids[DMX_TS_PES_OTHER]; +	struct dvb_demux_feed *pesfilter[DMX_PES_OTHER]; +	u16 pids[DMX_PES_OTHER];  	int playing;  	int recording; diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c index 6e50a758156..57601c0704c 100644 --- a/drivers/media/dvb-core/dvb_frontend.c +++ b/drivers/media/dvb-core/dvb_frontend.c @@ -920,7 +920,7 @@ static int dvb_frontend_clear_cache(struct dvb_frontend *fe)  	u32 delsys;  	delsys = c->delivery_system; -	memset(c, 0, sizeof(struct dtv_frontend_properties)); +	memset(c, 0, offsetof(struct dtv_frontend_properties, strength));  	c->delivery_system = delsys;  	c->state = DTV_CLEAR; @@ -1509,9 +1509,74 @@ static bool is_dvbv3_delsys(u32 delsys)  	return status;  } -static int set_delivery_system(struct dvb_frontend *fe, u32 desired_system) +/** + * emulate_delivery_system - emulate a DVBv5 delivery system with a DVBv3 type + * @fe:			struct frontend; + * @delsys:			DVBv5 type that will be used for emulation + * + * Provides emulation for delivery systems that are compatible with the old + * DVBv3 call. Among its usages, it provices support for ISDB-T, and allows + * using a DVB-S2 only frontend just like it were a DVB-S, if the frontent + * parameters are compatible with DVB-S spec. + */ +static int emulate_delivery_system(struct dvb_frontend *fe, u32 delsys) +{ +	int i; +	struct dtv_frontend_properties *c = &fe->dtv_property_cache; + +	c->delivery_system = delsys; + +	/* +	 * If the call is for ISDB-T, put it into full-seg, auto mode, TV +	 */ +	if (c->delivery_system == SYS_ISDBT) { +		dev_dbg(fe->dvb->device, +			"%s: Using defaults for SYS_ISDBT\n", +			__func__); + +		if (!c->bandwidth_hz) +			c->bandwidth_hz = 6000000; + +		c->isdbt_partial_reception = 0; +		c->isdbt_sb_mode = 0; +		c->isdbt_sb_subchannel = 0; +		c->isdbt_sb_segment_idx = 0; +		c->isdbt_sb_segment_count = 0; +		c->isdbt_layer_enabled = 7; +		for (i = 0; i < 3; i++) { +			c->layer[i].fec = FEC_AUTO; +			c->layer[i].modulation = QAM_AUTO; +			c->layer[i].interleaving = 0; +			c->layer[i].segment_count = 0; +		} +	} +	dev_dbg(fe->dvb->device, "%s: change delivery system on cache to %d\n", +		__func__, c->delivery_system); + +	return 0; +} + +/** + * dvbv5_set_delivery_system - Sets the delivery system for a DVBv5 API call + * @fe:			frontend struct + * @desired_system:	delivery system requested by the user + * + * A DVBv5 call know what's the desired system it wants. So, set it. + * + * There are, however, a few known issues with early DVBv5 applications that + * are also handled by this logic: + * + * 1) Some early apps use SYS_UNDEFINED as the desired delivery system. + *    This is an API violation, but, as we don't want to break userspace, + *    convert it to the first supported delivery system. + * 2) Some apps might be using a DVBv5 call in a wrong way, passing, for + *    example, SYS_DVBT instead of SYS_ISDBT. This is because early usage of + *    ISDB-T provided backward compat with DVB-T. + */ +static int dvbv5_set_delivery_system(struct dvb_frontend *fe, +				     u32 desired_system)  { -	int ncaps, i; +	int ncaps;  	u32 delsys = SYS_UNDEFINED;  	struct dtv_frontend_properties *c = &fe->dtv_property_cache;  	enum dvbv3_emulation_type type; @@ -1522,166 +1587,136 @@ static int set_delivery_system(struct dvb_frontend *fe, u32 desired_system)  	 * assume that the application wants to use the first supported  	 * delivery system.  	 */ -	if (c->delivery_system == SYS_UNDEFINED) -	        c->delivery_system = fe->ops.delsys[0]; +	if (desired_system == SYS_UNDEFINED) +		desired_system = fe->ops.delsys[0]; -	if (desired_system == SYS_UNDEFINED) { -		/* -		 * A DVBv3 call doesn't know what's the desired system. -		 * Also, DVBv3 applications don't know that ops.info->type -		 * could be changed, and they simply dies when it doesn't -		 * match. -		 * So, don't change the current delivery system, as it -		 * may be trying to do the wrong thing, like setting an -		 * ISDB-T frontend as DVB-T. Instead, find the closest -		 * DVBv3 system that matches the delivery system. -		 */ -		if (is_dvbv3_delsys(c->delivery_system)) { +	/* +	 * This is a DVBv5 call. So, it likely knows the supported +	 * delivery systems. So, check if the desired delivery system is +	 * supported +	 */ +	ncaps = 0; +	while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) { +		if (fe->ops.delsys[ncaps] == desired_system) { +			c->delivery_system = desired_system;  			dev_dbg(fe->dvb->device, -					"%s: Using delivery system to %d\n", -					__func__, c->delivery_system); -			return 0; -		} -		type = dvbv3_type(c->delivery_system); -		switch (type) { -		case DVBV3_QPSK: -			desired_system = SYS_DVBS; -			break; -		case DVBV3_QAM: -			desired_system = SYS_DVBC_ANNEX_A; -			break; -		case DVBV3_ATSC: -			desired_system = SYS_ATSC; -			break; -		case DVBV3_OFDM: -			desired_system = SYS_DVBT; -			break; -		default: -			dev_dbg(fe->dvb->device, "%s: This frontend doesn't support DVBv3 calls\n", -					__func__); -			return -EINVAL; -		} -		/* -		 * Get a delivery system that is compatible with DVBv3 -		 * NOTE: in order for this to work with softwares like Kaffeine that -		 *	uses a DVBv5 call for DVB-S2 and a DVBv3 call to go back to -		 *	DVB-S, drivers that support both should put the SYS_DVBS entry -		 *	before the SYS_DVBS2, otherwise it won't switch back to DVB-S. -		 *	The real fix is that userspace applications should not use DVBv3 -		 *	and not trust on calling FE_SET_FRONTEND to switch the delivery -		 *	system. -		 */ -		ncaps = 0; -		while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) { -			if (fe->ops.delsys[ncaps] == desired_system) { -				delsys = desired_system; -				break; -			} -			ncaps++; -		} -		if (delsys == SYS_UNDEFINED) { -			dev_dbg(fe->dvb->device, "%s: Couldn't find a delivery system that matches %d\n", +					"%s: Changing delivery system to %d\n",  					__func__, desired_system); +			return 0;  		} -	} else { -		/* -		 * This is a DVBv5 call. So, it likely knows the supported -		 * delivery systems. -		 */ +		ncaps++; +	} -		/* Check if the desired delivery system is supported */ -		ncaps = 0; -		while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) { -			if (fe->ops.delsys[ncaps] == desired_system) { -				c->delivery_system = desired_system; -				dev_dbg(fe->dvb->device, -						"%s: Changing delivery system to %d\n", -						__func__, desired_system); -				return 0; -			} -			ncaps++; -		} -		type = dvbv3_type(desired_system); +	/* +	 * The requested delivery system isn't supported. Maybe userspace +	 * is requesting a DVBv3 compatible delivery system. +	 * +	 * The emulation only works if the desired system is one of the +	 * delivery systems supported by DVBv3 API +	 */ +	if (!is_dvbv3_delsys(desired_system)) { +		dev_dbg(fe->dvb->device, +			"%s: Delivery system %d not supported.\n", +			__func__, desired_system); +		return -EINVAL; +	} -		/* -		 * The delivery system is not supported. See if it can be -		 * emulated. -		 * The emulation only works if the desired system is one of the -		 * DVBv3 delivery systems -		 */ -		if (!is_dvbv3_delsys(desired_system)) { -			dev_dbg(fe->dvb->device, -					"%s: can't use a DVBv3 FE_SET_FRONTEND call on this frontend\n", -					__func__); -			return -EINVAL; -		} +	type = dvbv3_type(desired_system); -		/* -		 * Get the last non-DVBv3 delivery system that has the same type -		 * of the desired system -		 */ -		ncaps = 0; -		while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) { -			if ((dvbv3_type(fe->ops.delsys[ncaps]) == type) && -			    !is_dvbv3_delsys(fe->ops.delsys[ncaps])) -				delsys = fe->ops.delsys[ncaps]; -			ncaps++; -		} -		/* There's nothing compatible with the desired delivery system */ -		if (delsys == SYS_UNDEFINED) { -			dev_dbg(fe->dvb->device, -					"%s: Incompatible DVBv3 FE_SET_FRONTEND call for this frontend\n", -					__func__); -			return -EINVAL; -		} +	/* +	* Get the last non-DVBv3 delivery system that has the same type +	* of the desired system +	*/ +	ncaps = 0; +	while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) { +		if (dvbv3_type(fe->ops.delsys[ncaps]) == type) +			delsys = fe->ops.delsys[ncaps]; +		ncaps++;  	} -	c->delivery_system = delsys; +	/* There's nothing compatible with the desired delivery system */ +	if (delsys == SYS_UNDEFINED) { +		dev_dbg(fe->dvb->device, +			"%s: Delivery system %d not supported on emulation mode.\n", +			__func__, desired_system); +		return -EINVAL; +	} -	/* -	 * The DVBv3 or DVBv5 call is requesting a different system. So, -	 * emulation is needed. -	 * -	 * Emulate newer delivery systems like ISDBT, DVBT and DTMB -	 * for older DVBv5 applications. The emulation will try to use -	 * the auto mode for most things, and will assume that the desired -	 * delivery system is the last one at the ops.delsys[] array -	 */  	dev_dbg(fe->dvb->device, -			"%s: Using delivery system %d emulated as if it were a %d\n", -			__func__, delsys, desired_system); +		"%s: Using delivery system %d emulated as if it were %d\n", +		__func__, delsys, desired_system); + +	return emulate_delivery_system(fe, desired_system); +} + +/** + * dvbv3_set_delivery_system - Sets the delivery system for a DVBv3 API call + * @fe:	frontend struct + * + * A DVBv3 call doesn't know what's the desired system it wants. It also + * doesn't allow to switch between different types. Due to that, userspace + * should use DVBv5 instead. + * However, in order to avoid breaking userspace API, limited backward + * compatibility support is provided. + * + * There are some delivery systems that are incompatible with DVBv3 calls. + * + * This routine should work fine for frontends that support just one delivery + * system. + * + * For frontends that support multiple frontends: + * 1) It defaults to use the first supported delivery system. There's an + *    userspace application that allows changing it at runtime; + * + * 2) If the current delivery system is not compatible with DVBv3, it gets + *    the first one that it is compatible. + * + * NOTE: in order for this to work with applications like Kaffeine that + *	uses a DVBv5 call for DVB-S2 and a DVBv3 call to go back to + *	DVB-S, drivers that support both DVB-S and DVB-S2 should have the + *	SYS_DVBS entry before the SYS_DVBS2, otherwise it won't switch back + *	to DVB-S. + */ +static int dvbv3_set_delivery_system(struct dvb_frontend *fe) +{ +	int ncaps; +	u32 delsys = SYS_UNDEFINED; +	struct dtv_frontend_properties *c = &fe->dtv_property_cache; + +	/* If not set yet, defaults to the first supported delivery system */ +	if (c->delivery_system == SYS_UNDEFINED) +		c->delivery_system = fe->ops.delsys[0];  	/* -	 * For now, handles ISDB-T calls. More code may be needed here for the -	 * other emulated stuff +	 * Trivial case: just use the current one, if it already a DVBv3 +	 * delivery system  	 */ -	if (type == DVBV3_OFDM) { -		if (c->delivery_system == SYS_ISDBT) { -			dev_dbg(fe->dvb->device, -					"%s: Using defaults for SYS_ISDBT\n", -					__func__); - -			if (!c->bandwidth_hz) -				c->bandwidth_hz = 6000000; +	if (is_dvbv3_delsys(c->delivery_system)) { +		dev_dbg(fe->dvb->device, +				"%s: Using delivery system to %d\n", +				__func__, c->delivery_system); +		return 0; +	} -			c->isdbt_partial_reception = 0; -			c->isdbt_sb_mode = 0; -			c->isdbt_sb_subchannel = 0; -			c->isdbt_sb_segment_idx = 0; -			c->isdbt_sb_segment_count = 0; -			c->isdbt_layer_enabled = 0; -			for (i = 0; i < 3; i++) { -				c->layer[i].fec = FEC_AUTO; -				c->layer[i].modulation = QAM_AUTO; -				c->layer[i].interleaving = 0; -				c->layer[i].segment_count = 0; -			} +	/* +	 * Seek for the first delivery system that it is compatible with a +	 * DVBv3 standard +	 */ +	ncaps = 0; +	while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) { +		if (dvbv3_type(fe->ops.delsys[ncaps]) != DVBV3_UNKNOWN) { +			delsys = fe->ops.delsys[ncaps]; +			break;  		} +		ncaps++;  	} -	dev_dbg(fe->dvb->device, "%s: change delivery system on cache to %d\n", -			__func__, c->delivery_system); - -	return 0; +	if (delsys == SYS_UNDEFINED) { +		dev_dbg(fe->dvb->device, +			"%s: Couldn't find a delivery system that works with FE_SET_FRONTEND\n", +			__func__); +		return -EINVAL; +	} +	return emulate_delivery_system(fe, delsys);  }  static int dtv_property_process_set(struct dvb_frontend *fe, @@ -1742,7 +1777,7 @@ static int dtv_property_process_set(struct dvb_frontend *fe,  		c->rolloff = tvp->u.data;  		break;  	case DTV_DELIVERY_SYSTEM: -		r = set_delivery_system(fe, tvp->u.data); +		r = dvbv5_set_delivery_system(fe, tvp->u.data);  		break;  	case DTV_VOLTAGE:  		c->voltage = tvp->u.data; @@ -2335,7 +2370,7 @@ static int dvb_frontend_ioctl_legacy(struct file *file,  		break;  	case FE_SET_FRONTEND: -		err = set_delivery_system(fe, SYS_UNDEFINED); +		err = dvbv3_set_delivery_system(fe);  		if (err)  			break; @@ -2594,7 +2629,7 @@ int dvb_register_frontend(struct dvb_adapter* dvb,  	 * first supported delivery system (ops->delsys[0])  	 */ -        fe->dtv_property_cache.delivery_system = fe->ops.delsys[0]; +	fe->dtv_property_cache.delivery_system = fe->ops.delsys[0];  	dvb_frontend_clear_cache(fe);  	mutex_unlock(&frontend_mutex); diff --git a/drivers/media/dvb-core/dvb_frontend.h b/drivers/media/dvb-core/dvb_frontend.h index b34922a0815..371b6caf486 100644 --- a/drivers/media/dvb-core/dvb_frontend.h +++ b/drivers/media/dvb-core/dvb_frontend.h @@ -245,8 +245,8 @@ struct analog_demod_ops {  	void (*set_params)(struct dvb_frontend *fe,  			   struct analog_parameters *params); -	int  (*has_signal)(struct dvb_frontend *fe); -	int  (*get_afc)(struct dvb_frontend *fe); +	int  (*has_signal)(struct dvb_frontend *fe, u16 *signal); +	int  (*get_afc)(struct dvb_frontend *fe, s32 *afc);  	void (*tuner_status)(struct dvb_frontend *fe);  	void (*standby)(struct dvb_frontend *fe);  	void (*release)(struct dvb_frontend *fe); diff --git a/drivers/media/dvb-core/dvb_net.c b/drivers/media/dvb-core/dvb_net.c index 83a23afb13a..c3cc3b52662 100644 --- a/drivers/media/dvb-core/dvb_net.c +++ b/drivers/media/dvb-core/dvb_net.c @@ -1044,7 +1044,7 @@ static int dvb_net_feed_start(struct net_device *dev)  		ret = priv->tsfeed->set(priv->tsfeed,  					priv->pid, /* pid */  					TS_PACKET, /* type */ -					DMX_TS_PES_OTHER, /* pes type */ +					DMX_PES_OTHER, /* pes type */  					32768,     /* circular buffer size */  					timeout    /* timeout */  					);  |