Commit cdcd141c authored by Ondrej Zary's avatar Ondrej Zary Committed by Mauro Carvalho Chehab

[media] tuner-core: Change config from unsigned int to void *

config looks like a hack that was added to tuner-core to allow some
configuration of TDA8290 tuner (it's not used by any other driver).
But with the new configuration options of tda8290 driver (no_i2c_gate
and std_map), it's no longer sufficient.
Change config to be void * instead, which allows passing tuner-dependent
config struct to drivers.
Also update saa7134 driver to reflect this change (no other driver uses this).
Signed-off-by: default avatarOndrej Zary <linux@rainbow-software.org>
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 5b0e5350
...@@ -2760,7 +2760,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -2760,7 +2760,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 0, .tda829x_conf = { .lna_cfg = 0 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.gpiomask = 0x0200000, .gpiomask = 0x0200000,
.inputs = {{ .inputs = {{
...@@ -3291,7 +3291,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -3291,7 +3291,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 1, .tda829x_conf = { .lna_cfg = 1 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.gpiomask = 0x000200000, .gpiomask = 0x000200000,
.inputs = {{ .inputs = {{
...@@ -3395,7 +3395,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -3395,7 +3395,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 1, .tda829x_conf = { .lna_cfg = 1 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.gpiomask = 0x0200100, .gpiomask = 0x0200100,
.inputs = {{ .inputs = {{
...@@ -3426,7 +3426,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -3426,7 +3426,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 3, .tda829x_conf = { .lna_cfg = 3 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.ts_type = SAA7134_MPEG_TS_SERIAL, .ts_type = SAA7134_MPEG_TS_SERIAL,
.ts_force_val = 1, .ts_force_val = 1,
...@@ -3459,7 +3459,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -3459,7 +3459,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 3, .tda829x_conf = { .lna_cfg = 3 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.ts_type = SAA7134_MPEG_TS_SERIAL, .ts_type = SAA7134_MPEG_TS_SERIAL,
.gpiomask = 0x0800100, /* GPIO 21 is an INPUT */ .gpiomask = 0x0800100, /* GPIO 21 is an INPUT */
...@@ -3683,7 +3683,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -3683,7 +3683,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 2, .tda829x_conf = { .lna_cfg = 2 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.gpiomask = 0x0200000, .gpiomask = 0x0200000,
.inputs = {{ .inputs = {{
...@@ -3736,7 +3736,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -3736,7 +3736,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 2, .tda829x_conf = { .lna_cfg = 2 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.gpiomask = 0x0200000, .gpiomask = 0x0200000,
.inputs = {{ .inputs = {{
...@@ -3754,7 +3754,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -3754,7 +3754,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 2, .tda829x_conf = { .lna_cfg = 2 },
.gpiomask = 1 << 21, .gpiomask = 1 << 21,
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.inputs = {{ .inputs = {{
...@@ -3887,7 +3887,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -3887,7 +3887,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 0, .tda829x_conf = { .lna_cfg = 0 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.inputs = {{ .inputs = {{
.name = name_tv, /* FIXME: analog tv untested */ .name = name_tv, /* FIXME: analog tv untested */
...@@ -3903,7 +3903,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -3903,7 +3903,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 2, .tda829x_conf = { .lna_cfg = 2 },
.gpiomask = 0x020200000, .gpiomask = 0x020200000,
.inputs = {{ .inputs = {{
.name = name_tv, .name = name_tv,
...@@ -3937,7 +3937,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -3937,7 +3937,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 0, .tda829x_conf = { .lna_cfg = 0 },
.gpiomask = 0x020200000, .gpiomask = 0x020200000,
.inputs = {{ .inputs = {{
.name = name_tv, .name = name_tv,
...@@ -4737,7 +4737,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -4737,7 +4737,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 2, .tda829x_conf = { .lna_cfg = 2 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.gpiomask = 0x0200000, .gpiomask = 0x0200000,
.inputs = {{ .inputs = {{
...@@ -4823,7 +4823,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -4823,7 +4823,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 0, .tda829x_conf = { .lna_cfg = 0 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.inputs = {{ .inputs = {{
.name = name_tv, .name = name_tv,
...@@ -4847,7 +4847,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -4847,7 +4847,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 2, .tda829x_conf = { .lna_cfg = 2 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.gpiomask = 0x0200000, .gpiomask = 0x0200000,
.inputs = { { .inputs = { {
...@@ -5057,7 +5057,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -5057,7 +5057,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 2, .tda829x_conf = { .lna_cfg = 2 },
.gpiomask = 1 << 21, .gpiomask = 1 << 21,
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.inputs = {{ .inputs = {{
...@@ -5087,7 +5087,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -5087,7 +5087,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 2, .tda829x_conf = { .lna_cfg = 2 },
.gpiomask = 1 << 21, .gpiomask = 1 << 21,
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.inputs = {{ .inputs = {{
...@@ -5176,7 +5176,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -5176,7 +5176,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 0, .tda829x_conf = { .lna_cfg = 0 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.gpiomask = 0x0200000, .gpiomask = 0x0200000,
.inputs = { { .inputs = { {
...@@ -5406,7 +5406,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -5406,7 +5406,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tuner_config = 0, .tda829x_conf = { .lna_cfg = 0 },
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.ts_type = SAA7134_MPEG_TS_PARALLEL, .ts_type = SAA7134_MPEG_TS_PARALLEL,
.inputs = {{ .inputs = {{
...@@ -5629,7 +5629,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -5629,7 +5629,7 @@ struct saa7134_board saa7134_boards[] = {
.audio_clock = 0x00187de7, .audio_clock = 0x00187de7,
.tuner_type = TUNER_PHILIPS_TDA8290, .tuner_type = TUNER_PHILIPS_TDA8290,
.radio_type = UNSET, .radio_type = UNSET,
.tuner_config = 3, .tda829x_conf = { .lna_cfg = 3 },
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.gpiomask = 0x02050000, .gpiomask = 0x02050000,
...@@ -7633,7 +7633,7 @@ static void saa7134_tuner_setup(struct saa7134_dev *dev) ...@@ -7633,7 +7633,7 @@ static void saa7134_tuner_setup(struct saa7134_dev *dev)
if ((dev->tuner_type != TUNER_ABSENT) && (dev->tuner_type != UNSET)) { if ((dev->tuner_type != TUNER_ABSENT) && (dev->tuner_type != UNSET)) {
tun_setup.type = dev->tuner_type; tun_setup.type = dev->tuner_type;
tun_setup.addr = dev->tuner_addr; tun_setup.addr = dev->tuner_addr;
tun_setup.config = saa7134_boards[dev->board].tuner_config; tun_setup.config = &saa7134_boards[dev->board].tda829x_conf;
tun_setup.tuner_callback = saa7134_tuner_callback; tun_setup.tuner_callback = saa7134_tuner_callback;
tun_setup.mode_mask = mode_mask; tun_setup.mode_mask = mode_mask;
......
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
#if IS_ENABLED(CONFIG_VIDEO_SAA7134_DVB) #if IS_ENABLED(CONFIG_VIDEO_SAA7134_DVB)
#include <media/videobuf-dvb.h> #include <media/videobuf-dvb.h>
#endif #endif
#include "tda8290.h"
#define UNSET (-1U) #define UNSET (-1U)
...@@ -390,7 +391,7 @@ struct saa7134_board { ...@@ -390,7 +391,7 @@ struct saa7134_board {
unsigned char rds_addr; unsigned char rds_addr;
unsigned int tda9887_conf; unsigned int tda9887_conf;
unsigned int tuner_config; struct tda829x_config tda829x_conf;
/* peripheral I/O */ /* peripheral I/O */
enum saa7134_video_out video_out; enum saa7134_video_out video_out;
......
...@@ -132,7 +132,7 @@ struct tuner { ...@@ -132,7 +132,7 @@ struct tuner {
bool standby; /* Standby mode */ bool standby; /* Standby mode */
unsigned int type; /* chip type id */ unsigned int type; /* chip type id */
unsigned int config; void *config;
const char *name; const char *name;
}; };
...@@ -270,9 +270,8 @@ static const struct analog_demod_ops tuner_analog_ops = { ...@@ -270,9 +270,8 @@ static const struct analog_demod_ops tuner_analog_ops = {
* @c: i2c_client descriptoy * @c: i2c_client descriptoy
* @type: type of the tuner (e. g. tuner number) * @type: type of the tuner (e. g. tuner number)
* @new_mode_mask: Indicates if tuner supports TV and/or Radio * @new_mode_mask: Indicates if tuner supports TV and/or Radio
* @new_config: an optional parameter ranging from 0-255 used by * @new_config: an optional parameter used by a few tuners to adjust
a few tuners to adjust an internal parameter, internal parameters, like LNA mode
like LNA mode
* @tuner_callback: an optional function to be called when switching * @tuner_callback: an optional function to be called when switching
* to analog mode * to analog mode
* *
...@@ -280,7 +279,7 @@ static const struct analog_demod_ops tuner_analog_ops = { ...@@ -280,7 +279,7 @@ static const struct analog_demod_ops tuner_analog_ops = {
* by tun_setup structure. It contains several per-tuner initialization "magic" * by tun_setup structure. It contains several per-tuner initialization "magic"
*/ */
static void set_type(struct i2c_client *c, unsigned int type, static void set_type(struct i2c_client *c, unsigned int type,
unsigned int new_mode_mask, unsigned int new_config, unsigned int new_mode_mask, void *new_config,
int (*tuner_callback) (void *dev, int component, int cmd, int arg)) int (*tuner_callback) (void *dev, int component, int cmd, int arg))
{ {
struct tuner *t = to_tuner(i2c_get_clientdata(c)); struct tuner *t = to_tuner(i2c_get_clientdata(c));
...@@ -295,8 +294,7 @@ static void set_type(struct i2c_client *c, unsigned int type, ...@@ -295,8 +294,7 @@ static void set_type(struct i2c_client *c, unsigned int type,
} }
t->type = type; t->type = type;
/* prevent invalid config values */ t->config = new_config;
t->config = new_config < 256 ? new_config : 0;
if (tuner_callback != NULL) { if (tuner_callback != NULL) {
tuner_dbg("defining GPIO callback\n"); tuner_dbg("defining GPIO callback\n");
t->fe.callback = tuner_callback; t->fe.callback = tuner_callback;
...@@ -314,11 +312,8 @@ static void set_type(struct i2c_client *c, unsigned int type, ...@@ -314,11 +312,8 @@ static void set_type(struct i2c_client *c, unsigned int type,
break; break;
case TUNER_PHILIPS_TDA8290: case TUNER_PHILIPS_TDA8290:
{ {
struct tda829x_config cfg = {
.lna_cfg = t->config,
};
if (!dvb_attach(tda829x_attach, &t->fe, t->i2c->adapter, if (!dvb_attach(tda829x_attach, &t->fe, t->i2c->adapter,
t->i2c->addr, &cfg)) t->i2c->addr, t->config))
goto attach_failed; goto attach_failed;
break; break;
} }
...@@ -407,7 +402,6 @@ static void set_type(struct i2c_client *c, unsigned int type, ...@@ -407,7 +402,6 @@ static void set_type(struct i2c_client *c, unsigned int type,
case TUNER_NXP_TDA18271: case TUNER_NXP_TDA18271:
{ {
struct tda18271_config cfg = { struct tda18271_config cfg = {
.config = t->config,
.small_i2c = TDA18271_03_BYTE_CHUNK_INIT, .small_i2c = TDA18271_03_BYTE_CHUNK_INIT,
}; };
...@@ -509,7 +503,7 @@ static int tuner_s_type_addr(struct v4l2_subdev *sd, ...@@ -509,7 +503,7 @@ static int tuner_s_type_addr(struct v4l2_subdev *sd,
struct tuner *t = to_tuner(sd); struct tuner *t = to_tuner(sd);
struct i2c_client *c = v4l2_get_subdevdata(sd); struct i2c_client *c = v4l2_get_subdevdata(sd);
tuner_dbg("Calling set_type_addr for type=%d, addr=0x%02x, mode=0x%02x, config=0x%02x\n", tuner_dbg("Calling set_type_addr for type=%d, addr=0x%02x, mode=0x%02x, config=%p\n",
tun_setup->type, tun_setup->type,
tun_setup->addr, tun_setup->addr,
tun_setup->mode_mask, tun_setup->mode_mask,
......
...@@ -192,7 +192,7 @@ struct tuner_setup { ...@@ -192,7 +192,7 @@ struct tuner_setup {
unsigned short addr; /* I2C address */ unsigned short addr; /* I2C address */
unsigned int type; /* Tuner type */ unsigned int type; /* Tuner type */
unsigned int mode_mask; /* Allowed tuner modes */ unsigned int mode_mask; /* Allowed tuner modes */
unsigned int config; /* configuraion for more complex tuners */ void *config; /* configuraion for more complex tuners */
int (*tuner_callback) (void *dev, int component, int cmd, int arg); int (*tuner_callback) (void *dev, int component, int cmd, int arg);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment