Message ID | 20170409193828.18458-10-d.scheller.oss@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Acked-by: Abylay Ospan <aospan@netup.ru> 2017-04-09 15:38 GMT-04:00 Daniel Scheller <d.scheller.oss@gmail.com>: > From: Daniel Scheller <d.scheller@gmx.net> > > Some constellations work/need a serial TS transport mode. This adds a flag > that will toggle set up of such mode. > > Signed-off-by: Daniel Scheller <d.scheller@gmx.net> > --- > drivers/media/dvb-frontends/cxd2841er.c | 18 ++++++++++++++++-- > drivers/media/dvb-frontends/cxd2841er.h | 5 +++-- > 2 files changed, 19 insertions(+), 4 deletions(-) > > diff --git a/drivers/media/dvb-frontends/cxd2841er.c b/drivers/media/dvb-frontends/cxd2841er.c > index fa6a963..1df95c4 100644 > --- a/drivers/media/dvb-frontends/cxd2841er.c > +++ b/drivers/media/dvb-frontends/cxd2841er.c > @@ -912,6 +912,18 @@ static void cxd2841er_set_ts_clock_mode(struct cxd2841er_priv *priv, > > /* > * slave Bank Addr Bit default Name > + * <SLV-T> 00h C4h [1:0] 2'b?? OSERCKMODE > + */ > + cxd2841er_set_reg_bits(priv, I2C_SLVT, 0xc4, > + ((priv->flags & CXD2841ER_TS_SERIAL) ? 0x01 : 0x00), 0x03); > + /* > + * slave Bank Addr Bit default Name > + * <SLV-T> 00h D1h [1:0] 2'b?? OSERDUTYMODE > + */ > + cxd2841er_set_reg_bits(priv, I2C_SLVT, 0xd1, > + ((priv->flags & CXD2841ER_TS_SERIAL) ? 0x01 : 0x00), 0x03); > + /* > + * slave Bank Addr Bit default Name > * <SLV-T> 00h D9h [7:0] 8'h08 OTSCKPERIOD > */ > cxd2841er_write_reg(priv, I2C_SLVT, 0xd9, 0x08); > @@ -925,7 +937,8 @@ static void cxd2841er_set_ts_clock_mode(struct cxd2841er_priv *priv, > * slave Bank Addr Bit default Name > * <SLV-T> 00h 33h [1:0] 2'b01 OREG_CKSEL_TSIF > */ > - cxd2841er_set_reg_bits(priv, I2C_SLVT, 0x33, 0x00, 0x03); > + cxd2841er_set_reg_bits(priv, I2C_SLVT, 0x33, > + ((priv->flags & CXD2841ER_TS_SERIAL) ? 0x01 : 0x00), 0x03); > /* > * Enable TS IF Clock > * slave Bank Addr Bit default Name > @@ -3745,7 +3758,8 @@ static int cxd2841er_init_tc(struct dvb_frontend *fe) > cxd2841er_write_reg(priv, I2C_SLVT, 0xcd, 0x50); > /* SONY_DEMOD_CONFIG_PARALLEL_SEL = 1 */ > cxd2841er_write_reg(priv, I2C_SLVT, 0x00, 0x00); > - cxd2841er_set_reg_bits(priv, I2C_SLVT, 0xc4, 0x00, 0x80); > + cxd2841er_set_reg_bits(priv, I2C_SLVT, 0xc4, > + ((priv->flags & CXD2841ER_TS_SERIAL) ? 0x80 : 0x00), 0x80); > > cxd2841er_init_stats(fe); > > diff --git a/drivers/media/dvb-frontends/cxd2841er.h b/drivers/media/dvb-frontends/cxd2841er.h > index 38d7f9f..58fbd98 100644 > --- a/drivers/media/dvb-frontends/cxd2841er.h > +++ b/drivers/media/dvb-frontends/cxd2841er.h > @@ -24,8 +24,9 @@ > > #include <linux/dvb/frontend.h> > > -#define CXD2841ER_USE_GATECTRL 1 > -#define CXD2841ER_AUTO_IFHZ 2 > +#define CXD2841ER_USE_GATECTRL 1 /* bit 0 */ > +#define CXD2841ER_AUTO_IFHZ 2 /* bit 1 */ > +#define CXD2841ER_TS_SERIAL 4 /* bit 2 */ > > enum cxd2841er_xtal { > SONY_XTAL_20500, /* 20.5 MHz */ > -- > 2.10.2 >
diff --git a/drivers/media/dvb-frontends/cxd2841er.c b/drivers/media/dvb-frontends/cxd2841er.c index fa6a963..1df95c4 100644 --- a/drivers/media/dvb-frontends/cxd2841er.c +++ b/drivers/media/dvb-frontends/cxd2841er.c @@ -912,6 +912,18 @@ static void cxd2841er_set_ts_clock_mode(struct cxd2841er_priv *priv, /* * slave Bank Addr Bit default Name + * <SLV-T> 00h C4h [1:0] 2'b?? OSERCKMODE + */ + cxd2841er_set_reg_bits(priv, I2C_SLVT, 0xc4, + ((priv->flags & CXD2841ER_TS_SERIAL) ? 0x01 : 0x00), 0x03); + /* + * slave Bank Addr Bit default Name + * <SLV-T> 00h D1h [1:0] 2'b?? OSERDUTYMODE + */ + cxd2841er_set_reg_bits(priv, I2C_SLVT, 0xd1, + ((priv->flags & CXD2841ER_TS_SERIAL) ? 0x01 : 0x00), 0x03); + /* + * slave Bank Addr Bit default Name * <SLV-T> 00h D9h [7:0] 8'h08 OTSCKPERIOD */ cxd2841er_write_reg(priv, I2C_SLVT, 0xd9, 0x08); @@ -925,7 +937,8 @@ static void cxd2841er_set_ts_clock_mode(struct cxd2841er_priv *priv, * slave Bank Addr Bit default Name * <SLV-T> 00h 33h [1:0] 2'b01 OREG_CKSEL_TSIF */ - cxd2841er_set_reg_bits(priv, I2C_SLVT, 0x33, 0x00, 0x03); + cxd2841er_set_reg_bits(priv, I2C_SLVT, 0x33, + ((priv->flags & CXD2841ER_TS_SERIAL) ? 0x01 : 0x00), 0x03); /* * Enable TS IF Clock * slave Bank Addr Bit default Name @@ -3745,7 +3758,8 @@ static int cxd2841er_init_tc(struct dvb_frontend *fe) cxd2841er_write_reg(priv, I2C_SLVT, 0xcd, 0x50); /* SONY_DEMOD_CONFIG_PARALLEL_SEL = 1 */ cxd2841er_write_reg(priv, I2C_SLVT, 0x00, 0x00); - cxd2841er_set_reg_bits(priv, I2C_SLVT, 0xc4, 0x00, 0x80); + cxd2841er_set_reg_bits(priv, I2C_SLVT, 0xc4, + ((priv->flags & CXD2841ER_TS_SERIAL) ? 0x80 : 0x00), 0x80); cxd2841er_init_stats(fe); diff --git a/drivers/media/dvb-frontends/cxd2841er.h b/drivers/media/dvb-frontends/cxd2841er.h index 38d7f9f..58fbd98 100644 --- a/drivers/media/dvb-frontends/cxd2841er.h +++ b/drivers/media/dvb-frontends/cxd2841er.h @@ -24,8 +24,9 @@ #include <linux/dvb/frontend.h> -#define CXD2841ER_USE_GATECTRL 1 -#define CXD2841ER_AUTO_IFHZ 2 +#define CXD2841ER_USE_GATECTRL 1 /* bit 0 */ +#define CXD2841ER_AUTO_IFHZ 2 /* bit 1 */ +#define CXD2841ER_TS_SERIAL 4 /* bit 2 */ enum cxd2841er_xtal { SONY_XTAL_20500, /* 20.5 MHz */