forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/media/tuners/qt1010.c
....@@ -1,18 +1,9 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * Driver for Quantek QT1010 silicon tuner
34 *
45 * Copyright (C) 2006 Antti Palosaari <crope@iki.fi>
56 * Aapo Tahkola <aet@rasterburn.org>
6
- *
7
- * This program is free software; you can redistribute it and/or modify
8
- * it under the terms of the GNU General Public License as published by
9
- * the Free Software Foundation; either version 2 of the License, or
10
- * (at your option) any later version.
11
- *
12
- * This program is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- * GNU General Public License for more details.
167 */
178 #include "qt1010.h"
189 #include "qt1010_priv.h"
....@@ -224,30 +215,31 @@
224215 static int qt1010_init_meas1(struct qt1010_priv *priv,
225216 u8 oper, u8 reg, u8 reg_init_val, u8 *retval)
226217 {
227
- u8 i, val1, uninitialized_var(val2);
218
+ u8 i, val1, val2;
228219 int err;
229220
230221 qt1010_i2c_oper_t i2c_data[] = {
231222 { QT1010_WR, reg, reg_init_val },
232223 { QT1010_WR, 0x1e, 0x00 },
233224 { QT1010_WR, 0x1e, oper },
234
- { QT1010_RD, reg, 0xff }
235225 };
236226
237227 for (i = 0; i < ARRAY_SIZE(i2c_data); i++) {
238
- if (i2c_data[i].oper == QT1010_WR) {
239
- err = qt1010_writereg(priv, i2c_data[i].reg,
240
- i2c_data[i].val);
241
- } else {
242
- err = qt1010_readreg(priv, i2c_data[i].reg, &val2);
243
- }
244
- if (err) return err;
228
+ err = qt1010_writereg(priv, i2c_data[i].reg,
229
+ i2c_data[i].val);
230
+ if (err)
231
+ return err;
245232 }
246233
234
+ err = qt1010_readreg(priv, reg, &val2);
235
+ if (err)
236
+ return err;
247237 do {
248238 val1 = val2;
249239 err = qt1010_readreg(priv, reg, &val2);
250
- if (err) return err;
240
+ if (err)
241
+ return err;
242
+
251243 dev_dbg(&priv->i2c->dev, "%s: compare reg:%02x %02x %02x\n",
252244 __func__, reg, val1, val2);
253245 } while (val1 != val2);
....@@ -259,7 +251,7 @@
259251 static int qt1010_init_meas2(struct qt1010_priv *priv,
260252 u8 reg_init_val, u8 *retval)
261253 {
262
- u8 i, uninitialized_var(val);
254
+ u8 i, val = 0xff;
263255 int err;
264256 qt1010_i2c_oper_t i2c_data[] = {
265257 { QT1010_WR, 0x07, reg_init_val },
....@@ -270,6 +262,7 @@
270262 { QT1010_WR, 0x1e, 0x00 },
271263 { QT1010_WR, 0x22, 0xff }
272264 };
265
+
273266 for (i = 0; i < ARRAY_SIZE(i2c_data); i++) {
274267 if (i2c_data[i].oper == QT1010_WR) {
275268 err = qt1010_writereg(priv, i2c_data[i].reg,
....@@ -277,7 +270,8 @@
277270 } else {
278271 err = qt1010_readreg(priv, i2c_data[i].reg, &val);
279272 }
280
- if (err) return err;
273
+ if (err)
274
+ return err;
281275 }
282276 *retval = val;
283277 return 0;
....@@ -351,11 +345,12 @@
351345 else
352346 valptr = &tmpval;
353347
354
- BUG_ON(i >= ARRAY_SIZE(i2c_data) - 1);
355
-
356
- err = qt1010_init_meas1(priv, i2c_data[i+1].reg,
357
- i2c_data[i].reg,
358
- i2c_data[i].val, valptr);
348
+ if (i >= ARRAY_SIZE(i2c_data) - 1)
349
+ err = -EIO;
350
+ else
351
+ err = qt1010_init_meas1(priv, i2c_data[i + 1].reg,
352
+ i2c_data[i].reg,
353
+ i2c_data[i].val, valptr);
359354 i++;
360355 break;
361356 }
....@@ -446,7 +441,7 @@
446441 fe->tuner_priv = priv;
447442 return fe;
448443 }
449
-EXPORT_SYMBOL(qt1010_attach);
444
+EXPORT_SYMBOL_GPL(qt1010_attach);
450445
451446 MODULE_DESCRIPTION("Quantek QT1010 silicon tuner driver");
452447 MODULE_AUTHOR("Antti Palosaari <crope@iki.fi>");