summaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb-frontends
diff options
context:
space:
mode:
authorEvgeny Plehov <EvgenyPlehov@ukr.net>2013-04-07 23:56:46 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-04-08 07:13:02 -0300
commit4a74772e6d2869b34b33f1072420c6891ce865ad (patch)
tree02c86babbac6c4032482c1b1caa5044fd9650f61 /drivers/media/dvb-frontends
parent752a62b2ec9c21931dce869f2ae2c921c83a1164 (diff)
[media] cxd2820r_t2: Multistream support (MultiPLP)
MultiPLP filtering support for CXD2820r. Signed-off-by: Evgeny Plehov <EvgenyPlehov@ukr.net> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb-frontends')
-rw-r--r--drivers/media/dvb-frontends/cxd2820r_core.c3
-rw-r--r--drivers/media/dvb-frontends/cxd2820r_t2.c17
2 files changed, 19 insertions, 1 deletions
diff --git a/drivers/media/dvb-frontends/cxd2820r_core.c b/drivers/media/dvb-frontends/cxd2820r_core.c
index 9b658c1cf39..7ca5c69dd20 100644
--- a/drivers/media/dvb-frontends/cxd2820r_core.c
+++ b/drivers/media/dvb-frontends/cxd2820r_core.c
@@ -660,7 +660,8 @@ static const struct dvb_frontend_ops cxd2820r_ops = {
FE_CAN_GUARD_INTERVAL_AUTO |
FE_CAN_HIERARCHY_AUTO |
FE_CAN_MUTE_TS |
- FE_CAN_2G_MODULATION
+ FE_CAN_2G_MODULATION |
+ FE_CAN_MULTISTREAM
},
.release = cxd2820r_release,
diff --git a/drivers/media/dvb-frontends/cxd2820r_t2.c b/drivers/media/dvb-frontends/cxd2820r_t2.c
index e82d82a7a2e..c2bfea7551e 100644
--- a/drivers/media/dvb-frontends/cxd2820r_t2.c
+++ b/drivers/media/dvb-frontends/cxd2820r_t2.c
@@ -124,6 +124,23 @@ int cxd2820r_set_frontend_t2(struct dvb_frontend *fe)
buf[1] = ((if_ctl >> 8) & 0xff);
buf[2] = ((if_ctl >> 0) & 0xff);
+ /* PLP filtering */
+ if (c->stream_id < 0 || c->stream_id > 255) {
+ dev_dbg(&priv->i2c->dev, "%s: Disable PLP filtering\n", __func__);
+ ret = cxd2820r_wr_reg(priv, 0x023ad , 0);
+ if (ret)
+ goto error;
+ } else {
+ dev_dbg(&priv->i2c->dev, "%s: Enable PLP filtering = %d\n", __func__,
+ c->stream_id);
+ ret = cxd2820r_wr_reg(priv, 0x023af , c->stream_id & 0xFF);
+ if (ret)
+ goto error;
+ ret = cxd2820r_wr_reg(priv, 0x023ad , 1);
+ if (ret)
+ goto error;
+ }
+
ret = cxd2820r_wr_regs(priv, 0x020b6, buf, 3);
if (ret)
goto error;