aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>2016-02-04 09:58:30 -0500
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2016-02-04 13:27:30 -0500
commit7e3e68bcfd7713fb1470070c8fa0f108609dd76b (patch)
tree1a7a0ef4f5fe4b31a5f4fc99dcb0c0cd1923e481
parenta7497049841f04712ad525969e5eb4a42b5a1704 (diff)
[media] dvb_frontend: pass the props cache to get_frontend() as arg
Instead of using the DTV properties cache directly, pass the get frontend data as an argument. For now, everything should remain the same, but the next patch will prevent get_frontend to affect the global cache. This is needed because several drivers don't care enough to only change the properties if locked. Due to that, calling G_PROPERTY before locking on those drivers will make them to never lock. Ok, those drivers are crap and should never be merged like that, but the core should not rely that the drivers would be doing the right thing. Reviewed-by: Michael Ira Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
-rw-r--r--drivers/media/dvb-core/dvb_frontend.c2
-rw-r--r--drivers/media/dvb-core/dvb_frontend.h3
-rw-r--r--drivers/media/dvb-frontends/af9013.c4
-rw-r--r--drivers/media/dvb-frontends/af9033.c4
-rw-r--r--drivers/media/dvb-frontends/as102_fe.c4
-rw-r--r--drivers/media/dvb-frontends/atbm8830.c4
-rw-r--r--drivers/media/dvb-frontends/au8522_dig.c4
-rw-r--r--drivers/media/dvb-frontends/cx22700.c4
-rw-r--r--drivers/media/dvb-frontends/cx22702.c4
-rw-r--r--drivers/media/dvb-frontends/cx24110.c4
-rw-r--r--drivers/media/dvb-frontends/cx24117.c4
-rw-r--r--drivers/media/dvb-frontends/cx24120.c4
-rw-r--r--drivers/media/dvb-frontends/cx24123.c4
-rw-r--r--drivers/media/dvb-frontends/cxd2820r_c.c4
-rw-r--r--drivers/media/dvb-frontends/cxd2820r_core.c9
-rw-r--r--drivers/media/dvb-frontends/cxd2820r_priv.h9
-rw-r--r--drivers/media/dvb-frontends/cxd2820r_t.c4
-rw-r--r--drivers/media/dvb-frontends/cxd2820r_t2.c6
-rw-r--r--drivers/media/dvb-frontends/cxd2841er.c4
-rw-r--r--drivers/media/dvb-frontends/dib3000mb.c9
-rw-r--r--drivers/media/dvb-frontends/dib3000mc.c6
-rw-r--r--drivers/media/dvb-frontends/dib7000m.c6
-rw-r--r--drivers/media/dvb-frontends/dib7000p.c6
-rw-r--r--drivers/media/dvb-frontends/dib8000.c75
-rw-r--r--drivers/media/dvb-frontends/dib9000.c23
-rw-r--r--drivers/media/dvb-frontends/dvb_dummy_fe.c7
-rw-r--r--drivers/media/dvb-frontends/hd29l2.c4
-rw-r--r--drivers/media/dvb-frontends/l64781.c4
-rw-r--r--drivers/media/dvb-frontends/lg2160.c62
-rw-r--r--drivers/media/dvb-frontends/lgdt3305.c4
-rw-r--r--drivers/media/dvb-frontends/lgdt3306a.c4
-rw-r--r--drivers/media/dvb-frontends/lgdt330x.c5
-rw-r--r--drivers/media/dvb-frontends/lgs8gl5.c5
-rw-r--r--drivers/media/dvb-frontends/m88ds3103.c4
-rw-r--r--drivers/media/dvb-frontends/m88rs2000.c5
-rw-r--r--drivers/media/dvb-frontends/mt312.c4
-rw-r--r--drivers/media/dvb-frontends/mt352.c4
-rw-r--r--drivers/media/dvb-frontends/or51132.c4
-rw-r--r--drivers/media/dvb-frontends/rtl2830.c4
-rw-r--r--drivers/media/dvb-frontends/rtl2832.c4
-rw-r--r--drivers/media/dvb-frontends/s5h1409.c4
-rw-r--r--drivers/media/dvb-frontends/s5h1411.c4
-rw-r--r--drivers/media/dvb-frontends/s5h1420.c4
-rw-r--r--drivers/media/dvb-frontends/s921.c4
-rw-r--r--drivers/media/dvb-frontends/stb0899_drv.c4
-rw-r--r--drivers/media/dvb-frontends/stb6100.c2
-rw-r--r--drivers/media/dvb-frontends/stv0297.c4
-rw-r--r--drivers/media/dvb-frontends/stv0299.c4
-rw-r--r--drivers/media/dvb-frontends/stv0367.c8
-rw-r--r--drivers/media/dvb-frontends/stv0900_core.c4
-rw-r--r--drivers/media/dvb-frontends/tc90522.c10
-rw-r--r--drivers/media/dvb-frontends/tda10021.c4
-rw-r--r--drivers/media/dvb-frontends/tda10023.c4
-rw-r--r--drivers/media/dvb-frontends/tda10048.c4
-rw-r--r--drivers/media/dvb-frontends/tda1004x.c4
-rw-r--r--drivers/media/dvb-frontends/tda10071.c4
-rw-r--r--drivers/media/dvb-frontends/tda10086.c4
-rw-r--r--drivers/media/dvb-frontends/tda8083.c4
-rw-r--r--drivers/media/dvb-frontends/ves1820.c4
-rw-r--r--drivers/media/dvb-frontends/ves1x93.c4
-rw-r--r--drivers/media/dvb-frontends/zl10353.c4
-rw-r--r--drivers/media/pci/bt8xx/dst.c4
-rw-r--r--drivers/media/usb/dvb-usb-v2/mxl111sf-demod.c4
-rw-r--r--drivers/media/usb/dvb-usb/af9005-fe.c4
-rw-r--r--drivers/media/usb/dvb-usb/dtt200u-fe.c5
65 files changed, 230 insertions, 213 deletions
diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c
index ca6d60f9d492..d009478f16c4 100644
--- a/drivers/media/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb-core/dvb_frontend.c
@@ -1361,7 +1361,7 @@ static int dtv_get_frontend(struct dvb_frontend *fe,
1361 int r; 1361 int r;
1362 1362
1363 if (fe->ops.get_frontend) { 1363 if (fe->ops.get_frontend) {
1364 r = fe->ops.get_frontend(fe); 1364 r = fe->ops.get_frontend(fe, c);
1365 if (unlikely(r < 0)) 1365 if (unlikely(r < 0))
1366 return r; 1366 return r;
1367 if (p_out) 1367 if (p_out)
diff --git a/drivers/media/dvb-core/dvb_frontend.h b/drivers/media/dvb-core/dvb_frontend.h
index 458bcce20e38..9592573a0b41 100644
--- a/drivers/media/dvb-core/dvb_frontend.h
+++ b/drivers/media/dvb-core/dvb_frontend.h
@@ -449,7 +449,8 @@ struct dvb_frontend_ops {
449 int (*set_frontend)(struct dvb_frontend *fe); 449 int (*set_frontend)(struct dvb_frontend *fe);
450 int (*get_tune_settings)(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* settings); 450 int (*get_tune_settings)(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* settings);
451 451
452 int (*get_frontend)(struct dvb_frontend *fe); 452 int (*get_frontend)(struct dvb_frontend *fe,
453 struct dtv_frontend_properties *props);
453 454
454 int (*read_status)(struct dvb_frontend *fe, enum fe_status *status); 455 int (*read_status)(struct dvb_frontend *fe, enum fe_status *status);
455 int (*read_ber)(struct dvb_frontend* fe, u32* ber); 456 int (*read_ber)(struct dvb_frontend* fe, u32* ber);
diff --git a/drivers/media/dvb-frontends/af9013.c b/drivers/media/dvb-frontends/af9013.c
index 41ab5defb798..8bcde336ffd7 100644
--- a/drivers/media/dvb-frontends/af9013.c
+++ b/drivers/media/dvb-frontends/af9013.c
@@ -866,9 +866,9 @@ err:
866 return ret; 866 return ret;
867} 867}
868 868
869static int af9013_get_frontend(struct dvb_frontend *fe) 869static int af9013_get_frontend(struct dvb_frontend *fe,
870 struct dtv_frontend_properties *c)
870{ 871{
871 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
872 struct af9013_state *state = fe->demodulator_priv; 872 struct af9013_state *state = fe->demodulator_priv;
873 int ret; 873 int ret;
874 u8 buf[3]; 874 u8 buf[3];
diff --git a/drivers/media/dvb-frontends/af9033.c b/drivers/media/dvb-frontends/af9033.c
index 8b328d1ca8d3..efebe5ce2429 100644
--- a/drivers/media/dvb-frontends/af9033.c
+++ b/drivers/media/dvb-frontends/af9033.c
@@ -691,10 +691,10 @@ err:
691 return ret; 691 return ret;
692} 692}
693 693
694static int af9033_get_frontend(struct dvb_frontend *fe) 694static int af9033_get_frontend(struct dvb_frontend *fe,
695 struct dtv_frontend_properties *c)
695{ 696{
696 struct af9033_dev *dev = fe->demodulator_priv; 697 struct af9033_dev *dev = fe->demodulator_priv;
697 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
698 int ret; 698 int ret;
699 u8 buf[8]; 699 u8 buf[8];
700 700
diff --git a/drivers/media/dvb-frontends/as102_fe.c b/drivers/media/dvb-frontends/as102_fe.c
index 544c5f65d19a..9412fcd1bddb 100644
--- a/drivers/media/dvb-frontends/as102_fe.c
+++ b/drivers/media/dvb-frontends/as102_fe.c
@@ -190,10 +190,10 @@ static int as102_fe_set_frontend(struct dvb_frontend *fe)
190 return state->ops->set_tune(state->priv, &tune_args); 190 return state->ops->set_tune(state->priv, &tune_args);
191} 191}
192 192
193static int as102_fe_get_frontend(struct dvb_frontend *fe) 193static int as102_fe_get_frontend(struct dvb_frontend *fe,
194 struct dtv_frontend_properties *c)
194{ 195{
195 struct as102_state *state = fe->demodulator_priv; 196 struct as102_state *state = fe->demodulator_priv;
196 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
197 int ret = 0; 197 int ret = 0;
198 struct as10x_tps tps = { 0 }; 198 struct as10x_tps tps = { 0 };
199 199
diff --git a/drivers/media/dvb-frontends/atbm8830.c b/drivers/media/dvb-frontends/atbm8830.c
index 8fe552e293ed..47248b868e38 100644
--- a/drivers/media/dvb-frontends/atbm8830.c
+++ b/drivers/media/dvb-frontends/atbm8830.c
@@ -297,9 +297,9 @@ static int atbm8830_set_fe(struct dvb_frontend *fe)
297 return 0; 297 return 0;
298} 298}
299 299
300static int atbm8830_get_fe(struct dvb_frontend *fe) 300static int atbm8830_get_fe(struct dvb_frontend *fe,
301 struct dtv_frontend_properties *c)
301{ 302{
302 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
303 dprintk("%s\n", __func__); 303 dprintk("%s\n", __func__);
304 304
305 /* TODO: get real readings from device */ 305 /* TODO: get real readings from device */
diff --git a/drivers/media/dvb-frontends/au8522_dig.c b/drivers/media/dvb-frontends/au8522_dig.c
index 6c1e97640f3f..e676b9461a59 100644
--- a/drivers/media/dvb-frontends/au8522_dig.c
+++ b/drivers/media/dvb-frontends/au8522_dig.c
@@ -816,9 +816,9 @@ static int au8522_read_ber(struct dvb_frontend *fe, u32 *ber)
816 return au8522_read_ucblocks(fe, ber); 816 return au8522_read_ucblocks(fe, ber);
817} 817}
818 818
819static int au8522_get_frontend(struct dvb_frontend *fe) 819static int au8522_get_frontend(struct dvb_frontend *fe,
820 struct dtv_frontend_properties *c)
820{ 821{
821 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
822 struct au8522_state *state = fe->demodulator_priv; 822 struct au8522_state *state = fe->demodulator_priv;
823 823
824 c->frequency = state->current_frequency; 824 c->frequency = state->current_frequency;
diff --git a/drivers/media/dvb-frontends/cx22700.c b/drivers/media/dvb-frontends/cx22700.c
index fd033cca6e11..5cad925609e0 100644
--- a/drivers/media/dvb-frontends/cx22700.c
+++ b/drivers/media/dvb-frontends/cx22700.c
@@ -345,9 +345,9 @@ static int cx22700_set_frontend(struct dvb_frontend *fe)
345 return 0; 345 return 0;
346} 346}
347 347
348static int cx22700_get_frontend(struct dvb_frontend *fe) 348static int cx22700_get_frontend(struct dvb_frontend *fe,
349 struct dtv_frontend_properties *c)
349{ 350{
350 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
351 struct cx22700_state* state = fe->demodulator_priv; 351 struct cx22700_state* state = fe->demodulator_priv;
352 u8 reg09 = cx22700_readreg (state, 0x09); 352 u8 reg09 = cx22700_readreg (state, 0x09);
353 353
diff --git a/drivers/media/dvb-frontends/cx22702.c b/drivers/media/dvb-frontends/cx22702.c
index d2d06dcd7683..c0e54c59cccf 100644
--- a/drivers/media/dvb-frontends/cx22702.c
+++ b/drivers/media/dvb-frontends/cx22702.c
@@ -562,9 +562,9 @@ static int cx22702_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
562 return 0; 562 return 0;
563} 563}
564 564
565static int cx22702_get_frontend(struct dvb_frontend *fe) 565static int cx22702_get_frontend(struct dvb_frontend *fe,
566 struct dtv_frontend_properties *c)
566{ 567{
567 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
568 struct cx22702_state *state = fe->demodulator_priv; 568 struct cx22702_state *state = fe->demodulator_priv;
569 569
570 u8 reg0C = cx22702_readreg(state, 0x0C); 570 u8 reg0C = cx22702_readreg(state, 0x0C);
diff --git a/drivers/media/dvb-frontends/cx24110.c b/drivers/media/dvb-frontends/cx24110.c
index cb36475e322b..6cb81ec12847 100644
--- a/drivers/media/dvb-frontends/cx24110.c
+++ b/drivers/media/dvb-frontends/cx24110.c
@@ -550,9 +550,9 @@ static int cx24110_set_frontend(struct dvb_frontend *fe)
550 return 0; 550 return 0;
551} 551}
552 552
553static int cx24110_get_frontend(struct dvb_frontend *fe) 553static int cx24110_get_frontend(struct dvb_frontend *fe,
554 struct dtv_frontend_properties *p)
554{ 555{
555 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
556 struct cx24110_state *state = fe->demodulator_priv; 556 struct cx24110_state *state = fe->demodulator_priv;
557 s32 afc; unsigned sclk; 557 s32 afc; unsigned sclk;
558 558
diff --git a/drivers/media/dvb-frontends/cx24117.c b/drivers/media/dvb-frontends/cx24117.c
index 5f77bc80a896..a3f7eb4e609d 100644
--- a/drivers/media/dvb-frontends/cx24117.c
+++ b/drivers/media/dvb-frontends/cx24117.c
@@ -1560,10 +1560,10 @@ static int cx24117_get_algo(struct dvb_frontend *fe)
1560 return DVBFE_ALGO_HW; 1560 return DVBFE_ALGO_HW;
1561} 1561}
1562 1562
1563static int cx24117_get_frontend(struct dvb_frontend *fe) 1563static int cx24117_get_frontend(struct dvb_frontend *fe,
1564 struct dtv_frontend_properties *c)
1564{ 1565{
1565 struct cx24117_state *state = fe->demodulator_priv; 1566 struct cx24117_state *state = fe->demodulator_priv;
1566 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
1567 struct cx24117_cmd cmd; 1567 struct cx24117_cmd cmd;
1568 u8 reg, st, inv; 1568 u8 reg, st, inv;
1569 int ret, idx; 1569 int ret, idx;
diff --git a/drivers/media/dvb-frontends/cx24120.c b/drivers/media/dvb-frontends/cx24120.c
index 3b0ef52bb834..6ccbd86c9490 100644
--- a/drivers/media/dvb-frontends/cx24120.c
+++ b/drivers/media/dvb-frontends/cx24120.c
@@ -1502,9 +1502,9 @@ static int cx24120_sleep(struct dvb_frontend *fe)
1502 return 0; 1502 return 0;
1503} 1503}
1504 1504
1505static int cx24120_get_frontend(struct dvb_frontend *fe) 1505static int cx24120_get_frontend(struct dvb_frontend *fe,
1506 struct dtv_frontend_properties *c)
1506{ 1507{
1507 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
1508 struct cx24120_state *state = fe->demodulator_priv; 1508 struct cx24120_state *state = fe->demodulator_priv;
1509 u8 freq1, freq2, freq3; 1509 u8 freq1, freq2, freq3;
1510 1510
diff --git a/drivers/media/dvb-frontends/cx24123.c b/drivers/media/dvb-frontends/cx24123.c
index 0fe7fb11124b..113b0949408a 100644
--- a/drivers/media/dvb-frontends/cx24123.c
+++ b/drivers/media/dvb-frontends/cx24123.c
@@ -945,9 +945,9 @@ static int cx24123_set_frontend(struct dvb_frontend *fe)
945 return 0; 945 return 0;
946} 946}
947 947
948static int cx24123_get_frontend(struct dvb_frontend *fe) 948static int cx24123_get_frontend(struct dvb_frontend *fe,
949 struct dtv_frontend_properties *p)
949{ 950{
950 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
951 struct cx24123_state *state = fe->demodulator_priv; 951 struct cx24123_state *state = fe->demodulator_priv;
952 952
953 dprintk("\n"); 953 dprintk("\n");
diff --git a/drivers/media/dvb-frontends/cxd2820r_c.c b/drivers/media/dvb-frontends/cxd2820r_c.c
index 42fad6aa3958..a674a6312c38 100644
--- a/drivers/media/dvb-frontends/cxd2820r_c.c
+++ b/drivers/media/dvb-frontends/cxd2820r_c.c
@@ -101,10 +101,10 @@ error:
101 return ret; 101 return ret;
102} 102}
103 103
104int cxd2820r_get_frontend_c(struct dvb_frontend *fe) 104int cxd2820r_get_frontend_c(struct dvb_frontend *fe,
105 struct dtv_frontend_properties *c)
105{ 106{
106 struct cxd2820r_priv *priv = fe->demodulator_priv; 107 struct cxd2820r_priv *priv = fe->demodulator_priv;
107 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
108 int ret; 108 int ret;
109 u8 buf[2]; 109 u8 buf[2];
110 110
diff --git a/drivers/media/dvb-frontends/cxd2820r_core.c b/drivers/media/dvb-frontends/cxd2820r_core.c
index ba4cb7557aa5..314d3b8c1080 100644
--- a/drivers/media/dvb-frontends/cxd2820r_core.c
+++ b/drivers/media/dvb-frontends/cxd2820r_core.c
@@ -313,7 +313,8 @@ static int cxd2820r_read_status(struct dvb_frontend *fe, enum fe_status *status)
313 return ret; 313 return ret;
314} 314}
315 315
316static int cxd2820r_get_frontend(struct dvb_frontend *fe) 316static int cxd2820r_get_frontend(struct dvb_frontend *fe,
317 struct dtv_frontend_properties *p)
317{ 318{
318 struct cxd2820r_priv *priv = fe->demodulator_priv; 319 struct cxd2820r_priv *priv = fe->demodulator_priv;
319 int ret; 320 int ret;
@@ -326,13 +327,13 @@ static int cxd2820r_get_frontend(struct dvb_frontend *fe)
326 327
327 switch (fe->dtv_property_cache.delivery_system) { 328 switch (fe->dtv_property_cache.delivery_system) {
328 case SYS_DVBT: 329 case SYS_DVBT:
329 ret = cxd2820r_get_frontend_t(fe); 330 ret = cxd2820r_get_frontend_t(fe, p);
330 break; 331 break;
331 case SYS_DVBT2: 332 case SYS_DVBT2:
332 ret = cxd2820r_get_frontend_t2(fe); 333 ret = cxd2820r_get_frontend_t2(fe, p);
333 break; 334 break;
334 case SYS_DVBC_ANNEX_A: 335 case SYS_DVBC_ANNEX_A:
335 ret = cxd2820r_get_frontend_c(fe); 336 ret = cxd2820r_get_frontend_c(fe, p);
336 break; 337 break;
337 default: 338 default:
338 ret = -EINVAL; 339 ret = -EINVAL;
diff --git a/drivers/media/dvb-frontends/cxd2820r_priv.h b/drivers/media/dvb-frontends/cxd2820r_priv.h
index a0d53f01a8bf..e31c48e53097 100644
--- a/drivers/media/dvb-frontends/cxd2820r_priv.h
+++ b/drivers/media/dvb-frontends/cxd2820r_priv.h
@@ -76,7 +76,8 @@ int cxd2820r_rd_reg(struct cxd2820r_priv *priv, u32 reg, u8 *val);
76 76
77/* cxd2820r_c.c */ 77/* cxd2820r_c.c */
78 78
79int cxd2820r_get_frontend_c(struct dvb_frontend *fe); 79int cxd2820r_get_frontend_c(struct dvb_frontend *fe,
80 struct dtv_frontend_properties *p);
80 81
81int cxd2820r_set_frontend_c(struct dvb_frontend *fe); 82int cxd2820r_set_frontend_c(struct dvb_frontend *fe);
82 83
@@ -99,7 +100,8 @@ int cxd2820r_get_tune_settings_c(struct dvb_frontend *fe,
99 100
100/* cxd2820r_t.c */ 101/* cxd2820r_t.c */
101 102
102int cxd2820r_get_frontend_t(struct dvb_frontend *fe); 103int cxd2820r_get_frontend_t(struct dvb_frontend *fe,
104 struct dtv_frontend_properties *p);
103 105
104int cxd2820r_set_frontend_t(struct dvb_frontend *fe); 106int cxd2820r_set_frontend_t(struct dvb_frontend *fe);
105 107
@@ -122,7 +124,8 @@ int cxd2820r_get_tune_settings_t(struct dvb_frontend *fe,
122 124
123/* cxd2820r_t2.c */ 125/* cxd2820r_t2.c */
124 126
125int cxd2820r_get_frontend_t2(struct dvb_frontend *fe); 127int cxd2820r_get_frontend_t2(struct dvb_frontend *fe,
128 struct dtv_frontend_properties *p);
126 129
127int cxd2820r_set_frontend_t2(struct dvb_frontend *fe); 130int cxd2820r_set_frontend_t2(struct dvb_frontend *fe);
128 131
diff --git a/drivers/media/dvb-frontends/cxd2820r_t.c b/drivers/media/dvb-frontends/cxd2820r_t.c
index 21abf1b4ed4d..75ce7d8ded00 100644
--- a/drivers/media/dvb-frontends/cxd2820r_t.c
+++ b/drivers/media/dvb-frontends/cxd2820r_t.c
@@ -138,10 +138,10 @@ error:
138 return ret; 138 return ret;
139} 139}
140 140
141int cxd2820r_get_frontend_t(struct dvb_frontend *fe) 141int cxd2820r_get_frontend_t(struct dvb_frontend *fe,
142 struct dtv_frontend_properties *c)
142{ 143{
143 struct cxd2820r_priv *priv = fe->demodulator_priv; 144 struct cxd2820r_priv *priv = fe->demodulator_priv;
144 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
145 int ret; 145 int ret;
146 u8 buf[2]; 146 u8 buf[2];
147 147
diff --git a/drivers/media/dvb-frontends/cxd2820r_t2.c b/drivers/media/dvb-frontends/cxd2820r_t2.c
index 4e028b41c0d5..704475676234 100644
--- a/drivers/media/dvb-frontends/cxd2820r_t2.c
+++ b/drivers/media/dvb-frontends/cxd2820r_t2.c
@@ -23,8 +23,8 @@
23 23
24int cxd2820r_set_frontend_t2(struct dvb_frontend *fe) 24int cxd2820r_set_frontend_t2(struct dvb_frontend *fe)
25{ 25{
26 struct cxd2820r_priv *priv = fe->demodulator_priv;
27 struct dtv_frontend_properties *c = &fe->dtv_property_cache; 26 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
27 struct cxd2820r_priv *priv = fe->demodulator_priv;
28 int ret, i, bw_i; 28 int ret, i, bw_i;
29 u32 if_freq, if_ctl; 29 u32 if_freq, if_ctl;
30 u64 num; 30 u64 num;
@@ -169,10 +169,10 @@ error:
169 169
170} 170}
171 171
172int cxd2820r_get_frontend_t2(struct dvb_frontend *fe) 172int cxd2820r_get_frontend_t2(struct dvb_frontend *fe,
173 struct dtv_frontend_properties *c)
173{ 174{
174 struct cxd2820r_priv *priv = fe->demodulator_priv; 175 struct cxd2820r_priv *priv = fe->demodulator_priv;
175 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
176 int ret; 176 int ret;
177 u8 buf[2]; 177 u8 buf[2];
178 178
diff --git a/drivers/media/dvb-frontends/cxd2841er.c b/drivers/media/dvb-frontends/cxd2841er.c
index fdffb2f0ded8..900186ba8e62 100644
--- a/drivers/media/dvb-frontends/cxd2841er.c
+++ b/drivers/media/dvb-frontends/cxd2841er.c
@@ -2090,13 +2090,13 @@ static int cxd2841er_sleep_tc_to_active_c(struct cxd2841er_priv *priv,
2090 return 0; 2090 return 0;
2091} 2091}
2092 2092
2093static int cxd2841er_get_frontend(struct dvb_frontend *fe) 2093static int cxd2841er_get_frontend(struct dvb_frontend *fe,
2094 struct dtv_frontend_properties *p)
2094{ 2095{
2095 enum fe_status status = 0; 2096 enum fe_status status = 0;
2096 u16 strength = 0, snr = 0; 2097 u16 strength = 0, snr = 0;
2097 u32 errors = 0, ber = 0; 2098 u32 errors = 0, ber = 0;
2098 struct cxd2841er_priv *priv = fe->demodulator_priv; 2099 struct cxd2841er_priv *priv = fe->demodulator_priv;
2099 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
2100 2100
2101 dev_dbg(&priv->i2c->dev, "%s()\n", __func__); 2101 dev_dbg(&priv->i2c->dev, "%s()\n", __func__);
2102 if (priv->state == STATE_ACTIVE_S) 2102 if (priv->state == STATE_ACTIVE_S)
diff --git a/drivers/media/dvb-frontends/dib3000mb.c b/drivers/media/dvb-frontends/dib3000mb.c
index 3ca300939f79..6821ecb53d63 100644
--- a/drivers/media/dvb-frontends/dib3000mb.c
+++ b/drivers/media/dvb-frontends/dib3000mb.c
@@ -112,7 +112,8 @@ static u16 dib3000_seq[2][2][2] = /* fft,gua, inv */
112 } 112 }
113 }; 113 };
114 114
115static int dib3000mb_get_frontend(struct dvb_frontend* fe); 115static int dib3000mb_get_frontend(struct dvb_frontend* fe,
116 struct dtv_frontend_properties *c);
116 117
117static int dib3000mb_set_frontend(struct dvb_frontend *fe, int tuner) 118static int dib3000mb_set_frontend(struct dvb_frontend *fe, int tuner)
118{ 119{
@@ -359,7 +360,7 @@ static int dib3000mb_set_frontend(struct dvb_frontend *fe, int tuner)
359 deb_setf("search_state after autosearch %d after %d checks\n",search_state,as_count); 360 deb_setf("search_state after autosearch %d after %d checks\n",search_state,as_count);
360 361
361 if (search_state == 1) { 362 if (search_state == 1) {
362 if (dib3000mb_get_frontend(fe) == 0) { 363 if (dib3000mb_get_frontend(fe, c) == 0) {
363 deb_setf("reading tuning data from frontend succeeded.\n"); 364 deb_setf("reading tuning data from frontend succeeded.\n");
364 return dib3000mb_set_frontend(fe, 0); 365 return dib3000mb_set_frontend(fe, 0);
365 } 366 }
@@ -450,9 +451,9 @@ static int dib3000mb_fe_init(struct dvb_frontend* fe, int mobile_mode)
450 return 0; 451 return 0;
451} 452}
452 453
453static int dib3000mb_get_frontend(struct dvb_frontend* fe) 454static int dib3000mb_get_frontend(struct dvb_frontend* fe,
455 struct dtv_frontend_properties *c)
454{ 456{
455 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
456 struct dib3000_state* state = fe->demodulator_priv; 457 struct dib3000_state* state = fe->demodulator_priv;
457 enum fe_code_rate *cr; 458 enum fe_code_rate *cr;
458 u16 tps_val; 459 u16 tps_val;
diff --git a/drivers/media/dvb-frontends/dib3000mc.c b/drivers/media/dvb-frontends/dib3000mc.c
index ac90ed3af37e..da0f1dc5aaf7 100644
--- a/drivers/media/dvb-frontends/dib3000mc.c
+++ b/drivers/media/dvb-frontends/dib3000mc.c
@@ -636,9 +636,9 @@ struct i2c_adapter * dib3000mc_get_tuner_i2c_master(struct dvb_frontend *demod,
636 636
637EXPORT_SYMBOL(dib3000mc_get_tuner_i2c_master); 637EXPORT_SYMBOL(dib3000mc_get_tuner_i2c_master);
638 638
639static int dib3000mc_get_frontend(struct dvb_frontend* fe) 639static int dib3000mc_get_frontend(struct dvb_frontend* fe,
640 struct dtv_frontend_properties *fep)
640{ 641{
641 struct dtv_frontend_properties *fep = &fe->dtv_property_cache;
642 struct dib3000mc_state *state = fe->demodulator_priv; 642 struct dib3000mc_state *state = fe->demodulator_priv;
643 u16 tps = dib3000mc_read_word(state,458); 643 u16 tps = dib3000mc_read_word(state,458);
644 644
@@ -726,7 +726,7 @@ static int dib3000mc_set_frontend(struct dvb_frontend *fe)
726 if (found == 0 || found == 1) 726 if (found == 0 || found == 1)
727 return 0; // no channel found 727 return 0; // no channel found
728 728
729 dib3000mc_get_frontend(fe); 729 dib3000mc_get_frontend(fe, fep);
730 } 730 }
731 731
732 ret = dib3000mc_tune(fe); 732 ret = dib3000mc_tune(fe);
diff --git a/drivers/media/dvb-frontends/dib7000m.c b/drivers/media/dvb-frontends/dib7000m.c
index 8b21cccf3c3a..b3ddae8885ac 100644
--- a/drivers/media/dvb-frontends/dib7000m.c
+++ b/drivers/media/dvb-frontends/dib7000m.c
@@ -1151,9 +1151,9 @@ static int dib7000m_identify(struct dib7000m_state *state)
1151} 1151}
1152 1152
1153 1153
1154static int dib7000m_get_frontend(struct dvb_frontend* fe) 1154static int dib7000m_get_frontend(struct dvb_frontend* fe,
1155 struct dtv_frontend_properties *fep)
1155{ 1156{
1156 struct dtv_frontend_properties *fep = &fe->dtv_property_cache;
1157 struct dib7000m_state *state = fe->demodulator_priv; 1157 struct dib7000m_state *state = fe->demodulator_priv;
1158 u16 tps = dib7000m_read_word(state,480); 1158 u16 tps = dib7000m_read_word(state,480);
1159 1159
@@ -1246,7 +1246,7 @@ static int dib7000m_set_frontend(struct dvb_frontend *fe)
1246 if (found == 0 || found == 1) 1246 if (found == 0 || found == 1)
1247 return 0; // no channel found 1247 return 0; // no channel found
1248 1248
1249 dib7000m_get_frontend(fe); 1249 dib7000m_get_frontend(fe, fep);
1250 } 1250 }
1251 1251
1252 ret = dib7000m_tune(fe); 1252 ret = dib7000m_tune(fe);
diff --git a/drivers/media/dvb-frontends/dib7000p.c b/drivers/media/dvb-frontends/dib7000p.c
index 65ab79ed5e3e..b861d4437f2a 100644
--- a/drivers/media/dvb-frontends/dib7000p.c
+++ b/drivers/media/dvb-frontends/dib7000p.c
@@ -1405,9 +1405,9 @@ static int dib7000p_identify(struct dib7000p_state *st)
1405 return 0; 1405 return 0;
1406} 1406}
1407 1407
1408static int dib7000p_get_frontend(struct dvb_frontend *fe) 1408static int dib7000p_get_frontend(struct dvb_frontend *fe,
1409 struct dtv_frontend_properties *fep)
1409{ 1410{
1410 struct dtv_frontend_properties *fep = &fe->dtv_property_cache;
1411 struct dib7000p_state *state = fe->demodulator_priv; 1411 struct dib7000p_state *state = fe->demodulator_priv;
1412 u16 tps = dib7000p_read_word(state, 463); 1412 u16 tps = dib7000p_read_word(state, 463);
1413 1413
@@ -1540,7 +1540,7 @@ static int dib7000p_set_frontend(struct dvb_frontend *fe)
1540 if (found == 0 || found == 1) 1540 if (found == 0 || found == 1)
1541 return 0; 1541 return 0;
1542 1542
1543 dib7000p_get_frontend(fe); 1543 dib7000p_get_frontend(fe, fep);
1544 } 1544 }
1545 1545
1546 ret = dib7000p_tune(fe); 1546 ret = dib7000p_tune(fe);
diff --git a/drivers/media/dvb-frontends/dib8000.c b/drivers/media/dvb-frontends/dib8000.c
index 349d2f1f62ce..ddf9c44877a2 100644
--- a/drivers/media/dvb-frontends/dib8000.c
+++ b/drivers/media/dvb-frontends/dib8000.c
@@ -3382,14 +3382,15 @@ static int dib8000_sleep(struct dvb_frontend *fe)
3382 3382
3383static int dib8000_read_status(struct dvb_frontend *fe, enum fe_status *stat); 3383static int dib8000_read_status(struct dvb_frontend *fe, enum fe_status *stat);
3384 3384
3385static int dib8000_get_frontend(struct dvb_frontend *fe) 3385static int dib8000_get_frontend(struct dvb_frontend *fe,
3386 struct dtv_frontend_properties *c)
3386{ 3387{
3387 struct dib8000_state *state = fe->demodulator_priv; 3388 struct dib8000_state *state = fe->demodulator_priv;
3388 u16 i, val = 0; 3389 u16 i, val = 0;
3389 enum fe_status stat = 0; 3390 enum fe_status stat = 0;
3390 u8 index_frontend, sub_index_frontend; 3391 u8 index_frontend, sub_index_frontend;
3391 3392
3392 fe->dtv_property_cache.bandwidth_hz = 6000000; 3393 c->bandwidth_hz = 6000000;
3393 3394
3394 /* 3395 /*
3395 * If called to early, get_frontend makes dib8000_tune to either 3396 * If called to early, get_frontend makes dib8000_tune to either
@@ -3406,7 +3407,7 @@ static int dib8000_get_frontend(struct dvb_frontend *fe)
3406 if (stat&FE_HAS_SYNC) { 3407 if (stat&FE_HAS_SYNC) {
3407 dprintk("TMCC lock on the slave%i", index_frontend); 3408 dprintk("TMCC lock on the slave%i", index_frontend);
3408 /* synchronize the cache with the other frontends */ 3409 /* synchronize the cache with the other frontends */
3409 state->fe[index_frontend]->ops.get_frontend(state->fe[index_frontend]); 3410 state->fe[index_frontend]->ops.get_frontend(state->fe[index_frontend], c);
3410 for (sub_index_frontend = 0; (sub_index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[sub_index_frontend] != NULL); sub_index_frontend++) { 3411 for (sub_index_frontend = 0; (sub_index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[sub_index_frontend] != NULL); sub_index_frontend++) {
3411 if (sub_index_frontend != index_frontend) { 3412 if (sub_index_frontend != index_frontend) {
3412 state->fe[sub_index_frontend]->dtv_property_cache.isdbt_sb_mode = state->fe[index_frontend]->dtv_property_cache.isdbt_sb_mode; 3413 state->fe[sub_index_frontend]->dtv_property_cache.isdbt_sb_mode = state->fe[index_frontend]->dtv_property_cache.isdbt_sb_mode;
@@ -3426,57 +3427,57 @@ static int dib8000_get_frontend(struct dvb_frontend *fe)
3426 } 3427 }
3427 } 3428 }
3428 3429
3429 fe->dtv_property_cache.isdbt_sb_mode = dib8000_read_word(state, 508) & 0x1; 3430 c->isdbt_sb_mode = dib8000_read_word(state, 508) & 0x1;
3430 3431
3431 if (state->revision == 0x8090) 3432 if (state->revision == 0x8090)
3432 val = dib8000_read_word(state, 572); 3433 val = dib8000_read_word(state, 572);
3433 else 3434 else
3434 val = dib8000_read_word(state, 570); 3435 val = dib8000_read_word(state, 570);
3435 fe->dtv_property_cache.inversion = (val & 0x40) >> 6; 3436 c->inversion = (val & 0x40) >> 6;
3436 switch ((val & 0x30) >> 4) { 3437 switch ((val & 0x30) >> 4) {
3437 case 1: 3438 case 1:
3438 fe->dtv_property_cache.transmission_mode = TRANSMISSION_MODE_2K; 3439 c->transmission_mode = TRANSMISSION_MODE_2K;
3439 dprintk("dib8000_get_frontend: transmission mode 2K"); 3440 dprintk("dib8000_get_frontend: transmission mode 2K");
3440 break; 3441 break;
3441 case 2: 3442 case 2:
3442 fe->dtv_property_cache.transmission_mode = TRANSMISSION_MODE_4K; 3443 c->transmission_mode = TRANSMISSION_MODE_4K;
3443 dprintk("dib8000_get_frontend: transmission mode 4K"); 3444 dprintk("dib8000_get_frontend: transmission mode 4K");
3444 break; 3445 break;
3445 case 3: 3446 case 3:
3446 default: 3447 default:
3447 fe->dtv_property_cache.transmission_mode = TRANSMISSION_MODE_8K; 3448 c->transmission_mode = TRANSMISSION_MODE_8K;
3448 dprintk("dib8000_get_frontend: transmission mode 8K"); 3449 dprintk("dib8000_get_frontend: transmission mode 8K");
3449 break; 3450 break;
3450 } 3451 }
3451 3452
3452 switch (val & 0x3) { 3453 switch (val & 0x3) {
3453 case 0: 3454 case 0:
3454 fe->dtv_property_cache.guard_interval = GUARD_INTERVAL_1_32; 3455 c->guard_interval = GUARD_INTERVAL_1_32;
3455 dprintk("dib8000_get_frontend: Guard Interval = 1/32 "); 3456 dprintk("dib8000_get_frontend: Guard Interval = 1/32 ");
3456 break; 3457 break;
3457 case 1: 3458 case 1:
3458 fe->dtv_property_cache.guard_interval = GUARD_INTERVAL_1_16; 3459 c->guard_interval = GUARD_INTERVAL_1_16;
3459 dprintk("dib8000_get_frontend: Guard Interval = 1/16 "); 3460 dprintk("dib8000_get_frontend: Guard Interval = 1/16 ");
3460 break; 3461 break;
3461 case 2: 3462 case 2:
3462 dprintk("dib8000_get_frontend: Guard Interval = 1/8 "); 3463 dprintk("dib8000_get_frontend: Guard Interval = 1/8 ");
3463 fe->dtv_property_cache.guard_interval = GUARD_INTERVAL_1_8; 3464 c->guard_interval = GUARD_INTERVAL_1_8;
3464 break; 3465 break;
3465 case 3: 3466 case 3:
3466 dprintk("dib8000_get_frontend: Guard Interval = 1/4 "); 3467 dprintk("dib8000_get_frontend: Guard Interval = 1/4 ");
3467 fe->dtv_property_cache.guard_interval = GUARD_INTERVAL_1_4; 3468 c->guard_interval = GUARD_INTERVAL_1_4;
3468 break; 3469 break;
3469 } 3470 }
3470 3471
3471 val = dib8000_read_word(state, 505); 3472 val = dib8000_read_word(state, 505);
3472 fe->dtv_property_cache.isdbt_partial_reception = val & 1; 3473 c->isdbt_partial_reception = val & 1;
3473 dprintk("dib8000_get_frontend: partial_reception = %d ", fe->dtv_property_cache.isdbt_partial_reception); 3474 dprintk("dib8000_get_frontend: partial_reception = %d ", c->isdbt_partial_reception);
3474 3475
3475 for (i = 0; i < 3; i++) { 3476 for (i = 0; i < 3; i++) {
3476 int show; 3477 int show;
3477 3478
3478 val = dib8000_read_word(state, 493 + i) & 0x0f; 3479 val = dib8000_read_word(state, 493 + i) & 0x0f;
3479 fe->dtv_property_cache.layer[i].segment_count = val; 3480 c->layer[i].segment_count = val;
3480 3481
3481 if (val == 0 || val > 13) 3482 if (val == 0 || val > 13)
3482 show = 0; 3483 show = 0;
@@ -3485,41 +3486,41 @@ static int dib8000_get_frontend(struct dvb_frontend *fe)
3485 3486
3486 if (show) 3487 if (show)
3487 dprintk("dib8000_get_frontend: Layer %d segments = %d ", 3488 dprintk("dib8000_get_frontend: Layer %d segments = %d ",
3488 i, fe->dtv_property_cache.layer[i].segment_count); 3489 i, c->layer[i].segment_count);
3489 3490
3490 val = dib8000_read_word(state, 499 + i) & 0x3; 3491 val = dib8000_read_word(state, 499 + i) & 0x3;
3491 /* Interleaving can be 0, 1, 2 or 4 */ 3492 /* Interleaving can be 0, 1, 2 or 4 */
3492 if (val == 3) 3493 if (val == 3)
3493 val = 4; 3494 val = 4;
3494 fe->dtv_property_cache.layer[i].interleaving = val; 3495 c->layer[i].interleaving = val;
3495 if (show) 3496 if (show)
3496 dprintk("dib8000_get_frontend: Layer %d time_intlv = %d ", 3497 dprintk("dib8000_get_frontend: Layer %d time_intlv = %d ",
3497 i, fe->dtv_property_cache.layer[i].interleaving); 3498 i, c->layer[i].interleaving);
3498 3499
3499 val = dib8000_read_word(state, 481 + i); 3500 val = dib8000_read_word(state, 481 + i);
3500 switch (val & 0x7) { 3501 switch (val & 0x7) {
3501 case 1: 3502 case 1:
3502 fe->dtv_property_cache.layer[i].fec = FEC_1_2; 3503 c->layer[i].fec = FEC_1_2;
3503 if (show) 3504 if (show)
3504 dprintk("dib8000_get_frontend: Layer %d Code Rate = 1/2 ", i); 3505 dprintk("dib8000_get_frontend: Layer %d Code Rate = 1/2 ", i);
3505 break; 3506 break;
3506 case 2: 3507 case 2:
3507 fe->dtv_property_cache.layer[i].fec = FEC_2_3; 3508 c->layer[i].fec = FEC_2_3;
3508 if (show) 3509 if (show)
3509 dprintk("dib8000_get_frontend: Layer %d Code Rate = 2/3 ", i); 3510 dprintk("dib8000_get_frontend: Layer %d Code Rate = 2/3 ", i);
3510 break; 3511 break;
3511 case 3: 3512 case 3:
3512 fe->dtv_property_cache.layer[i].fec = FEC_3_4; 3513 c->layer[i].fec = FEC_3_4;
3513 if (show) 3514 if (show)
3514 dprintk("dib8000_get_frontend: Layer %d Code Rate = 3/4 ", i); 3515 dprintk("dib8000_get_frontend: Layer %d Code Rate = 3/4 ", i);
3515 break; 3516 break;
3516 case 5: 3517 case 5:
3517 fe->dtv_property_cache.layer[i].fec = FEC_5_6; 3518 c->layer[i].fec = FEC_5_6;
3518 if (show) 3519 if (show)
3519 dprintk("dib8000_get_frontend: Layer %d Code Rate = 5/6 ", i); 3520 dprintk("dib8000_get_frontend: Layer %d Code Rate = 5/6 ", i);
3520 break; 3521 break;
3521 default: 3522 default:
3522 fe->dtv_property_cache.layer[i].fec = FEC_7_8; 3523 c->layer[i].fec = FEC_7_8;
3523 if (show) 3524 if (show)
3524 dprintk("dib8000_get_frontend: Layer %d Code Rate = 7/8 ", i); 3525 dprintk("dib8000_get_frontend: Layer %d Code Rate = 7/8 ", i);
3525 break; 3526 break;
@@ -3528,23 +3529,23 @@ static int dib8000_get_frontend(struct dvb_frontend *fe)
3528 val = dib8000_read_word(state, 487 + i); 3529 val = dib8000_read_word(state, 487 + i);
3529 switch (val & 0x3) { 3530 switch (val & 0x3) {
3530 case 0: 3531 case 0:
3531 fe->dtv_property_cache.layer[i].modulation = DQPSK; 3532 c->layer[i].modulation = DQPSK;
3532 if (show) 3533 if (show)
3533 dprintk("dib8000_get_frontend: Layer %d DQPSK ", i); 3534 dprintk("dib8000_get_frontend: Layer %d DQPSK ", i);
3534 break; 3535 break;
3535 case 1: 3536 case 1:
3536 fe->dtv_property_cache.layer[i].modulation = QPSK; 3537 c->layer[i].modulation = QPSK;
3537 if (show) 3538 if (show)
3538 dprintk("dib8000_get_frontend: Layer %d QPSK ", i); 3539 dprintk("dib8000_get_frontend: Layer %d QPSK ", i);
3539 break; 3540 break;
3540 case 2: 3541 case 2:
3541 fe->dtv_property_cache.layer[i].modulation = QAM_16; 3542 c->layer[i].modulation = QAM_16;
3542 if (show) 3543 if (show)
3543 dprintk("dib8000_get_frontend: Layer %d QAM16 ", i); 3544 dprintk("dib8000_get_frontend: Layer %d QAM16 ", i);
3544 break; 3545 break;
3545 case 3: 3546 case 3:
3546 default: 3547 default:
3547 fe->dtv_property_cache.layer[i].modulation = QAM_64; 3548 c->layer[i].modulation = QAM_64;
3548 if (show) 3549 if (show)
3549 dprintk("dib8000_get_frontend: Layer %d QAM64 ", i); 3550 dprintk("dib8000_get_frontend: Layer %d QAM64 ", i);
3550 break; 3551 break;
@@ -3553,16 +3554,16 @@ static int dib8000_get_frontend(struct dvb_frontend *fe)
3553 3554
3554 /* synchronize the cache with the other frontends */ 3555 /* synchronize the cache with the other frontends */
3555 for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) { 3556 for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
3556 state->fe[index_frontend]->dtv_property_cache.isdbt_sb_mode = fe->dtv_property_cache.isdbt_sb_mode; 3557 state->fe[index_frontend]->dtv_property_cache.isdbt_sb_mode = c->isdbt_sb_mode;
3557 state->fe[index_frontend]->dtv_property_cache.inversion = fe->dtv_property_cache.inversion; 3558 state->fe[index_frontend]->dtv_property_cache.inversion = c->inversion;
3558 state->fe[index_frontend]->dtv_property_cache.transmission_mode = fe->dtv_property_cache.transmission_mode; 3559 state->fe[index_frontend]->dtv_property_cache.transmission_mode = c->transmission_mode;
3559 state->fe[index_frontend]->dtv_property_cache.guard_interval = fe->dtv_property_cache.guard_interval; 3560 state->fe[index_frontend]->dtv_property_cache.guard_interval = c->guard_interval;
3560 state->fe[index_frontend]->dtv_property_cache.isdbt_partial_reception = fe->dtv_property_cache.isdbt_partial_reception; 3561 state->fe[index_frontend]->dtv_property_cache.isdbt_partial_reception = c->isdbt_partial_reception;
3561 for (i = 0; i < 3; i++) { 3562 for (i = 0; i < 3; i++) {
3562 state->fe[index_frontend]->dtv_property_cache.layer[i].segment_count = fe->dtv_property_cache.layer[i].segment_count; 3563 state->fe[index_frontend]->dtv_property_cache.layer[i].segment_count = c->layer[i].segment_count;
3563 state->fe[index_frontend]->dtv_property_cache.layer[i].interleaving = fe->dtv_property_cache.layer[i].interleaving; 3564 state->fe[index_frontend]->dtv_property_cache.layer[i].interleaving = c->layer[i].interleaving;
3564 state->fe[index_frontend]->dtv_property_cache.layer[i].fec = fe->dtv_property_cache.layer[i].fec; 3565 state->fe[index_frontend]->dtv_property_cache.layer[i].fec = c->layer[i].fec;
3565 state->fe[index_frontend]->dtv_property_cache.layer[i].modulation = fe->dtv_property_cache.layer[i].modulation; 3566 state->fe[index_frontend]->dtv_property_cache.layer[i].modulation = c->layer[i].modulation;
3566 } 3567 }
3567 } 3568 }
3568 return 0; 3569 return 0;
@@ -3671,7 +3672,7 @@ static int dib8000_set_frontend(struct dvb_frontend *fe)
3671 if (state->channel_parameters_set == 0) { /* searching */ 3672 if (state->channel_parameters_set == 0) { /* searching */
3672 if ((dib8000_get_status(state->fe[index_frontend]) == FE_STATUS_DEMOD_SUCCESS) || (dib8000_get_status(state->fe[index_frontend]) == FE_STATUS_FFT_SUCCESS)) { 3673 if ((dib8000_get_status(state->fe[index_frontend]) == FE_STATUS_DEMOD_SUCCESS) || (dib8000_get_status(state->fe[index_frontend]) == FE_STATUS_FFT_SUCCESS)) {
3673 dprintk("autosearch succeeded on fe%i", index_frontend); 3674 dprintk("autosearch succeeded on fe%i", index_frontend);
3674 dib8000_get_frontend(state->fe[index_frontend]); /* we read the channel parameters from the frontend which was successful */ 3675 dib8000_get_frontend(state->fe[index_frontend], c); /* we read the channel parameters from the frontend which was successful */
3675 state->channel_parameters_set = 1; 3676 state->channel_parameters_set = 1;
3676 3677
3677 for (l = 0; (l < MAX_NUMBER_OF_FRONTENDS) && (state->fe[l] != NULL); l++) { 3678 for (l = 0; (l < MAX_NUMBER_OF_FRONTENDS) && (state->fe[l] != NULL); l++) {
diff --git a/drivers/media/dvb-frontends/dib9000.c b/drivers/media/dvb-frontends/dib9000.c
index 91888a2f5301..bab8c5a980a2 100644
--- a/drivers/media/dvb-frontends/dib9000.c
+++ b/drivers/media/dvb-frontends/dib9000.c
@@ -1889,7 +1889,8 @@ static int dib9000_fe_get_tune_settings(struct dvb_frontend *fe, struct dvb_fron
1889 return 0; 1889 return 0;
1890} 1890}
1891 1891
1892static int dib9000_get_frontend(struct dvb_frontend *fe) 1892static int dib9000_get_frontend(struct dvb_frontend *fe,
1893 struct dtv_frontend_properties *c)
1893{ 1894{
1894 struct dib9000_state *state = fe->demodulator_priv; 1895 struct dib9000_state *state = fe->demodulator_priv;
1895 u8 index_frontend, sub_index_frontend; 1896 u8 index_frontend, sub_index_frontend;
@@ -1909,7 +1910,7 @@ static int dib9000_get_frontend(struct dvb_frontend *fe)
1909 dprintk("TPS lock on the slave%i", index_frontend); 1910 dprintk("TPS lock on the slave%i", index_frontend);
1910 1911
1911 /* synchronize the cache with the other frontends */ 1912 /* synchronize the cache with the other frontends */
1912 state->fe[index_frontend]->ops.get_frontend(state->fe[index_frontend]); 1913 state->fe[index_frontend]->ops.get_frontend(state->fe[index_frontend], c);
1913 for (sub_index_frontend = 0; (sub_index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[sub_index_frontend] != NULL); 1914 for (sub_index_frontend = 0; (sub_index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[sub_index_frontend] != NULL);
1914 sub_index_frontend++) { 1915 sub_index_frontend++) {
1915 if (sub_index_frontend != index_frontend) { 1916 if (sub_index_frontend != index_frontend) {
@@ -1943,14 +1944,14 @@ static int dib9000_get_frontend(struct dvb_frontend *fe)
1943 1944
1944 /* synchronize the cache with the other frontends */ 1945 /* synchronize the cache with the other frontends */
1945 for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) { 1946 for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
1946 state->fe[index_frontend]->dtv_property_cache.inversion = fe->dtv_property_cache.inversion; 1947 state->fe[index_frontend]->dtv_property_cache.inversion = c->inversion;
1947 state->fe[index_frontend]->dtv_property_cache.transmission_mode = fe->dtv_property_cache.transmission_mode; 1948 state->fe[index_frontend]->dtv_property_cache.transmission_mode = c->transmission_mode;
1948 state->fe[index_frontend]->dtv_property_cache.guard_interval = fe->dtv_property_cache.guard_interval; 1949 state->fe[index_frontend]->dtv_property_cache.guard_interval = c->guard_interval;
1949 state->fe[index_frontend]->dtv_property_cache.modulation = fe->dtv_property_cache.modulation; 1950 state->fe[index_frontend]->dtv_property_cache.modulation = c->modulation;
1950 state->fe[index_frontend]->dtv_property_cache.hierarchy = fe->dtv_property_cache.hierarchy; 1951 state->fe[index_frontend]->dtv_property_cache.hierarchy = c->hierarchy;
1951 state->fe[index_frontend]->dtv_property_cache.code_rate_HP = fe->dtv_property_cache.code_rate_HP; 1952 state->fe[index_frontend]->dtv_property_cache.code_rate_HP = c->code_rate_HP;
1952 state->fe[index_frontend]->dtv_property_cache.code_rate_LP = fe->dtv_property_cache.code_rate_LP; 1953 state->fe[index_frontend]->dtv_property_cache.code_rate_LP = c->code_rate_LP;
1953 state->fe[index_frontend]->dtv_property_cache.rolloff = fe->dtv_property_cache.rolloff; 1954 state->fe[index_frontend]->dtv_property_cache.rolloff = c->rolloff;
1954 } 1955 }
1955 ret = 0; 1956 ret = 0;
1956 1957
@@ -2083,7 +2084,7 @@ static int dib9000_set_frontend(struct dvb_frontend *fe)
2083 2084
2084 /* synchronize all the channel cache */ 2085 /* synchronize all the channel cache */
2085 state->get_frontend_internal = 1; 2086 state->get_frontend_internal = 1;
2086 dib9000_get_frontend(state->fe[0]); 2087 dib9000_get_frontend(state->fe[0], &state->fe[0]->dtv_property_cache);
2087 state->get_frontend_internal = 0; 2088 state->get_frontend_internal = 0;
2088 2089
2089 /* retune the other frontends with the found channel */ 2090 /* retune the other frontends with the found channel */
diff --git a/drivers/media/dvb-frontends/dvb_dummy_fe.c b/drivers/media/dvb-frontends/dvb_dummy_fe.c
index 14e996d45fac..e5bd8c62ad3a 100644
--- a/drivers/media/dvb-frontends/dvb_dummy_fe.c
+++ b/drivers/media/dvb-frontends/dvb_dummy_fe.c
@@ -70,9 +70,12 @@ static int dvb_dummy_fe_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks)
70} 70}
71 71
72/* 72/*
73 * Only needed if it actually reads something from the hardware 73 * Should only be implemented if it actually reads something from the hardware.
74 * Also, it should check for the locks, in order to avoid report wrong data
75 * to userspace.
74 */ 76 */
75static int dvb_dummy_fe_get_frontend(struct dvb_frontend *fe) 77static int dvb_dummy_fe_get_frontend(struct dvb_frontend *fe,
78 struct dtv_frontend_properties *p)
76{ 79{
77 return 0; 80 return 0;
78} 81}
diff --git a/drivers/media/dvb-frontends/hd29l2.c b/drivers/media/dvb-frontends/hd29l2.c
index 40e359f2d17d..1c7eb477e2cd 100644
--- a/drivers/media/dvb-frontends/hd29l2.c
+++ b/drivers/media/dvb-frontends/hd29l2.c
@@ -560,11 +560,11 @@ static int hd29l2_get_frontend_algo(struct dvb_frontend *fe)
560 return DVBFE_ALGO_CUSTOM; 560 return DVBFE_ALGO_CUSTOM;
561} 561}
562 562
563static int hd29l2_get_frontend(struct dvb_frontend *fe) 563static int hd29l2_get_frontend(struct dvb_frontend *fe,
564 struct dtv_frontend_properties *c)
564{ 565{
565 int ret; 566 int ret;
566 struct hd29l2_priv *priv = fe->demodulator_priv; 567 struct hd29l2_priv *priv = fe->demodulator_priv;
567 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
568 u8 buf[3]; 568 u8 buf[3];
569 u32 if_ctl; 569 u32 if_ctl;
570 char *str_constellation, *str_code_rate, *str_constellation_code_rate, 570 char *str_constellation, *str_code_rate, *str_constellation_code_rate,
diff --git a/drivers/media/dvb-frontends/l64781.c b/drivers/media/dvb-frontends/l64781.c
index 0977871232a2..2f3d0519e19b 100644
--- a/drivers/media/dvb-frontends/l64781.c
+++ b/drivers/media/dvb-frontends/l64781.c
@@ -243,9 +243,9 @@ static int apply_frontend_param(struct dvb_frontend *fe)
243 return 0; 243 return 0;
244} 244}
245 245
246static int get_frontend(struct dvb_frontend *fe) 246static int get_frontend(struct dvb_frontend *fe,
247 struct dtv_frontend_properties *p)
247{ 248{
248 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
249 struct l64781_state* state = fe->demodulator_priv; 249 struct l64781_state* state = fe->demodulator_priv;
250 int tmp; 250 int tmp;
251 251
diff --git a/drivers/media/dvb-frontends/lg2160.c b/drivers/media/dvb-frontends/lg2160.c
index 7880f71ccd8a..f51a3a0b3949 100644
--- a/drivers/media/dvb-frontends/lg2160.c
+++ b/drivers/media/dvb-frontends/lg2160.c
@@ -942,101 +942,102 @@ static int lg216x_read_rs_err_count(struct lg216x_state *state, u16 *err)
942 942
943/* ------------------------------------------------------------------------ */ 943/* ------------------------------------------------------------------------ */
944 944
945static int lg216x_get_frontend(struct dvb_frontend *fe) 945static int lg216x_get_frontend(struct dvb_frontend *fe,
946 struct dtv_frontend_properties *c)
946{ 947{
947 struct lg216x_state *state = fe->demodulator_priv; 948 struct lg216x_state *state = fe->demodulator_priv;
948 int ret; 949 int ret;
949 950
950 lg_dbg("\n"); 951 lg_dbg("\n");
951 952
952 fe->dtv_property_cache.modulation = VSB_8; 953 c->modulation = VSB_8;
953 fe->dtv_property_cache.frequency = state->current_frequency; 954 c->frequency = state->current_frequency;
954 fe->dtv_property_cache.delivery_system = SYS_ATSCMH; 955 c->delivery_system = SYS_ATSCMH;
955 956
956 ret = lg216x_get_fic_version(state, 957 ret = lg216x_get_fic_version(state,
957 &fe->dtv_property_cache.atscmh_fic_ver); 958 &c->atscmh_fic_ver);
958 if (lg_fail(ret)) 959 if (lg_fail(ret))
959 goto fail; 960 goto fail;
960 if (state->fic_ver != fe->dtv_property_cache.atscmh_fic_ver) { 961 if (state->fic_ver != c->atscmh_fic_ver) {
961 state->fic_ver = fe->dtv_property_cache.atscmh_fic_ver; 962 state->fic_ver = c->atscmh_fic_ver;
962 963
963#if 0 964#if 0
964 ret = lg2160_get_parade_id(state, 965 ret = lg2160_get_parade_id(state,
965 &fe->dtv_property_cache.atscmh_parade_id); 966 &c->atscmh_parade_id);
966 if (lg_fail(ret)) 967 if (lg_fail(ret))
967 goto fail; 968 goto fail;
968/* #else */ 969/* #else */
969 fe->dtv_property_cache.atscmh_parade_id = state->parade_id; 970 c->atscmh_parade_id = state->parade_id;
970#endif 971#endif
971 ret = lg216x_get_nog(state, 972 ret = lg216x_get_nog(state,
972 &fe->dtv_property_cache.atscmh_nog); 973 &c->atscmh_nog);
973 if (lg_fail(ret)) 974 if (lg_fail(ret))
974 goto fail; 975 goto fail;
975 ret = lg216x_get_tnog(state, 976 ret = lg216x_get_tnog(state,
976 &fe->dtv_property_cache.atscmh_tnog); 977 &c->atscmh_tnog);
977 if (lg_fail(ret)) 978 if (lg_fail(ret))
978 goto fail; 979 goto fail;
979 ret = lg216x_get_sgn(state, 980 ret = lg216x_get_sgn(state,
980 &fe->dtv_property_cache.atscmh_sgn); 981 &c->atscmh_sgn);
981 if (lg_fail(ret)) 982 if (lg_fail(ret))
982 goto fail; 983 goto fail;
983 ret = lg216x_get_prc(state, 984 ret = lg216x_get_prc(state,
984 &fe->dtv_property_cache.atscmh_prc); 985 &c->atscmh_prc);
985 if (lg_fail(ret)) 986 if (lg_fail(ret))
986 goto fail; 987 goto fail;
987 988
988 ret = lg216x_get_rs_frame_mode(state, 989 ret = lg216x_get_rs_frame_mode(state,
989 (enum atscmh_rs_frame_mode *) 990 (enum atscmh_rs_frame_mode *)
990 &fe->dtv_property_cache.atscmh_rs_frame_mode); 991 &c->atscmh_rs_frame_mode);
991 if (lg_fail(ret)) 992 if (lg_fail(ret))
992 goto fail; 993 goto fail;
993 ret = lg216x_get_rs_frame_ensemble(state, 994 ret = lg216x_get_rs_frame_ensemble(state,
994 (enum atscmh_rs_frame_ensemble *) 995 (enum atscmh_rs_frame_ensemble *)
995 &fe->dtv_property_cache.atscmh_rs_frame_ensemble); 996 &c->atscmh_rs_frame_ensemble);
996 if (lg_fail(ret)) 997 if (lg_fail(ret))
997 goto fail; 998 goto fail;
998 ret = lg216x_get_rs_code_mode(state, 999 ret = lg216x_get_rs_code_mode(state,
999 (enum atscmh_rs_code_mode *) 1000 (enum atscmh_rs_code_mode *)
1000 &fe->dtv_property_cache.atscmh_rs_code_mode_pri, 1001 &c->atscmh_rs_code_mode_pri,
1001 (enum atscmh_rs_code_mode *) 1002 (enum atscmh_rs_code_mode *)
1002 &fe->dtv_property_cache.atscmh_rs_code_mode_sec); 1003 &c->atscmh_rs_code_mode_sec);
1003 if (lg_fail(ret)) 1004 if (lg_fail(ret))
1004 goto fail; 1005 goto fail;
1005 ret = lg216x_get_sccc_block_mode(state, 1006 ret = lg216x_get_sccc_block_mode(state,
1006 (enum atscmh_sccc_block_mode *) 1007 (enum atscmh_sccc_block_mode *)
1007 &fe->dtv_property_cache.atscmh_sccc_block_mode); 1008 &c->atscmh_sccc_block_mode);
1008 if (lg_fail(ret)) 1009 if (lg_fail(ret))
1009 goto fail; 1010 goto fail;
1010 ret = lg216x_get_sccc_code_mode(state, 1011 ret = lg216x_get_sccc_code_mode(state,
1011 (enum atscmh_sccc_code_mode *) 1012 (enum atscmh_sccc_code_mode *)
1012 &fe->dtv_property_cache.atscmh_sccc_code_mode_a, 1013 &c->atscmh_sccc_code_mode_a,
1013 (enum atscmh_sccc_code_mode *) 1014 (enum atscmh_sccc_code_mode *)
1014 &fe->dtv_property_cache.atscmh_sccc_code_mode_b, 1015 &c->atscmh_sccc_code_mode_b,
1015 (enum atscmh_sccc_code_mode *) 1016 (enum atscmh_sccc_code_mode *)
1016 &fe->dtv_property_cache.atscmh_sccc_code_mode_c, 1017 &c->atscmh_sccc_code_mode_c,
1017 (enum atscmh_sccc_code_mode *) 1018 (enum atscmh_sccc_code_mode *)
1018 &fe->dtv_property_cache.atscmh_sccc_code_mode_d); 1019 &c->atscmh_sccc_code_mode_d);
1019 if (lg_fail(ret)) 1020 if (lg_fail(ret))
1020 goto fail; 1021 goto fail;
1021 } 1022 }
1022#if 0 1023#if 0
1023 ret = lg216x_read_fic_err_count(state, 1024 ret = lg216x_read_fic_err_count(state,
1024 (u8 *)&fe->dtv_property_cache.atscmh_fic_err); 1025 (u8 *)&c->atscmh_fic_err);
1025 if (lg_fail(ret)) 1026 if (lg_fail(ret))
1026 goto fail; 1027 goto fail;
1027 ret = lg216x_read_crc_err_count(state, 1028 ret = lg216x_read_crc_err_count(state,
1028 &fe->dtv_property_cache.atscmh_crc_err); 1029 &c->atscmh_crc_err);
1029 if (lg_fail(ret)) 1030 if (lg_fail(ret))
1030 goto fail; 1031 goto fail;
1031 ret = lg216x_read_rs_err_count(state, 1032 ret = lg216x_read_rs_err_count(state,
1032 &fe->dtv_property_cache.atscmh_rs_err); 1033 &c->atscmh_rs_err);
1033 if (lg_fail(ret)) 1034 if (lg_fail(ret))
1034 goto fail; 1035 goto fail;
1035 1036
1036 switch (state->cfg->lg_chip) { 1037 switch (state->cfg->lg_chip) {
1037 case LG2160: 1038 case LG2160:
1038 if (((fe->dtv_property_cache.atscmh_rs_err >= 240) && 1039 if (((c->atscmh_rs_err >= 240) &&
1039 (fe->dtv_property_cache.atscmh_crc_err >= 240)) && 1040 (c->atscmh_crc_err >= 240)) &&
1040 ((jiffies_to_msecs(jiffies) - state->last_reset) > 6000)) 1041 ((jiffies_to_msecs(jiffies) - state->last_reset) > 6000))
1041 ret = lg216x_soft_reset(state); 1042 ret = lg216x_soft_reset(state);
1042 break; 1043 break;
@@ -1054,14 +1055,17 @@ fail:
1054static int lg216x_get_property(struct dvb_frontend *fe, 1055static int lg216x_get_property(struct dvb_frontend *fe,
1055 struct dtv_property *tvp) 1056 struct dtv_property *tvp)
1056{ 1057{
1058 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
1059
1057 return (DTV_ATSCMH_FIC_VER == tvp->cmd) ? 1060 return (DTV_ATSCMH_FIC_VER == tvp->cmd) ?
1058 lg216x_get_frontend(fe) : 0; 1061 lg216x_get_frontend(fe, c) : 0;
1059} 1062}
1060 1063
1061 1064
1062static int lg2160_set_frontend(struct dvb_frontend *fe) 1065static int lg2160_set_frontend(struct dvb_frontend *fe)
1063{ 1066{
1064 struct lg216x_state *state = fe->demodulator_priv; 1067 struct lg216x_state *state = fe->demodulator_priv;
1068 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
1065 int ret; 1069 int ret;
1066 1070
1067 lg_dbg("(%d)\n", fe->dtv_property_cache.frequency); 1071 lg_dbg("(%d)\n", fe->dtv_property_cache.frequency);
@@ -1129,7 +1133,7 @@ static int lg2160_set_frontend(struct dvb_frontend *fe)
1129 ret = lg216x_enable_fic(state, 1); 1133 ret = lg216x_enable_fic(state, 1);
1130 lg_fail(ret); 1134 lg_fail(ret);
1131 1135
1132 lg216x_get_frontend(fe); 1136 lg216x_get_frontend(fe, c);
1133fail: 1137fail:
1134 return ret; 1138 return ret;
1135} 1139}
diff --git a/drivers/media/dvb-frontends/lgdt3305.c b/drivers/media/dvb-frontends/lgdt3305.c
index 47121866163d..4503e8852fd1 100644
--- a/drivers/media/dvb-frontends/lgdt3305.c
+++ b/drivers/media/dvb-frontends/lgdt3305.c
@@ -812,9 +812,9 @@ fail:
812 return ret; 812 return ret;
813} 813}
814 814
815static int lgdt3305_get_frontend(struct dvb_frontend *fe) 815static int lgdt3305_get_frontend(struct dvb_frontend *fe,
816 struct dtv_frontend_properties *p)
816{ 817{
817 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
818 struct lgdt3305_state *state = fe->demodulator_priv; 818 struct lgdt3305_state *state = fe->demodulator_priv;
819 819
820 lg_dbg("\n"); 820 lg_dbg("\n");
diff --git a/drivers/media/dvb-frontends/lgdt3306a.c b/drivers/media/dvb-frontends/lgdt3306a.c
index 721fbc07e9ee..179c26e5eb4e 100644
--- a/drivers/media/dvb-frontends/lgdt3306a.c
+++ b/drivers/media/dvb-frontends/lgdt3306a.c
@@ -1040,10 +1040,10 @@ fail:
1040 return ret; 1040 return ret;
1041} 1041}
1042 1042
1043static int lgdt3306a_get_frontend(struct dvb_frontend *fe) 1043static int lgdt3306a_get_frontend(struct dvb_frontend *fe,
1044 struct dtv_frontend_properties *p)
1044{ 1045{
1045 struct lgdt3306a_state *state = fe->demodulator_priv; 1046 struct lgdt3306a_state *state = fe->demodulator_priv;
1046 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1047 1047
1048 dbg_info("(%u, %d)\n", 1048 dbg_info("(%u, %d)\n",
1049 state->current_frequency, state->current_modulation); 1049 state->current_frequency, state->current_modulation);
diff --git a/drivers/media/dvb-frontends/lgdt330x.c b/drivers/media/dvb-frontends/lgdt330x.c
index cf3cc20510da..96bf254da21e 100644
--- a/drivers/media/dvb-frontends/lgdt330x.c
+++ b/drivers/media/dvb-frontends/lgdt330x.c
@@ -439,10 +439,11 @@ static int lgdt330x_set_parameters(struct dvb_frontend *fe)
439 return 0; 439 return 0;
440} 440}
441 441
442static int lgdt330x_get_frontend(struct dvb_frontend *fe) 442static int lgdt330x_get_frontend(struct dvb_frontend *fe,
443 struct dtv_frontend_properties *p)
443{ 444{
444 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
445 struct lgdt330x_state *state = fe->demodulator_priv; 445 struct lgdt330x_state *state = fe->demodulator_priv;
446
446 p->frequency = state->current_frequency; 447 p->frequency = state->current_frequency;
447 return 0; 448 return 0;
448} 449}
diff --git a/drivers/media/dvb-frontends/lgs8gl5.c b/drivers/media/dvb-frontends/lgs8gl5.c
index 7bbb2c18c2dd..fbfd87b5b803 100644
--- a/drivers/media/dvb-frontends/lgs8gl5.c
+++ b/drivers/media/dvb-frontends/lgs8gl5.c
@@ -336,10 +336,11 @@ lgs8gl5_set_frontend(struct dvb_frontend *fe)
336 336
337 337
338static int 338static int
339lgs8gl5_get_frontend(struct dvb_frontend *fe) 339lgs8gl5_get_frontend(struct dvb_frontend *fe,
340 struct dtv_frontend_properties *p)
340{ 341{
341 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
342 struct lgs8gl5_state *state = fe->demodulator_priv; 342 struct lgs8gl5_state *state = fe->demodulator_priv;
343
343 u8 inv = lgs8gl5_read_reg(state, REG_INVERSION); 344 u8 inv = lgs8gl5_read_reg(state, REG_INVERSION);
344 345
345 p->inversion = (inv & REG_INVERSION_ON) ? INVERSION_ON : INVERSION_OFF; 346 p->inversion = (inv & REG_INVERSION_ON) ? INVERSION_ON : INVERSION_OFF;
diff --git a/drivers/media/dvb-frontends/m88ds3103.c b/drivers/media/dvb-frontends/m88ds3103.c
index ce73a5ec6036..76883600ec6f 100644
--- a/drivers/media/dvb-frontends/m88ds3103.c
+++ b/drivers/media/dvb-frontends/m88ds3103.c
@@ -791,11 +791,11 @@ err:
791 return ret; 791 return ret;
792} 792}
793 793
794static int m88ds3103_get_frontend(struct dvb_frontend *fe) 794static int m88ds3103_get_frontend(struct dvb_frontend *fe,
795 struct dtv_frontend_properties *c)
795{ 796{
796 struct m88ds3103_dev *dev = fe->demodulator_priv; 797 struct m88ds3103_dev *dev = fe->demodulator_priv;
797 struct i2c_client *client = dev->client; 798 struct i2c_client *client = dev->client;
798 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
799 int ret; 799 int ret;
800 u8 buf[3]; 800 u8 buf[3];
801 801
diff --git a/drivers/media/dvb-frontends/m88rs2000.c b/drivers/media/dvb-frontends/m88rs2000.c
index 9b6f464c48bd..a09b12313a73 100644
--- a/drivers/media/dvb-frontends/m88rs2000.c
+++ b/drivers/media/dvb-frontends/m88rs2000.c
@@ -708,10 +708,11 @@ static int m88rs2000_set_frontend(struct dvb_frontend *fe)
708 return 0; 708 return 0;
709} 709}
710 710
711static int m88rs2000_get_frontend(struct dvb_frontend *fe) 711static int m88rs2000_get_frontend(struct dvb_frontend *fe,
712 struct dtv_frontend_properties *c)
712{ 713{
713 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
714 struct m88rs2000_state *state = fe->demodulator_priv; 714 struct m88rs2000_state *state = fe->demodulator_priv;
715
715 c->fec_inner = state->fec_inner; 716 c->fec_inner = state->fec_inner;
716 c->frequency = state->tuner_frequency; 717 c->frequency = state->tuner_frequency;
717 c->symbol_rate = state->symbol_rate; 718 c->symbol_rate = state->symbol_rate;
diff --git a/drivers/media/dvb-frontends/mt312.c b/drivers/media/dvb-frontends/mt312.c
index c36e6764eead..fc08429c99b7 100644
--- a/drivers/media/dvb-frontends/mt312.c
+++ b/drivers/media/dvb-frontends/mt312.c
@@ -647,9 +647,9 @@ static int mt312_set_frontend(struct dvb_frontend *fe)
647 return 0; 647 return 0;
648} 648}
649 649
650static int mt312_get_frontend(struct dvb_frontend *fe) 650static int mt312_get_frontend(struct dvb_frontend *fe,
651 struct dtv_frontend_properties *p)
651{ 652{
652 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
653 struct mt312_state *state = fe->demodulator_priv; 653 struct mt312_state *state = fe->demodulator_priv;
654 int ret; 654 int ret;
655 655
diff --git a/drivers/media/dvb-frontends/mt352.c b/drivers/media/dvb-frontends/mt352.c
index 123bb2f8e4b6..c0bb6328956b 100644
--- a/drivers/media/dvb-frontends/mt352.c
+++ b/drivers/media/dvb-frontends/mt352.c
@@ -311,9 +311,9 @@ static int mt352_set_parameters(struct dvb_frontend *fe)
311 return 0; 311 return 0;
312} 312}
313 313
314static int mt352_get_parameters(struct dvb_frontend* fe) 314static int mt352_get_parameters(struct dvb_frontend* fe,
315 struct dtv_frontend_properties *op)
315{ 316{
316 struct dtv_frontend_properties *op = &fe->dtv_property_cache;
317 struct mt352_state* state = fe->demodulator_priv; 317 struct mt352_state* state = fe->demodulator_priv;
318 u16 tps; 318 u16 tps;
319 u16 div; 319 u16 div;
diff --git a/drivers/media/dvb-frontends/or51132.c b/drivers/media/dvb-frontends/or51132.c
index 35b1053b3640..a165af990672 100644
--- a/drivers/media/dvb-frontends/or51132.c
+++ b/drivers/media/dvb-frontends/or51132.c
@@ -375,9 +375,9 @@ static int or51132_set_parameters(struct dvb_frontend *fe)
375 return 0; 375 return 0;
376} 376}
377 377
378static int or51132_get_parameters(struct dvb_frontend* fe) 378static int or51132_get_parameters(struct dvb_frontend* fe,
379 struct dtv_frontend_properties *p)
379{ 380{
380 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
381 struct or51132_state* state = fe->demodulator_priv; 381 struct or51132_state* state = fe->demodulator_priv;
382 int status; 382 int status;
383 int retry = 1; 383 int retry = 1;
diff --git a/drivers/media/dvb-frontends/rtl2830.c b/drivers/media/dvb-frontends/rtl2830.c
index 74b771218033..3f96429af0e5 100644
--- a/drivers/media/dvb-frontends/rtl2830.c
+++ b/drivers/media/dvb-frontends/rtl2830.c
@@ -279,11 +279,11 @@ err:
279 return ret; 279 return ret;
280} 280}
281 281
282static int rtl2830_get_frontend(struct dvb_frontend *fe) 282static int rtl2830_get_frontend(struct dvb_frontend *fe,
283 struct dtv_frontend_properties *c)
283{ 284{
284 struct i2c_client *client = fe->demodulator_priv; 285 struct i2c_client *client = fe->demodulator_priv;
285 struct rtl2830_dev *dev = i2c_get_clientdata(client); 286 struct rtl2830_dev *dev = i2c_get_clientdata(client);
286 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
287 int ret; 287 int ret;
288 u8 buf[3]; 288 u8 buf[3];
289 289
diff --git a/drivers/media/dvb-frontends/rtl2832.c b/drivers/media/dvb-frontends/rtl2832.c
index 10f2119935da..c2469fb42f12 100644
--- a/drivers/media/dvb-frontends/rtl2832.c
+++ b/drivers/media/dvb-frontends/rtl2832.c
@@ -575,11 +575,11 @@ err:
575 return ret; 575 return ret;
576} 576}
577 577
578static int rtl2832_get_frontend(struct dvb_frontend *fe) 578static int rtl2832_get_frontend(struct dvb_frontend *fe,
579 struct dtv_frontend_properties *c)
579{ 580{
580 struct rtl2832_dev *dev = fe->demodulator_priv; 581 struct rtl2832_dev *dev = fe->demodulator_priv;
581 struct i2c_client *client = dev->client; 582 struct i2c_client *client = dev->client;
582 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
583 int ret; 583 int ret;
584 u8 buf[3]; 584 u8 buf[3];
585 585
diff --git a/drivers/media/dvb-frontends/s5h1409.c b/drivers/media/dvb-frontends/s5h1409.c
index 10964848a2f1..c68965ad97c0 100644
--- a/drivers/media/dvb-frontends/s5h1409.c
+++ b/drivers/media/dvb-frontends/s5h1409.c
@@ -925,9 +925,9 @@ static int s5h1409_read_ber(struct dvb_frontend *fe, u32 *ber)
925 return s5h1409_read_ucblocks(fe, ber); 925 return s5h1409_read_ucblocks(fe, ber);
926} 926}
927 927
928static int s5h1409_get_frontend(struct dvb_frontend *fe) 928static int s5h1409_get_frontend(struct dvb_frontend *fe,
929 struct dtv_frontend_properties *p)
929{ 930{
930 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
931 struct s5h1409_state *state = fe->demodulator_priv; 931 struct s5h1409_state *state = fe->demodulator_priv;
932 932
933 p->frequency = state->current_frequency; 933 p->frequency = state->current_frequency;
diff --git a/drivers/media/dvb-frontends/s5h1411.c b/drivers/media/dvb-frontends/s5h1411.c
index 9afc3f42290e..90f86e82b087 100644
--- a/drivers/media/dvb-frontends/s5h1411.c
+++ b/drivers/media/dvb-frontends/s5h1411.c
@@ -840,9 +840,9 @@ static int s5h1411_read_ber(struct dvb_frontend *fe, u32 *ber)
840 return s5h1411_read_ucblocks(fe, ber); 840 return s5h1411_read_ucblocks(fe, ber);
841} 841}
842 842
843static int s5h1411_get_frontend(struct dvb_frontend *fe) 843static int s5h1411_get_frontend(struct dvb_frontend *fe,
844 struct dtv_frontend_properties *p)
844{ 845{
845 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
846 struct s5h1411_state *state = fe->demodulator_priv; 846 struct s5h1411_state *state = fe->demodulator_priv;
847 847
848 p->frequency = state->current_frequency; 848 p->frequency = state->current_frequency;
diff --git a/drivers/media/dvb-frontends/s5h1420.c b/drivers/media/dvb-frontends/s5h1420.c
index 9c22a4c70d87..d7d0b7d57ad7 100644
--- a/drivers/media/dvb-frontends/s5h1420.c
+++ b/drivers/media/dvb-frontends/s5h1420.c
@@ -756,9 +756,9 @@ static int s5h1420_set_frontend(struct dvb_frontend *fe)
756 return 0; 756 return 0;
757} 757}
758 758
759static int s5h1420_get_frontend(struct dvb_frontend* fe) 759static int s5h1420_get_frontend(struct dvb_frontend* fe,
760 struct dtv_frontend_properties *p)
760{ 761{
761 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
762 struct s5h1420_state* state = fe->demodulator_priv; 762 struct s5h1420_state* state = fe->demodulator_priv;
763 763
764 p->frequency = state->tunedfreq + s5h1420_getfreqoffset(state); 764 p->frequency = state->tunedfreq + s5h1420_getfreqoffset(state);
diff --git a/drivers/media/dvb-frontends/s921.c b/drivers/media/dvb-frontends/s921.c
index d6a8fa63040b..b5e3d90eba5e 100644
--- a/drivers/media/dvb-frontends/s921.c
+++ b/drivers/media/dvb-frontends/s921.c
@@ -433,9 +433,9 @@ static int s921_set_frontend(struct dvb_frontend *fe)
433 return 0; 433 return 0;
434} 434}
435 435
436static int s921_get_frontend(struct dvb_frontend *fe) 436static int s921_get_frontend(struct dvb_frontend *fe,
437 struct dtv_frontend_properties *p)
437{ 438{
438 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
439 struct s921_state *state = fe->demodulator_priv; 439 struct s921_state *state = fe->demodulator_priv;
440 440
441 /* FIXME: Probably it is possible to get it from regs f1 and f2 */ 441 /* FIXME: Probably it is possible to get it from regs f1 and f2 */
diff --git a/drivers/media/dvb-frontends/stb0899_drv.c b/drivers/media/dvb-frontends/stb0899_drv.c
index 756650f154ab..3d171b0e00c2 100644
--- a/drivers/media/dvb-frontends/stb0899_drv.c
+++ b/drivers/media/dvb-frontends/stb0899_drv.c
@@ -1568,9 +1568,9 @@ static enum dvbfe_search stb0899_search(struct dvb_frontend *fe)
1568 return DVBFE_ALGO_SEARCH_ERROR; 1568 return DVBFE_ALGO_SEARCH_ERROR;
1569} 1569}
1570 1570
1571static int stb0899_get_frontend(struct dvb_frontend *fe) 1571static int stb0899_get_frontend(struct dvb_frontend *fe,
1572 struct dtv_frontend_properties *p)
1572{ 1573{
1573 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1574 struct stb0899_state *state = fe->demodulator_priv; 1574 struct stb0899_state *state = fe->demodulator_priv;
1575 struct stb0899_internal *internal = &state->internal; 1575 struct stb0899_internal *internal = &state->internal;
1576 1576
diff --git a/drivers/media/dvb-frontends/stb6100.c b/drivers/media/dvb-frontends/stb6100.c
index c978c801c7aa..b9c2511bf019 100644
--- a/drivers/media/dvb-frontends/stb6100.c
+++ b/drivers/media/dvb-frontends/stb6100.c
@@ -346,7 +346,7 @@ static int stb6100_set_frequency(struct dvb_frontend *fe, u32 frequency)
346 346
347 if (fe->ops.get_frontend) { 347 if (fe->ops.get_frontend) {
348 dprintk(verbose, FE_DEBUG, 1, "Get frontend parameters"); 348 dprintk(verbose, FE_DEBUG, 1, "Get frontend parameters");
349 fe->ops.get_frontend(fe); 349 fe->ops.get_frontend(fe, p);
350 } 350 }
351 srate = p->symbol_rate; 351 srate = p->symbol_rate;
352 352
diff --git a/drivers/media/dvb-frontends/stv0297.c b/drivers/media/dvb-frontends/stv0297.c
index 75b4d8b25657..81b27b7c0c96 100644
--- a/drivers/media/dvb-frontends/stv0297.c
+++ b/drivers/media/dvb-frontends/stv0297.c
@@ -615,9 +615,9 @@ timeout:
615 return 0; 615 return 0;
616} 616}
617 617
618static int stv0297_get_frontend(struct dvb_frontend *fe) 618static int stv0297_get_frontend(struct dvb_frontend *fe,
619 struct dtv_frontend_properties *p)
619{ 620{
620 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
621 struct stv0297_state *state = fe->demodulator_priv; 621 struct stv0297_state *state = fe->demodulator_priv;
622 int reg_00, reg_83; 622 int reg_00, reg_83;
623 623
diff --git a/drivers/media/dvb-frontends/stv0299.c b/drivers/media/dvb-frontends/stv0299.c
index c43f36d32340..7927fa925f2f 100644
--- a/drivers/media/dvb-frontends/stv0299.c
+++ b/drivers/media/dvb-frontends/stv0299.c
@@ -602,9 +602,9 @@ static int stv0299_set_frontend(struct dvb_frontend *fe)
602 return 0; 602 return 0;
603} 603}
604 604
605static int stv0299_get_frontend(struct dvb_frontend *fe) 605static int stv0299_get_frontend(struct dvb_frontend *fe,
606 struct dtv_frontend_properties *p)
606{ 607{
607 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
608 struct stv0299_state* state = fe->demodulator_priv; 608 struct stv0299_state* state = fe->demodulator_priv;
609 s32 derot_freq; 609 s32 derot_freq;
610 int invval; 610 int invval;
diff --git a/drivers/media/dvb-frontends/stv0367.c b/drivers/media/dvb-frontends/stv0367.c
index 44cb73f68af6..abc379aea713 100644
--- a/drivers/media/dvb-frontends/stv0367.c
+++ b/drivers/media/dvb-frontends/stv0367.c
@@ -1938,9 +1938,9 @@ static int stv0367ter_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
1938 return 0; 1938 return 0;
1939} 1939}
1940 1940
1941static int stv0367ter_get_frontend(struct dvb_frontend *fe) 1941static int stv0367ter_get_frontend(struct dvb_frontend *fe,
1942 struct dtv_frontend_properties *p)
1942{ 1943{
1943 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1944 struct stv0367_state *state = fe->demodulator_priv; 1944 struct stv0367_state *state = fe->demodulator_priv;
1945 struct stv0367ter_state *ter_state = state->ter_state; 1945 struct stv0367ter_state *ter_state = state->ter_state;
1946 enum stv0367_ter_mode mode; 1946 enum stv0367_ter_mode mode;
@@ -3146,9 +3146,9 @@ static int stv0367cab_set_frontend(struct dvb_frontend *fe)
3146 return 0; 3146 return 0;
3147} 3147}
3148 3148
3149static int stv0367cab_get_frontend(struct dvb_frontend *fe) 3149static int stv0367cab_get_frontend(struct dvb_frontend *fe,
3150 struct dtv_frontend_properties *p)
3150{ 3151{
3151 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
3152 struct stv0367_state *state = fe->demodulator_priv; 3152 struct stv0367_state *state = fe->demodulator_priv;
3153 struct stv0367cab_state *cab_state = state->cab_state; 3153 struct stv0367cab_state *cab_state = state->cab_state;
3154 3154
diff --git a/drivers/media/dvb-frontends/stv0900_core.c b/drivers/media/dvb-frontends/stv0900_core.c
index fe31dd541955..28239b1fd954 100644
--- a/drivers/media/dvb-frontends/stv0900_core.c
+++ b/drivers/media/dvb-frontends/stv0900_core.c
@@ -1859,9 +1859,9 @@ static int stv0900_sleep(struct dvb_frontend *fe)
1859 return 0; 1859 return 0;
1860} 1860}
1861 1861
1862static int stv0900_get_frontend(struct dvb_frontend *fe) 1862static int stv0900_get_frontend(struct dvb_frontend *fe,
1863 struct dtv_frontend_properties *p)
1863{ 1864{
1864 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1865 struct stv0900_state *state = fe->demodulator_priv; 1865 struct stv0900_state *state = fe->demodulator_priv;
1866 struct stv0900_internal *intp = state->internal; 1866 struct stv0900_internal *intp = state->internal;
1867 enum fe_stv0900_demod_num demod = state->demod; 1867 enum fe_stv0900_demod_num demod = state->demod;
diff --git a/drivers/media/dvb-frontends/tc90522.c b/drivers/media/dvb-frontends/tc90522.c
index 456cdc7fb1e7..31cd32532387 100644
--- a/drivers/media/dvb-frontends/tc90522.c
+++ b/drivers/media/dvb-frontends/tc90522.c
@@ -201,10 +201,10 @@ static const enum fe_code_rate fec_conv_sat[] = {
201 FEC_2_3, /* for 8PSK. (trellis code) */ 201 FEC_2_3, /* for 8PSK. (trellis code) */
202}; 202};
203 203
204static int tc90522s_get_frontend(struct dvb_frontend *fe) 204static int tc90522s_get_frontend(struct dvb_frontend *fe,
205 struct dtv_frontend_properties *c)
205{ 206{
206 struct tc90522_state *state; 207 struct tc90522_state *state;
207 struct dtv_frontend_properties *c;
208 struct dtv_fe_stats *stats; 208 struct dtv_fe_stats *stats;
209 int ret, i; 209 int ret, i;
210 int layers; 210 int layers;
@@ -212,7 +212,6 @@ static int tc90522s_get_frontend(struct dvb_frontend *fe)
212 u32 cndat; 212 u32 cndat;
213 213
214 state = fe->demodulator_priv; 214 state = fe->demodulator_priv;
215 c = &fe->dtv_property_cache;
216 c->delivery_system = SYS_ISDBS; 215 c->delivery_system = SYS_ISDBS;
217 c->symbol_rate = 28860000; 216 c->symbol_rate = 28860000;
218 217
@@ -337,10 +336,10 @@ static const enum fe_modulation mod_conv[] = {
337 DQPSK, QPSK, QAM_16, QAM_64, 0, 0, 0, 0 336 DQPSK, QPSK, QAM_16, QAM_64, 0, 0, 0, 0
338}; 337};
339 338
340static int tc90522t_get_frontend(struct dvb_frontend *fe) 339static int tc90522t_get_frontend(struct dvb_frontend *fe,
340 struct dtv_frontend_properties *c)
341{ 341{
342 struct tc90522_state *state; 342 struct tc90522_state *state;
343 struct dtv_frontend_properties *c;
344 struct dtv_fe_stats *stats; 343 struct dtv_fe_stats *stats;
345 int ret, i; 344 int ret, i;
346 int layers; 345 int layers;
@@ -348,7 +347,6 @@ static int tc90522t_get_frontend(struct dvb_frontend *fe)
348 u32 cndat; 347 u32 cndat;
349 348
350 state = fe->demodulator_priv; 349 state = fe->demodulator_priv;
351 c = &fe->dtv_property_cache;
352 c->delivery_system = SYS_ISDBT; 350 c->delivery_system = SYS_ISDBT;
353 c->bandwidth_hz = 6000000; 351 c->bandwidth_hz = 6000000;
354 mode = 1; 352 mode = 1;
diff --git a/drivers/media/dvb-frontends/tda10021.c b/drivers/media/dvb-frontends/tda10021.c
index a684424e665a..806c56691ca5 100644
--- a/drivers/media/dvb-frontends/tda10021.c
+++ b/drivers/media/dvb-frontends/tda10021.c
@@ -387,9 +387,9 @@ static int tda10021_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks)
387 return 0; 387 return 0;
388} 388}
389 389
390static int tda10021_get_frontend(struct dvb_frontend *fe) 390static int tda10021_get_frontend(struct dvb_frontend *fe,
391 struct dtv_frontend_properties *p)
391{ 392{
392 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
393 struct tda10021_state* state = fe->demodulator_priv; 393 struct tda10021_state* state = fe->demodulator_priv;
394 int sync; 394 int sync;
395 s8 afc = 0; 395 s8 afc = 0;
diff --git a/drivers/media/dvb-frontends/tda10023.c b/drivers/media/dvb-frontends/tda10023.c
index 44a55656093f..3b8c7e499d0d 100644
--- a/drivers/media/dvb-frontends/tda10023.c
+++ b/drivers/media/dvb-frontends/tda10023.c
@@ -457,9 +457,9 @@ static int tda10023_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks)
457 return 0; 457 return 0;
458} 458}
459 459
460static int tda10023_get_frontend(struct dvb_frontend *fe) 460static int tda10023_get_frontend(struct dvb_frontend *fe,
461 struct dtv_frontend_properties *p)
461{ 462{
462 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
463 struct tda10023_state* state = fe->demodulator_priv; 463 struct tda10023_state* state = fe->demodulator_priv;
464 int sync,inv; 464 int sync,inv;
465 s8 afc = 0; 465 s8 afc = 0;
diff --git a/drivers/media/dvb-frontends/tda10048.c b/drivers/media/dvb-frontends/tda10048.c
index 8451086c563f..c2bf89d0b0b0 100644
--- a/drivers/media/dvb-frontends/tda10048.c
+++ b/drivers/media/dvb-frontends/tda10048.c
@@ -1028,9 +1028,9 @@ static int tda10048_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
1028 return 0; 1028 return 0;
1029} 1029}
1030 1030
1031static int tda10048_get_frontend(struct dvb_frontend *fe) 1031static int tda10048_get_frontend(struct dvb_frontend *fe,
1032 struct dtv_frontend_properties *p)
1032{ 1033{
1033 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1034 struct tda10048_state *state = fe->demodulator_priv; 1034 struct tda10048_state *state = fe->demodulator_priv;
1035 1035
1036 dprintk(1, "%s()\n", __func__); 1036 dprintk(1, "%s()\n", __func__);
diff --git a/drivers/media/dvb-frontends/tda1004x.c b/drivers/media/dvb-frontends/tda1004x.c
index 0e209b56c76c..3137a9ba3a32 100644
--- a/drivers/media/dvb-frontends/tda1004x.c
+++ b/drivers/media/dvb-frontends/tda1004x.c
@@ -899,9 +899,9 @@ static int tda1004x_set_fe(struct dvb_frontend *fe)
899 return 0; 899 return 0;
900} 900}
901 901
902static int tda1004x_get_fe(struct dvb_frontend *fe) 902static int tda1004x_get_fe(struct dvb_frontend *fe,
903 struct dtv_frontend_properties *fe_params)
903{ 904{
904 struct dtv_frontend_properties *fe_params = &fe->dtv_property_cache;
905 struct tda1004x_state* state = fe->demodulator_priv; 905 struct tda1004x_state* state = fe->demodulator_priv;
906 906
907 dprintk("%s\n", __func__); 907 dprintk("%s\n", __func__);
diff --git a/drivers/media/dvb-frontends/tda10071.c b/drivers/media/dvb-frontends/tda10071.c
index 119d47596ac8..37ebeef2bbd0 100644
--- a/drivers/media/dvb-frontends/tda10071.c
+++ b/drivers/media/dvb-frontends/tda10071.c
@@ -701,11 +701,11 @@ error:
701 return ret; 701 return ret;
702} 702}
703 703
704static int tda10071_get_frontend(struct dvb_frontend *fe) 704static int tda10071_get_frontend(struct dvb_frontend *fe,
705 struct dtv_frontend_properties *c)
705{ 706{
706 struct tda10071_dev *dev = fe->demodulator_priv; 707 struct tda10071_dev *dev = fe->demodulator_priv;
707 struct i2c_client *client = dev->client; 708 struct i2c_client *client = dev->client;
708 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
709 int ret, i; 709 int ret, i;
710 u8 buf[5], tmp; 710 u8 buf[5], tmp;
711 711
diff --git a/drivers/media/dvb-frontends/tda10086.c b/drivers/media/dvb-frontends/tda10086.c
index 95a33e187f8e..31d0acb54fe8 100644
--- a/drivers/media/dvb-frontends/tda10086.c
+++ b/drivers/media/dvb-frontends/tda10086.c
@@ -459,9 +459,9 @@ static int tda10086_set_frontend(struct dvb_frontend *fe)
459 return 0; 459 return 0;
460} 460}
461 461
462static int tda10086_get_frontend(struct dvb_frontend *fe) 462static int tda10086_get_frontend(struct dvb_frontend *fe,
463 struct dtv_frontend_properties *fe_params)
463{ 464{
464 struct dtv_frontend_properties *fe_params = &fe->dtv_property_cache;
465 struct tda10086_state* state = fe->demodulator_priv; 465 struct tda10086_state* state = fe->demodulator_priv;
466 u8 val; 466 u8 val;
467 int tmp; 467 int tmp;
diff --git a/drivers/media/dvb-frontends/tda8083.c b/drivers/media/dvb-frontends/tda8083.c
index 796543fa2c8d..9072d6463094 100644
--- a/drivers/media/dvb-frontends/tda8083.c
+++ b/drivers/media/dvb-frontends/tda8083.c
@@ -342,9 +342,9 @@ static int tda8083_set_frontend(struct dvb_frontend *fe)
342 return 0; 342 return 0;
343} 343}
344 344
345static int tda8083_get_frontend(struct dvb_frontend *fe) 345static int tda8083_get_frontend(struct dvb_frontend *fe,
346 struct dtv_frontend_properties *p)
346{ 347{
347 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
348 struct tda8083_state* state = fe->demodulator_priv; 348 struct tda8083_state* state = fe->demodulator_priv;
349 349
350 /* FIXME: get symbolrate & frequency offset...*/ 350 /* FIXME: get symbolrate & frequency offset...*/
diff --git a/drivers/media/dvb-frontends/ves1820.c b/drivers/media/dvb-frontends/ves1820.c
index aacfdda3e005..b09fe88c40f8 100644
--- a/drivers/media/dvb-frontends/ves1820.c
+++ b/drivers/media/dvb-frontends/ves1820.c
@@ -312,9 +312,9 @@ static int ves1820_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks)
312 return 0; 312 return 0;
313} 313}
314 314
315static int ves1820_get_frontend(struct dvb_frontend *fe) 315static int ves1820_get_frontend(struct dvb_frontend *fe,
316 struct dtv_frontend_properties *p)
316{ 317{
317 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
318 struct ves1820_state* state = fe->demodulator_priv; 318 struct ves1820_state* state = fe->demodulator_priv;
319 int sync; 319 int sync;
320 s8 afc = 0; 320 s8 afc = 0;
diff --git a/drivers/media/dvb-frontends/ves1x93.c b/drivers/media/dvb-frontends/ves1x93.c
index 526952396422..ed113e216e14 100644
--- a/drivers/media/dvb-frontends/ves1x93.c
+++ b/drivers/media/dvb-frontends/ves1x93.c
@@ -406,9 +406,9 @@ static int ves1x93_set_frontend(struct dvb_frontend *fe)
406 return 0; 406 return 0;
407} 407}
408 408
409static int ves1x93_get_frontend(struct dvb_frontend *fe) 409static int ves1x93_get_frontend(struct dvb_frontend *fe,
410 struct dtv_frontend_properties *p)
410{ 411{
411 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
412 struct ves1x93_state* state = fe->demodulator_priv; 412 struct ves1x93_state* state = fe->demodulator_priv;
413 int afc; 413 int afc;
414 414
diff --git a/drivers/media/dvb-frontends/zl10353.c b/drivers/media/dvb-frontends/zl10353.c
index ef9764a02d4c..1832c2f7695c 100644
--- a/drivers/media/dvb-frontends/zl10353.c
+++ b/drivers/media/dvb-frontends/zl10353.c
@@ -371,9 +371,9 @@ static int zl10353_set_parameters(struct dvb_frontend *fe)
371 return 0; 371 return 0;
372} 372}
373 373
374static int zl10353_get_parameters(struct dvb_frontend *fe) 374static int zl10353_get_parameters(struct dvb_frontend *fe,
375 struct dtv_frontend_properties *c)
375{ 376{
376 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
377 struct zl10353_state *state = fe->demodulator_priv; 377 struct zl10353_state *state = fe->demodulator_priv;
378 int s6, s9; 378 int s6, s9;
379 u16 tps; 379 u16 tps;
diff --git a/drivers/media/pci/bt8xx/dst.c b/drivers/media/pci/bt8xx/dst.c
index 4a90eee5e3bb..35bc9b2287b4 100644
--- a/drivers/media/pci/bt8xx/dst.c
+++ b/drivers/media/pci/bt8xx/dst.c
@@ -1688,9 +1688,9 @@ static int dst_get_tuning_algo(struct dvb_frontend *fe)
1688 return dst_algo ? DVBFE_ALGO_HW : DVBFE_ALGO_SW; 1688 return dst_algo ? DVBFE_ALGO_HW : DVBFE_ALGO_SW;
1689} 1689}
1690 1690
1691static int dst_get_frontend(struct dvb_frontend *fe) 1691static int dst_get_frontend(struct dvb_frontend *fe,
1692 struct dtv_frontend_properties *p)
1692{ 1693{
1693 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1694 struct dst_state *state = fe->demodulator_priv; 1694 struct dst_state *state = fe->demodulator_priv;
1695 1695
1696 p->frequency = state->decode_freq; 1696 p->frequency = state->decode_freq;
diff --git a/drivers/media/usb/dvb-usb-v2/mxl111sf-demod.c b/drivers/media/usb/dvb-usb-v2/mxl111sf-demod.c
index 84f6de6fa07d..047a32fe43ea 100644
--- a/drivers/media/usb/dvb-usb-v2/mxl111sf-demod.c
+++ b/drivers/media/usb/dvb-usb-v2/mxl111sf-demod.c
@@ -507,9 +507,9 @@ static int mxl111sf_demod_read_signal_strength(struct dvb_frontend *fe,
507 return 0; 507 return 0;
508} 508}
509 509
510static int mxl111sf_demod_get_frontend(struct dvb_frontend *fe) 510static int mxl111sf_demod_get_frontend(struct dvb_frontend *fe,
511 struct dtv_frontend_properties *p)
511{ 512{
512 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
513 struct mxl111sf_demod_state *state = fe->demodulator_priv; 513 struct mxl111sf_demod_state *state = fe->demodulator_priv;
514 514
515 mxl_dbg("()"); 515 mxl_dbg("()");
diff --git a/drivers/media/usb/dvb-usb/af9005-fe.c b/drivers/media/usb/dvb-usb/af9005-fe.c
index ac97075d75f7..09db3d02bd82 100644
--- a/drivers/media/usb/dvb-usb/af9005-fe.c
+++ b/drivers/media/usb/dvb-usb/af9005-fe.c
@@ -1227,9 +1227,9 @@ static int af9005_fe_set_frontend(struct dvb_frontend *fe)
1227 return 0; 1227 return 0;
1228} 1228}
1229 1229
1230static int af9005_fe_get_frontend(struct dvb_frontend *fe) 1230static int af9005_fe_get_frontend(struct dvb_frontend *fe,
1231 struct dtv_frontend_properties *fep)
1231{ 1232{
1232 struct dtv_frontend_properties *fep = &fe->dtv_property_cache;
1233 struct af9005_fe_state *state = fe->demodulator_priv; 1233 struct af9005_fe_state *state = fe->demodulator_priv;
1234 int ret; 1234 int ret;
1235 u8 temp; 1235 u8 temp;
diff --git a/drivers/media/usb/dvb-usb/dtt200u-fe.c b/drivers/media/usb/dvb-usb/dtt200u-fe.c
index 7e72a1bef76a..c09332bd99cb 100644
--- a/drivers/media/usb/dvb-usb/dtt200u-fe.c
+++ b/drivers/media/usb/dvb-usb/dtt200u-fe.c
@@ -140,10 +140,11 @@ static int dtt200u_fe_set_frontend(struct dvb_frontend *fe)
140 return 0; 140 return 0;
141} 141}
142 142
143static int dtt200u_fe_get_frontend(struct dvb_frontend* fe) 143static int dtt200u_fe_get_frontend(struct dvb_frontend* fe,
144 struct dtv_frontend_properties *fep)
144{ 145{
145 struct dtv_frontend_properties *fep = &fe->dtv_property_cache;
146 struct dtt200u_fe_state *state = fe->demodulator_priv; 146 struct dtt200u_fe_state *state = fe->demodulator_priv;
147
147 memcpy(fep, &state->fep, sizeof(struct dtv_frontend_properties)); 148 memcpy(fep, &state->fep, sizeof(struct dtv_frontend_properties));
148 return 0; 149 return 0;
149} 150}