aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/tuners/e4000.c
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2014-03-16 17:13:05 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-03-24 16:21:56 -0400
commit320c63870941ef3bb6e08e979d894ad6d51340d7 (patch)
tree3f230ea2916689789f331be19bd0b5cff60f8b61 /drivers/media/tuners/e4000.c
parented97a6fe5308e5982d118a25f0697b791af5ec50 (diff)
[media] e4000: make VIDEO_V4L2 dependency optional
That tuner driver is mainly for DVB API, but there is some V4L2 API controls for SDR usage. Make driver compile conditional so that V4L2 is not mandatory. Without the V4L2 support driver is build as a DVB only, without SDR controls. Fixes following errors reported by kbuild test robot: ERROR: "v4l2_ctrl_auto_cluster" [drivers/media/tuners/e4000.ko] undefined! ERROR: "v4l2_ctrl_new_std" [drivers/media/tuners/e4000.ko] undefined! ERROR: "v4l2_ctrl_handler_init_class" [drivers/media/tuners/e4000.ko] undefined! ERROR: "v4l2_ctrl_handler_free" [drivers/media/tuners/e4000.ko] undefined! Reported-by: kbuild test robot <fengguang.wu@intel.com> Cc: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/tuners/e4000.c')
-rw-r--r--drivers/media/tuners/e4000.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/tuners/e4000.c b/drivers/media/tuners/e4000.c
index 67ecf1bbfa1f..90d93348f20c 100644
--- a/drivers/media/tuners/e4000.c
+++ b/drivers/media/tuners/e4000.c
@@ -269,6 +269,7 @@ static int e4000_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
269 return 0; 269 return 0;
270} 270}
271 271
272#if IS_ENABLED(CONFIG_VIDEO_V4L2)
272static int e4000_set_lna_gain(struct dvb_frontend *fe) 273static int e4000_set_lna_gain(struct dvb_frontend *fe)
273{ 274{
274 struct e4000 *s = fe->tuner_priv; 275 struct e4000 *s = fe->tuner_priv;
@@ -456,6 +457,7 @@ static const struct v4l2_ctrl_ops e4000_ctrl_ops = {
456 .g_volatile_ctrl = e4000_g_volatile_ctrl, 457 .g_volatile_ctrl = e4000_g_volatile_ctrl,
457 .s_ctrl = e4000_s_ctrl, 458 .s_ctrl = e4000_s_ctrl,
458}; 459};
460#endif
459 461
460static const struct dvb_tuner_ops e4000_tuner_ops = { 462static const struct dvb_tuner_ops e4000_tuner_ops = {
461 .info = { 463 .info = {
@@ -522,6 +524,7 @@ static int e4000_probe(struct i2c_client *client,
522 if (ret) 524 if (ret)
523 goto err; 525 goto err;
524 526
527#if IS_ENABLED(CONFIG_VIDEO_V4L2)
525 /* Register controls */ 528 /* Register controls */
526 v4l2_ctrl_handler_init(&s->hdl, 9); 529 v4l2_ctrl_handler_init(&s->hdl, 9);
527 s->bandwidth_auto = v4l2_ctrl_new_std(&s->hdl, &e4000_ctrl_ops, 530 s->bandwidth_auto = v4l2_ctrl_new_std(&s->hdl, &e4000_ctrl_ops,
@@ -554,6 +557,7 @@ static int e4000_probe(struct i2c_client *client,
554 } 557 }
555 558
556 s->sd.ctrl_handler = &s->hdl; 559 s->sd.ctrl_handler = &s->hdl;
560#endif
557 561
558 dev_info(&s->client->dev, 562 dev_info(&s->client->dev,
559 "%s: Elonics E4000 successfully identified\n", 563 "%s: Elonics E4000 successfully identified\n",
@@ -584,7 +588,9 @@ static int e4000_remove(struct i2c_client *client)
584 588
585 dev_dbg(&client->dev, "%s:\n", __func__); 589 dev_dbg(&client->dev, "%s:\n", __func__);
586 590
591#if IS_ENABLED(CONFIG_VIDEO_V4L2)
587 v4l2_ctrl_handler_free(&s->hdl); 592 v4l2_ctrl_handler_free(&s->hdl);
593#endif
588 memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); 594 memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops));
589 fe->tuner_priv = NULL; 595 fe->tuner_priv = NULL;
590 kfree(s); 596 kfree(s);