media: dvb-frontends/stv0910: make TS speed configurable
authorDaniel Scheller <d.scheller@gmx.net>
Wed, 9 May 2018 20:08:02 +0000 (16:08 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Mon, 28 May 2018 21:46:04 +0000 (17:46 -0400)
Add a tsspeed config option to struct stv0910_cfg which can be used by
users of the driver to set the (parallel) TS speed (higher speeds enable
support for higher bitrate transponders). If tsspeed isn't set in the
config, it'll default to a sane value.

This commit also updates the two consumers of the stv0910 driver (ngene
and ddbridge) to have a default tsspeed in their stv0910_cfg templates.

Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
Tested-by: Richard Scobie <rascobie@slingshot.co.nz>
Tested-by: Helmut Auer <post@helmutauer.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/dvb-frontends/stv0910.c
drivers/media/dvb-frontends/stv0910.h
drivers/media/pci/ddbridge/ddbridge-core.c
drivers/media/pci/ngene/ngene-cards.c

index 7e9b016..41444fa 100644 (file)
@@ -1200,7 +1200,6 @@ static int probe(struct stv *state)
        write_reg(state, RSTV0910_P1_TSCFGM, 0xC0); /* Manual speed */
        write_reg(state, RSTV0910_P1_TSCFGL, 0x20);
 
-       /* Speed = 67.5 MHz */
        write_reg(state, RSTV0910_P1_TSSPEED, state->tsspeed);
 
        write_reg(state, RSTV0910_P2_TSCFGH, state->tscfgh | 0x01);
@@ -1208,7 +1207,6 @@ static int probe(struct stv *state)
        write_reg(state, RSTV0910_P2_TSCFGM, 0xC0); /* Manual speed */
        write_reg(state, RSTV0910_P2_TSCFGL, 0x20);
 
-       /* Speed = 67.5 MHz */
        write_reg(state, RSTV0910_P2_TSSPEED, state->tsspeed);
 
        /* Reset stream merger */
@@ -1790,7 +1788,8 @@ struct dvb_frontend *stv0910_attach(struct i2c_adapter *i2c,
        state->tscfgh = 0x20 | (cfg->parallel ? 0 : 0x40);
        state->tsgeneral = (cfg->parallel == 2) ? 0x02 : 0x00;
        state->i2crpt = 0x0A | ((cfg->rptlvl & 0x07) << 4);
-       state->tsspeed = 0x28;
+       /* use safe tsspeed value if unspecified through stv0910_cfg */
+       state->tsspeed = (cfg->tsspeed ? cfg->tsspeed : 0x28);
        state->nr = nr;
        state->regoff = state->nr ? 0 : 0x200;
        state->search_range = 16000000;
index fccd8d9..f37171b 100644 (file)
@@ -10,6 +10,7 @@ struct stv0910_cfg {
        u8  parallel;
        u8  rptlvl;
        u8  single;
+       u8  tsspeed;
 };
 
 #if IS_REACHABLE(CONFIG_DVB_STV0910)
index 377269c..6c23416 100644 (file)
@@ -1183,6 +1183,7 @@ static const struct stv0910_cfg stv0910_p = {
        .parallel = 1,
        .rptlvl   = 4,
        .clk      = 30000000,
+       .tsspeed  = 0x28,
 };
 
 static const struct lnbh25_config lnbh25_cfg = {
index 7738565..7a106bc 100644 (file)
@@ -327,6 +327,7 @@ static struct stv0910_cfg stv0910_p = {
        .parallel = 1,
        .rptlvl   = 4,
        .clk      = 30000000,
+       .tsspeed  = 0x28,
 };
 
 static struct lnbh25_config lnbh25_cfg = {