All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv2 0/2] rtl2832_sdr module attach related fixes
@ 2014-04-09 21:32 Antti Palosaari
  2014-04-09 21:32 ` [PATCHv2 1/2] rtl28xxu: do not hard depend on staging SDR module Antti Palosaari
  2014-04-09 21:32 ` [PATCHv2 2/2] rtl28xxu: silence error log about disabled rtl2832_sdr module Antti Palosaari
  0 siblings, 2 replies; 4+ messages in thread
From: Antti Palosaari @ 2014-04-09 21:32 UTC (permalink / raw)
  To: linux-media; +Cc: Luis R. Rodriguez, Antti Palosaari

V2: I split patch to two.

Pull request for kernel 3.15 will follow right after that mail.

regards,
Antti

Antti Palosaari (2):
  rtl28xxu: do not hard depend on staging SDR module
  rtl28xxu: silence error log about disabled rtl2832_sdr module

 drivers/media/usb/dvb-usb-v2/Makefile   |  1 -
 drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 48 +++++++++++++++++++++++++++++----
 2 files changed, 43 insertions(+), 6 deletions(-)

-- 
1.9.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCHv2 1/2] rtl28xxu: do not hard depend on staging SDR module
  2014-04-09 21:32 [PATCHv2 0/2] rtl2832_sdr module attach related fixes Antti Palosaari
@ 2014-04-09 21:32 ` Antti Palosaari
  2014-04-09 21:34   ` Luis R. Rodriguez
  2014-04-09 21:32 ` [PATCHv2 2/2] rtl28xxu: silence error log about disabled rtl2832_sdr module Antti Palosaari
  1 sibling, 1 reply; 4+ messages in thread
From: Antti Palosaari @ 2014-04-09 21:32 UTC (permalink / raw)
  To: linux-media; +Cc: Luis R. Rodriguez, Antti Palosaari, backports

RTL2832 SDR extension module is currently on staging. SDR module
headers were included from staging causing direct dependency staging
directory. As a solution, add needed headers to main driver.
Motivation of that change comes from Luis / driver backports project.

Reported-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
Cc: backports@vger.kernel.org
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/usb/dvb-usb-v2/Makefile   |  1 -
 drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 21 ++++++++++++++++++++-
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/drivers/media/usb/dvb-usb-v2/Makefile b/drivers/media/usb/dvb-usb-v2/Makefile
index 7407b83..bc38f03 100644
--- a/drivers/media/usb/dvb-usb-v2/Makefile
+++ b/drivers/media/usb/dvb-usb-v2/Makefile
@@ -41,4 +41,3 @@ ccflags-y += -I$(srctree)/drivers/media/dvb-core
 ccflags-y += -I$(srctree)/drivers/media/dvb-frontends
 ccflags-y += -I$(srctree)/drivers/media/tuners
 ccflags-y += -I$(srctree)/drivers/media/common
-ccflags-y += -I$(srctree)/drivers/staging/media/rtl2832u_sdr
diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
index c83c16c..af43183 100644
--- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
+++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
@@ -24,7 +24,6 @@
 
 #include "rtl2830.h"
 #include "rtl2832.h"
-#include "rtl2832_sdr.h"
 
 #include "qt1010.h"
 #include "mt2060.h"
@@ -36,6 +35,26 @@
 #include "tua9001.h"
 #include "r820t.h"
 
+/*
+ * RTL2832_SDR module is in staging. That logic is added in order to avoid any
+ * hard dependency to drivers/staging/ directory as we want compile mainline
+ * driver even whole staging directory is missing.
+ */
+#include <media/v4l2-subdev.h>
+
+#if IS_ENABLED(CONFIG_DVB_RTL2832_SDR)
+extern struct dvb_frontend *rtl2832_sdr_attach(struct dvb_frontend *fe,
+	struct i2c_adapter *i2c, const struct rtl2832_config *cfg,
+	struct v4l2_subdev *sd);
+#else
+static inline struct dvb_frontend *rtl2832_sdr_attach(struct dvb_frontend *fe,
+	struct i2c_adapter *i2c, const struct rtl2832_config *cfg,
+	struct v4l2_subdev *sd)
+{
+	return NULL;
+}
+#endif
+
 static int rtl28xxu_disable_rc;
 module_param_named(disable_rc, rtl28xxu_disable_rc, int, 0644);
 MODULE_PARM_DESC(disable_rc, "disable RTL2832U remote controller");
-- 
1.9.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCHv2 2/2] rtl28xxu: silence error log about disabled rtl2832_sdr module
  2014-04-09 21:32 [PATCHv2 0/2] rtl2832_sdr module attach related fixes Antti Palosaari
  2014-04-09 21:32 ` [PATCHv2 1/2] rtl28xxu: do not hard depend on staging SDR module Antti Palosaari
@ 2014-04-09 21:32 ` Antti Palosaari
  1 sibling, 0 replies; 4+ messages in thread
From: Antti Palosaari @ 2014-04-09 21:32 UTC (permalink / raw)
  To: linux-media; +Cc: Luis R. Rodriguez, Antti Palosaari

It printed a little bit too heavy looking error log "DVB: Unable to
find symbol rtl2832_sdr_attach()" when staging module was disabled.
Silence that error by introducing own version of dvb_attach() macro
without the error logging.

Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
index af43183..dc521ea 100644
--- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
+++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
@@ -55,6 +55,25 @@ static inline struct dvb_frontend *rtl2832_sdr_attach(struct dvb_frontend *fe,
 }
 #endif
 
+#ifdef CONFIG_MEDIA_ATTACH
+#define dvb_attach_sdr(FUNCTION, ARGS...) ({ \
+	void *__r = NULL; \
+	typeof(&FUNCTION) __a = symbol_request(FUNCTION); \
+	if (__a) { \
+		__r = (void *) __a(ARGS); \
+		if (__r == NULL) \
+			symbol_put(FUNCTION); \
+	} \
+	__r; \
+})
+
+#else
+#define dvb_attach_sdr(FUNCTION, ARGS...) ({ \
+	FUNCTION(ARGS); \
+})
+
+#endif
+
 static int rtl28xxu_disable_rc;
 module_param_named(disable_rc, rtl28xxu_disable_rc, int, 0644);
 MODULE_PARM_DESC(disable_rc, "disable RTL2832U remote controller");
@@ -927,7 +946,7 @@ static int rtl2832u_tuner_attach(struct dvb_usb_adapter *adap)
 				adap->fe[0]->ops.tuner_ops.get_rf_strength;
 
 		/* attach SDR */
-		dvb_attach(rtl2832_sdr_attach, adap->fe[0], &d->i2c_adap,
+		dvb_attach_sdr(rtl2832_sdr_attach, adap->fe[0], &d->i2c_adap,
 				&rtl28xxu_rtl2832_fc0012_config, NULL);
 		break;
 	case TUNER_RTL2832_FC0013:
@@ -939,7 +958,7 @@ static int rtl2832u_tuner_attach(struct dvb_usb_adapter *adap)
 				adap->fe[0]->ops.tuner_ops.get_rf_strength;
 
 		/* attach SDR */
-		dvb_attach(rtl2832_sdr_attach, adap->fe[0], &d->i2c_adap,
+		dvb_attach_sdr(rtl2832_sdr_attach, adap->fe[0], &d->i2c_adap,
 				&rtl28xxu_rtl2832_fc0013_config, NULL);
 		break;
 	case TUNER_RTL2832_E4000: {
@@ -970,7 +989,7 @@ static int rtl2832u_tuner_attach(struct dvb_usb_adapter *adap)
 			i2c_set_adapdata(i2c_adap_internal, d);
 
 			/* attach SDR */
-			dvb_attach(rtl2832_sdr_attach, adap->fe[0],
+			dvb_attach_sdr(rtl2832_sdr_attach, adap->fe[0],
 					i2c_adap_internal,
 					&rtl28xxu_rtl2832_e4000_config, sd);
 		}
@@ -1001,7 +1020,7 @@ static int rtl2832u_tuner_attach(struct dvb_usb_adapter *adap)
 				adap->fe[0]->ops.tuner_ops.get_rf_strength;
 
 		/* attach SDR */
-		dvb_attach(rtl2832_sdr_attach, adap->fe[0], &d->i2c_adap,
+		dvb_attach_sdr(rtl2832_sdr_attach, adap->fe[0], &d->i2c_adap,
 				&rtl28xxu_rtl2832_r820t_config, NULL);
 		break;
 	case TUNER_RTL2832_R828D:
-- 
1.9.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCHv2 1/2] rtl28xxu: do not hard depend on staging SDR module
  2014-04-09 21:32 ` [PATCHv2 1/2] rtl28xxu: do not hard depend on staging SDR module Antti Palosaari
@ 2014-04-09 21:34   ` Luis R. Rodriguez
  0 siblings, 0 replies; 4+ messages in thread
From: Luis R. Rodriguez @ 2014-04-09 21:34 UTC (permalink / raw)
  To: Antti Palosaari; +Cc: linux-media, backports

On Wed, Apr 9, 2014 at 2:32 PM, Antti Palosaari <crope@iki.fi> wrote:
> +extern struct dvb_frontend *rtl2832_sdr_attach(struct dvb_frontend *fe,
> +       struct i2c_adapter *i2c, const struct rtl2832_config *cfg,
> +       struct v4l2_subdev *sd);

extern

  Luis

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-04-09 21:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-09 21:32 [PATCHv2 0/2] rtl2832_sdr module attach related fixes Antti Palosaari
2014-04-09 21:32 ` [PATCHv2 1/2] rtl28xxu: do not hard depend on staging SDR module Antti Palosaari
2014-04-09 21:34   ` Luis R. Rodriguez
2014-04-09 21:32 ` [PATCHv2 2/2] rtl28xxu: silence error log about disabled rtl2832_sdr module Antti Palosaari

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.