diff options
Diffstat (limited to 'drivers/media/common/tuners/tea5761.c')
-rw-r--r-- | drivers/media/common/tuners/tea5761.c | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/drivers/media/common/tuners/tea5761.c b/drivers/media/common/tuners/tea5761.c index 925399dffbed..bf78cb9fc52c 100644 --- a/drivers/media/common/tuners/tea5761.c +++ b/drivers/media/common/tuners/tea5761.c | |||
@@ -23,6 +23,7 @@ struct tea5761_priv { | |||
23 | struct tuner_i2c_props i2c_props; | 23 | struct tuner_i2c_props i2c_props; |
24 | 24 | ||
25 | u32 frequency; | 25 | u32 frequency; |
26 | bool standby; | ||
26 | }; | 27 | }; |
27 | 28 | ||
28 | /*****************************************************************************/ | 29 | /*****************************************************************************/ |
@@ -135,18 +136,19 @@ static void tea5761_status_dump(unsigned char *buffer) | |||
135 | } | 136 | } |
136 | 137 | ||
137 | /* Freq should be specifyed at 62.5 Hz */ | 138 | /* Freq should be specifyed at 62.5 Hz */ |
138 | static int set_radio_freq(struct dvb_frontend *fe, | 139 | static int __set_radio_freq(struct dvb_frontend *fe, |
139 | struct analog_parameters *params) | 140 | unsigned int freq, |
141 | bool mono) | ||
140 | { | 142 | { |
141 | struct tea5761_priv *priv = fe->tuner_priv; | 143 | struct tea5761_priv *priv = fe->tuner_priv; |
142 | unsigned int frq = params->frequency; | 144 | unsigned int frq = freq; |
143 | unsigned char buffer[7] = {0, 0, 0, 0, 0, 0, 0 }; | 145 | unsigned char buffer[7] = {0, 0, 0, 0, 0, 0, 0 }; |
144 | unsigned div; | 146 | unsigned div; |
145 | int rc; | 147 | int rc; |
146 | 148 | ||
147 | tuner_dbg("radio freq counter %d\n", frq); | 149 | tuner_dbg("radio freq counter %d\n", frq); |
148 | 150 | ||
149 | if (params->mode == T_STANDBY) { | 151 | if (priv->standby) { |
150 | tuner_dbg("TEA5761 set to standby mode\n"); | 152 | tuner_dbg("TEA5761 set to standby mode\n"); |
151 | buffer[5] |= TEA5761_TNCTRL_MU; | 153 | buffer[5] |= TEA5761_TNCTRL_MU; |
152 | } else { | 154 | } else { |
@@ -154,7 +156,7 @@ static int set_radio_freq(struct dvb_frontend *fe, | |||
154 | } | 156 | } |
155 | 157 | ||
156 | 158 | ||
157 | if (params->audmode == V4L2_TUNER_MODE_MONO) { | 159 | if (mono) { |
158 | tuner_dbg("TEA5761 set to mono\n"); | 160 | tuner_dbg("TEA5761 set to mono\n"); |
159 | buffer[5] |= TEA5761_TNCTRL_MST; | 161 | buffer[5] |= TEA5761_TNCTRL_MST; |
160 | } else { | 162 | } else { |
@@ -176,6 +178,26 @@ static int set_radio_freq(struct dvb_frontend *fe, | |||
176 | return 0; | 178 | return 0; |
177 | } | 179 | } |
178 | 180 | ||
181 | static int set_radio_freq(struct dvb_frontend *fe, | ||
182 | struct analog_parameters *params) | ||
183 | { | ||
184 | struct tea5761_priv *priv = fe->analog_demod_priv; | ||
185 | |||
186 | priv->standby = false; | ||
187 | |||
188 | return __set_radio_freq(fe, params->frequency, | ||
189 | params->audmode == V4L2_TUNER_MODE_MONO); | ||
190 | } | ||
191 | |||
192 | static int set_radio_sleep(struct dvb_frontend *fe) | ||
193 | { | ||
194 | struct tea5761_priv *priv = fe->analog_demod_priv; | ||
195 | |||
196 | priv->standby = true; | ||
197 | |||
198 | return __set_radio_freq(fe, priv->frequency, false); | ||
199 | } | ||
200 | |||
179 | static int tea5761_read_status(struct dvb_frontend *fe, char *buffer) | 201 | static int tea5761_read_status(struct dvb_frontend *fe, char *buffer) |
180 | { | 202 | { |
181 | struct tea5761_priv *priv = fe->tuner_priv; | 203 | struct tea5761_priv *priv = fe->tuner_priv; |
@@ -284,6 +306,7 @@ static struct dvb_tuner_ops tea5761_tuner_ops = { | |||
284 | .name = "tea5761", // Philips TEA5761HN FM Radio | 306 | .name = "tea5761", // Philips TEA5761HN FM Radio |
285 | }, | 307 | }, |
286 | .set_analog_params = set_radio_freq, | 308 | .set_analog_params = set_radio_freq, |
309 | .sleep = set_radio_sleep, | ||
287 | .release = tea5761_release, | 310 | .release = tea5761_release, |
288 | .get_frequency = tea5761_get_frequency, | 311 | .get_frequency = tea5761_get_frequency, |
289 | .get_status = tea5761_get_status, | 312 | .get_status = tea5761_get_status, |