Commit f3efe15a authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

media: dvb: use signal types to discover pads



On tuner pads, multiple signals are present. Be sure to get
the right PAD by using them.

Acked-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent caf276be
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -621,7 +621,7 @@ int dvb_create_media_graph(struct dvb_adapter *adap,
	unsigned demux_pad = 0;
	unsigned dvr_pad = 0;
	unsigned ntuner = 0, ndemod = 0;
	int ret;
	int ret, pad_source, pad_sink;
	static const char *connector_name = "Television";

	if (!mdev)
@@ -681,7 +681,7 @@ int dvb_create_media_graph(struct dvb_adapter *adap,
		if (ret)
			return ret;

		if (!ntuner)
		if (!ntuner) {
			ret = media_create_pad_links(mdev,
						     MEDIA_ENT_F_CONN_RF,
						     conn, 0,
@@ -689,22 +689,31 @@ int dvb_create_media_graph(struct dvb_adapter *adap,
						     demod, 0,
						     MEDIA_LNK_FL_ENABLED,
						     false);
		else
		} else {
			pad_sink = media_get_pad_index(tuner, true,
						       PAD_SIGNAL_ANALOG);
			if (pad_sink < 0)
				return -EINVAL;
			ret = media_create_pad_links(mdev,
						     MEDIA_ENT_F_CONN_RF,
						     conn, 0,
						     MEDIA_ENT_F_TUNER,
						     tuner, TUNER_PAD_RF_INPUT,
						     tuner, pad_sink,
						     MEDIA_LNK_FL_ENABLED,
						     false);
		}
		if (ret)
			return ret;
	}

	if (ntuner && ndemod) {
		pad_source = media_get_pad_index(tuner, true,
						 PAD_SIGNAL_ANALOG);
		if (pad_source)
			return -EINVAL;
		ret = media_create_pad_links(mdev,
					     MEDIA_ENT_F_TUNER,
					     tuner, TUNER_PAD_OUTPUT,
					     tuner, pad_source,
					     MEDIA_ENT_F_DTV_DEMOD,
					     demod, 0, MEDIA_LNK_FL_ENABLED,
					     false);