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 7e9b016b3b28b728fb227ea7b630eb1b33090b14..41444fa1c0bb1eaabbda8c87df53a61a2dc0913e 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 fccd8d9b665fd273051cfc1ef4757f8fa131d519..f37171b7a2de02e09b587bb5b833d87e46d06545 100644 (file)
@@ -10,6 +10,7 @@ struct stv0910_cfg {
        u8  parallel;
        u8  rptlvl;
        u8  single;
+       u8  tsspeed;
 };
 
 #if IS_REACHABLE(CONFIG_DVB_STV0910)
index 377269c64449b8952d872cc7e21c6f7189df1dbe..6c2341642017f2b9c3b342ae5a853b795b85641e 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 7738565193d600a585a3c05aba5e14cd36e4436d..7a106bc11a2b7912bb2ddfb44d2d929fc03f3672 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 = {