diff options
Diffstat (limited to 'drivers/media/dvb/frontends/tua6100.c')
-rw-r--r-- | drivers/media/dvb/frontends/tua6100.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/drivers/media/dvb/frontends/tua6100.c b/drivers/media/dvb/frontends/tua6100.c index bcb95c2ef296..029384d1fddd 100644 --- a/drivers/media/dvb/frontends/tua6100.c +++ b/drivers/media/dvb/frontends/tua6100.c | |||
@@ -67,9 +67,9 @@ static int tua6100_sleep(struct dvb_frontend *fe) | |||
67 | return (ret == 1) ? 0 : ret; | 67 | return (ret == 1) ? 0 : ret; |
68 | } | 68 | } |
69 | 69 | ||
70 | static int tua6100_set_params(struct dvb_frontend *fe, | 70 | static int tua6100_set_params(struct dvb_frontend *fe) |
71 | struct dvb_frontend_parameters *params) | ||
72 | { | 71 | { |
72 | struct dtv_frontend_properties *c = &fe->dtv_property_cache; | ||
73 | struct tua6100_priv *priv = fe->tuner_priv; | 73 | struct tua6100_priv *priv = fe->tuner_priv; |
74 | u32 div; | 74 | u32 div; |
75 | u32 prediv; | 75 | u32 prediv; |
@@ -85,36 +85,37 @@ static int tua6100_set_params(struct dvb_frontend *fe, | |||
85 | #define _ri 4000000 | 85 | #define _ri 4000000 |
86 | 86 | ||
87 | // setup register 0 | 87 | // setup register 0 |
88 | if (params->frequency < 2000000) { | 88 | if (c->frequency < 2000000) |
89 | reg0[1] = 0x03; | 89 | reg0[1] = 0x03; |
90 | } else { | 90 | else |
91 | reg0[1] = 0x07; | 91 | reg0[1] = 0x07; |
92 | } | ||
93 | 92 | ||
94 | // setup register 1 | 93 | // setup register 1 |
95 | if (params->frequency < 1630000) { | 94 | if (c->frequency < 1630000) |
96 | reg1[1] = 0x2c; | 95 | reg1[1] = 0x2c; |
97 | } else { | 96 | else |
98 | reg1[1] = 0x0c; | 97 | reg1[1] = 0x0c; |
99 | } | 98 | |
100 | if (_P == 64) | 99 | if (_P == 64) |
101 | reg1[1] |= 0x40; | 100 | reg1[1] |= 0x40; |
102 | if (params->frequency >= 1525000) | 101 | if (c->frequency >= 1525000) |
103 | reg1[1] |= 0x80; | 102 | reg1[1] |= 0x80; |
104 | 103 | ||
105 | // register 2 | 104 | // register 2 |
106 | reg2[1] = (_R >> 8) & 0x03; | 105 | reg2[1] = (_R >> 8) & 0x03; |
107 | reg2[2] = _R; | 106 | reg2[2] = _R; |
108 | if (params->frequency < 1455000) { | 107 | if (c->frequency < 1455000) |
109 | reg2[1] |= 0x1c; | 108 | reg2[1] |= 0x1c; |
110 | } else if (params->frequency < 1630000) { | 109 | else if (c->frequency < 1630000) |
111 | reg2[1] |= 0x0c; | 110 | reg2[1] |= 0x0c; |
112 | } else { | 111 | else |
113 | reg2[1] |= 0x1c; | 112 | reg2[1] |= 0x1c; |
114 | } | ||
115 | 113 | ||
116 | // The N divisor ratio (note: params->frequency is in kHz, but we need it in Hz) | 114 | /* |
117 | prediv = (params->frequency * _R) / (_ri / 1000); | 115 | * The N divisor ratio (note: c->frequency is in kHz, but we |
116 | * need it in Hz) | ||
117 | */ | ||
118 | prediv = (c->frequency * _R) / (_ri / 1000); | ||
118 | div = prediv / _P; | 119 | div = prediv / _P; |
119 | reg1[1] |= (div >> 9) & 0x03; | 120 | reg1[1] |= (div >> 9) & 0x03; |
120 | reg1[2] = div >> 1; | 121 | reg1[2] = div >> 1; |