summaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb-frontends/af9033.h
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <m.chehab@samsung.com>2014-03-14 14:29:06 -0300
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-03-14 20:26:59 -0300
commited97a6fe5308e5982d118a25f0697b791af5ec50 (patch)
tree3aefde16fcc9edf3c402347fab583eceb1aae44b /drivers/media/dvb-frontends/af9033.h
parentb24c2b4fb126007e36c5a67461527a5bfed33d17 (diff)
downloadtalos-obmc-linux-ed97a6fe5308e5982d118a25f0697b791af5ec50.tar.gz
talos-obmc-linux-ed97a6fe5308e5982d118a25f0697b791af5ec50.zip
[media] af9033: Don't export functions for the hardware filter
Exporting functions for hardware filter is a bad idea, as it breaks compilation if: CONFIG_DVB_USB_AF9035=y CONFIG_DVB_AF9033=m Because the PID filter function calls would be hardcoded at af9035. The same doesn't happen with af9033_attach() because the dvb_attach() doesn't hardcode it. Instead, it dynamically links it at runtime. However, calling dvb_attach() multiple times is problematic, as it increments module kref. So, the better is to pass one parameter for the af9033 module to fill the hardware filters, and then use it inside af9035. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com> Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/dvb-frontends/af9033.h')
-rw-r--r--drivers/media/dvb-frontends/af9033.h23
1 files changed, 15 insertions, 8 deletions
diff --git a/drivers/media/dvb-frontends/af9033.h b/drivers/media/dvb-frontends/af9033.h
index de245f9adb65..539f4db678b8 100644
--- a/drivers/media/dvb-frontends/af9033.h
+++ b/drivers/media/dvb-frontends/af9033.h
@@ -78,17 +78,24 @@ struct af9033_config {
};
-#if IS_ENABLED(CONFIG_DVB_AF9033)
-extern struct dvb_frontend *af9033_attach(const struct af9033_config *config,
- struct i2c_adapter *i2c);
+struct af9033_ops {
+ int (*pid_filter_ctrl)(struct dvb_frontend *fe, int onoff);
+ int (*pid_filter)(struct dvb_frontend *fe, int index, u16 pid,
+ int onoff);
+};
-extern int af9033_pid_filter_ctrl(struct dvb_frontend *fe, int onoff);
-extern int af9033_pid_filter(struct dvb_frontend *fe, int index, u16 pid,
- int onoff);
+#if IS_ENABLED(CONFIG_DVB_AF9033)
+extern
+struct dvb_frontend *af9033_attach(const struct af9033_config *config,
+ struct i2c_adapter *i2c,
+ struct af9033_ops *ops);
+
#else
-static inline struct dvb_frontend *af9033_attach(
- const struct af9033_config *config, struct i2c_adapter *i2c)
+static inline
+struct dvb_frontend *af9033_attach(const struct af9033_config *config,
+ struct i2c_adapter *i2c,
+ struct af9033_ops *ops)
{
pr_warn("%s: driver disabled by Kconfig\n", __func__);
return NULL;
OpenPOWER on IntegriCloud