diff options
author | Matthias Schwarzott <zzam@gentoo.org> | 2015-11-19 18:04:00 -0200 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2015-12-03 12:17:07 -0200 |
commit | 25e7375309038d3be3e156332d1597cedb4afc1a (patch) | |
tree | 22d96842a8e7f6eaed0ae691ea52f4e9091a808c /drivers | |
parent | 542fb3c56b7e5754fc99c77c1db248851ec503d2 (diff) | |
download | linux-stable-25e7375309038d3be3e156332d1597cedb4afc1a.tar.gz linux-stable-25e7375309038d3be3e156332d1597cedb4afc1a.tar.bz2 linux-stable-25e7375309038d3be3e156332d1597cedb4afc1a.zip |
[media] si2165: set list of DVB-T registers together
Use si2165_write_reg_list() to do the DVB-T mode initialization altogether.
Signed-off-by: Matthias Schwarzott <zzam@gentoo.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/dvb-frontends/si2165.c | 73 |
1 files changed, 26 insertions, 47 deletions
diff --git a/drivers/media/dvb-frontends/si2165.c b/drivers/media/dvb-frontends/si2165.c index 807a3c9275bd..a0e6ad8a10f1 100644 --- a/drivers/media/dvb-frontends/si2165.c +++ b/drivers/media/dvb-frontends/si2165.c @@ -803,6 +803,29 @@ static const struct si2165_reg_value_pair agc_rewrite[] = { { 0x0123, 0x70 } }; +static const struct si2165_reg_value_pair dvbt_regs[] = { + /* standard = DVB-T */ + { 0x00ec, 0x01 }, + { 0x08f8, 0x00 }, + /* impulsive_noise_remover */ + { 0x031c, 0x01 }, + { 0x00cb, 0x00 }, + /* agc2 */ + { 0x016e, 0x41 }, + { 0x016c, 0x0e }, + { 0x016d, 0x10 }, + /* agc */ + { 0x015b, 0x03 }, + { 0x0150, 0x78 }, + /* agc */ + { 0x01a0, 0x78 }, + { 0x01c8, 0x68 }, + /* freq_sync_range */ + REG16(0x030c, 0x0064), + /* gp_reg0 */ + { 0x0387, 0x00 } +}; + static int si2165_set_frontend(struct dvb_frontend *fe) { int ret; @@ -825,10 +848,6 @@ static int si2165_set_frontend(struct dvb_frontend *fe) bw10k = 800; } - /* standard = DVB-T */ - ret = si2165_writereg8(state, 0x00ec, 0x01); - if (ret < 0) - return ret; ret = si2165_adjust_pll_divl(state, 12); if (ret < 0) return ret; @@ -836,9 +855,6 @@ static int si2165_set_frontend(struct dvb_frontend *fe) ret = si2165_set_if_freq_shift(state); if (ret < 0) return ret; - ret = si2165_writereg8(state, 0x08f8, 0x00); - if (ret < 0) - return ret; /* bandwidth in 10KHz steps */ ret = si2165_writereg16(state, 0x0308, bw10k); if (ret < 0) @@ -846,48 +862,11 @@ static int si2165_set_frontend(struct dvb_frontend *fe) ret = si2165_set_oversamp(state, dvb_rate); if (ret < 0) return ret; - /* impulsive_noise_remover */ - ret = si2165_writereg8(state, 0x031c, 0x01); - if (ret < 0) - return ret; - ret = si2165_writereg8(state, 0x00cb, 0x00); - if (ret < 0) - return ret; - /* agc2 */ - ret = si2165_writereg8(state, 0x016e, 0x41); - if (ret < 0) - return ret; - ret = si2165_writereg8(state, 0x016c, 0x0e); - if (ret < 0) - return ret; - ret = si2165_writereg8(state, 0x016d, 0x10); - if (ret < 0) - return ret; - /* agc */ - ret = si2165_writereg8(state, 0x015b, 0x03); - if (ret < 0) - return ret; - ret = si2165_writereg8(state, 0x0150, 0x78); - if (ret < 0) - return ret; - /* agc */ - ret = si2165_writereg8(state, 0x01a0, 0x78); - if (ret < 0) - return ret; - ret = si2165_writereg8(state, 0x01c8, 0x68); - if (ret < 0) - return ret; - /* freq_sync_range */ - ret = si2165_writereg16(state, 0x030c, 0x0064); - if (ret < 0) - return ret; - /* gp_reg0 */ - ret = si2165_readreg8(state, 0x0387, val); - if (ret < 0) - return ret; - ret = si2165_writereg8(state, 0x0387, 0x00); + + ret = si2165_write_reg_list(state, dvbt_regs, ARRAY_SIZE(dvbt_regs)); if (ret < 0) return ret; + /* dsp_addr_jump */ ret = si2165_writereg32(state, 0x0348, 0xf4000000); if (ret < 0) |