cxd2820r_t2: Multistream support (MultiPLP)

Message ID 302151362615390@web22d.yandex.ru (mailing list archive)
State Accepted, archived
Delegated to: Michael Krufky
Headers

Commit Message

CrazyCat March 7, 2013, 12:16 a.m. UTC
  MultiPLP filtering support for CXD2820r, not tested.
Somebody from Russia please test (exclude Moscow, because used singlePLP). Usual used PLP 0 (4TV + 3 radio) and 1 (4TV). PLP 2,3 reserved (regional channels).

P.S. You can use my scan-s2 with multistream support - https://bitbucket.org/CrazyCat/scan-s2. Generated channel list compatible with current VDR 1.7.3x

Signed-off-by: Evgeny Plehov <EvgenyPlehov@ukr.net>
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Comments

Antti Palosaari March 24, 2013, 6:18 p.m. UTC | #1
Is there anyone who could test that patch?

I have no multi PLP signal here.

Also there is minor issue on that patch. As stream ID validy is already 
checked there is no reason for bit AND 0xff.


Antti

On 03/07/2013 02:16 AM, CrazyCat wrote:
> MultiPLP filtering support for CXD2820r, not tested.
> Somebody from Russia please test (exclude Moscow, because used singlePLP). Usual used PLP 0 (4TV + 3 radio) and 1 (4TV). PLP 2,3 reserved (regional channels).
>
> P.S. You can use my scan-s2 with multistream support - https://bitbucket.org/CrazyCat/scan-s2. Generated channel list compatible with current VDR 1.7.3x
>
> Signed-off-by: Evgeny Plehov <EvgenyPlehov@ukr.net>
> diff --git a/drivers/media/dvb-frontends/cxd2820r_core.c b/drivers/media/dvb-frontends/cxd2820r_core.c
> index 9b658c1..7ca5c69 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 e82d82a..c2bfea7 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;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
  
CrazyCat April 3, 2013, 3:22 a.m. UTC | #2
Now confirmed in Russia - work ok.
Used my mods scan-s2 + tzap-t2 + vdr 1.7.27

https://bitbucket.org/CrazyCat/szap-s2
https://bitbucket.org/CrazyCat/scan-s2

24.03.2013, 20:19, "Antti Palosaari" <crope@iki.fi>:
> Is there anyone who could test that patch?
>
> I have no multi PLP signal here.
>
> Also there is minor issue on that patch. As stream ID validy is already
> checked there is no reason for bit AND 0xff.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

diff --git a/drivers/media/dvb-frontends/cxd2820r_core.c b/drivers/media/dvb-frontends/cxd2820r_core.c
index 9b658c1..7ca5c69 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 e82d82a..c2bfea7 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;