diff --git a/dvb-core/dvbdev.c b/dvb-core/dvbdev.c index 219b869..9ef0e45 100644 --- a/dvb-core/dvbdev.c +++ b/dvb-core/dvbdev.c @@ -598,7 +598,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) @@ -667,11 +667,19 @@ int dvb_create_media_graph(struct dvb_adapter *adap, MEDIA_LNK_FL_ENABLED, false); else +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)) + pad_sink = media_get_pad_index(tuner, true, + PAD_SIGNAL_ANALOG); + if (pad_sink < 0) + return -EINVAL; +#else + pad_sink = TUNER_PAD_RF_INPUT; +#endif 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) @@ -679,9 +687,17 @@ int dvb_create_media_graph(struct dvb_adapter *adap, } if (ntuner && ndemod) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)) + pad_source = media_get_pad_index(tuner, true, + PAD_SIGNAL_ANALOG); + if (pad_source) + return -EINVAL; +#else + pad_source = TUNER_PAD_OUTPUT; +#endif 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);