Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] rtl28xxu: silence error log about disabled rtl2832_sdr module

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>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>

authored by

Antti Palosaari and committed by
Mauro Carvalho Chehab
beab1b53 1fd10f98

+23 -4
+23 -4
drivers/media/usb/dvb-usb-v2/rtl28xxu.c
··· 55 55 } 56 56 #endif 57 57 58 + #ifdef CONFIG_MEDIA_ATTACH 59 + #define dvb_attach_sdr(FUNCTION, ARGS...) ({ \ 60 + void *__r = NULL; \ 61 + typeof(&FUNCTION) __a = symbol_request(FUNCTION); \ 62 + if (__a) { \ 63 + __r = (void *) __a(ARGS); \ 64 + if (__r == NULL) \ 65 + symbol_put(FUNCTION); \ 66 + } \ 67 + __r; \ 68 + }) 69 + 70 + #else 71 + #define dvb_attach_sdr(FUNCTION, ARGS...) ({ \ 72 + FUNCTION(ARGS); \ 73 + }) 74 + 75 + #endif 76 + 58 77 static int rtl28xxu_disable_rc; 59 78 module_param_named(disable_rc, rtl28xxu_disable_rc, int, 0644); 60 79 MODULE_PARM_DESC(disable_rc, "disable RTL2832U remote controller"); ··· 946 927 adap->fe[0]->ops.tuner_ops.get_rf_strength; 947 928 948 929 /* attach SDR */ 949 - dvb_attach(rtl2832_sdr_attach, adap->fe[0], &d->i2c_adap, 930 + dvb_attach_sdr(rtl2832_sdr_attach, adap->fe[0], &d->i2c_adap, 950 931 &rtl28xxu_rtl2832_fc0012_config, NULL); 951 932 break; 952 933 case TUNER_RTL2832_FC0013: ··· 958 939 adap->fe[0]->ops.tuner_ops.get_rf_strength; 959 940 960 941 /* attach SDR */ 961 - dvb_attach(rtl2832_sdr_attach, adap->fe[0], &d->i2c_adap, 942 + dvb_attach_sdr(rtl2832_sdr_attach, adap->fe[0], &d->i2c_adap, 962 943 &rtl28xxu_rtl2832_fc0013_config, NULL); 963 944 break; 964 945 case TUNER_RTL2832_E4000: { ··· 989 970 i2c_set_adapdata(i2c_adap_internal, d); 990 971 991 972 /* attach SDR */ 992 - dvb_attach(rtl2832_sdr_attach, adap->fe[0], 973 + dvb_attach_sdr(rtl2832_sdr_attach, adap->fe[0], 993 974 i2c_adap_internal, 994 975 &rtl28xxu_rtl2832_e4000_config, sd); 995 976 } ··· 1020 1001 adap->fe[0]->ops.tuner_ops.get_rf_strength; 1021 1002 1022 1003 /* attach SDR */ 1023 - dvb_attach(rtl2832_sdr_attach, adap->fe[0], &d->i2c_adap, 1004 + dvb_attach_sdr(rtl2832_sdr_attach, adap->fe[0], &d->i2c_adap, 1024 1005 &rtl28xxu_rtl2832_r820t_config, NULL); 1025 1006 break; 1026 1007 case TUNER_RTL2832_R828D: