DVB USB should not depend on RC
PATCH 1/1 DVB USB should not depend on RC
I have a SheevaPlug which has no (human) input or output devices, with a DVB USB device connected with a mythtv backend running. The DVB USB drivers pull in the remote control tree, which is unneeded in this case; the mythtv client runs elsewhere (where RC is used). However the RC tree depends on input which also has dependants.
This can save a reasonable amount of memory:
$ ./scripts/bloat-o-meter vmlinux vmlinux-no-rc add/remove: 0/909 grow/shrink: 1/20 up/down: 4/-159171 (-159167)
Diff against current mainline.
---
drivers/media/dvb/dvb-usb/Kconfig +1 -1
@@ -1,6 +1,6 @@ config DVB_USB tristate "Support for various USB DVB devices" - depends on DVB_CORE && USB && I2C && RC_CORE + depends on DVB_CORE && USB && I2C help By enabling this you will be able to choose the various supported USB1.1 and USB2.0 DVB devices.
drivers/media/dvb/dvb-usb/a800.c +4 -0
@@ -37,6 +37,7 @@ static int a800_identify_state(struct usb_device *udev, struct dvb_usb_device_prreturn 0 ; } +#ifdef CONFIG_RC_CORE static struct rc_map_table rc_map_a800_table[] = { {0x0201 ,KEY_PROG1 },/* SOURCE */ { 0x0200, KEY_POWER }, /* POWER */
@@ -90,6 +91,7 @@ static int a800_rc_query(struct dvb_usb_device *d, u32 *event, int *state)deb_rc ("key: %x %x %x %x %x\n" ,key[0 ],key[1 ],key[2 ],key[3 ],key[4 ]); return 0; } +#endif /* USB Driver stuff */ static struct dvb_usb_device_properties a800_properties;
@@ -146,12 +148,14 @@ static struct dvb_usb_device_properties a800_properties = { .power_ctrl = a800_power_ctrl, .identify_state = a800_identify_state, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =DEFAULT_RC_INTERVAL , .rc_map_table = rc_map_a800_table, .rc_map_size = ARRAY_SIZE(rc_map_a800_table), .rc_query = a800_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,
drivers/media/dvb/dvb-usb/af9005.c +10 -0
@@ -42,10 +42,12 @@ MODULE_PARM_DESC(dump_eeprom, "dump contents of the eeprom.");DVB_DEFINE_MOD_OPT_ADAPTER_NR (adapter_nr);/* remote control decoder */ +#ifdef CONFIG_RC_CORE static int (*rc_decode) (struct dvb_usb_device *d,u8 *data,int len,u32 *event,int *state);static void *rc_keys;static int *rc_keys_size; +#endif u8 regmask[8 ] = {0x01 ,0x03 ,0x07 ,0x0f ,0x1f ,0x3f ,0x7f ,0xff };
@@ -819,6 +821,7 @@ static int af9005_frontend_attach(struct dvb_usb_adapter *adap)return 0 ; } +#ifdef CONFIG_RC_CORE static int af9005_rc_query (struct dvb_usb_device *d,u32 * event,int *state) {struct af9005_device_state *st = d->priv;
@@ -871,6 +874,7 @@ static int af9005_rc_query(struct dvb_usb_device *d, u32 * event, int *state) }return 0 ; } +#endif static int af9005_power_ctrl (struct dvb_usb_device *d,int onoff) {
@@ -1025,12 +1029,14 @@ static struct dvb_usb_device_properties af9005_properties = { .i2c_algo = &af9005_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =200 , .rc_map_table = NULL, .rc_map_size = 0, .rc_query = af9005_rc_query, }, +#endif .generic_bulk_ctrl_endpoint =2 , .generic_bulk_ctrl_endpoint_response = 1,
@@ -1069,6 +1075,7 @@ static int __init af9005_usb_module_init(void)err ("usb_register failed. (%d)" , result);return result; } +#ifdef CONFIG_RC_CORE rc_decode =symbol_request (af9005_rc_decode); rc_keys =symbol_request (rc_map_af9005_table); rc_keys_size =symbol_request (rc_map_af9005_table_size);
@@ -1079,12 +1086,14 @@ static int __init af9005_usb_module_init(void) af9005_properties.rc.legacy.rc_map_table = rc_keys; af9005_properties.rc.legacy.rc_map_size = *rc_keys_size; } +#endif return 0 ; } static void __exit af9005_usb_module_exit(void) { +#ifdef CONFIG_RC_CORE /* release rc decode symbols */ if (rc_decode !=NULL )symbol_put (af9005_rc_decode);
@@ -1092,6 +1101,7 @@ static void __exit af9005_usb_module_exit(void)symbol_put (rc_map_af9005_table);if (rc_keys_size !=NULL )symbol_put (rc_map_af9005_table_size); +#endif /* deregister this driver from the USB subsystem */ usb_deregister (&af9005_usb_driver); }
drivers/media/dvb/dvb-usb/af9015.c +14 -0
@@ -37,9 +37,11 @@static int dvb_usb_af9015_debug;module_param_named (debug, dvb_usb_af9015_debug, int,0644 );MODULE_PARM_DESC (debug,"set debugging level" DVB_USB_DEBUG_STATUS ); +#ifdef CONFIG_IR_CORE static int dvb_usb_af9015_remote;module_param_named (remote, dvb_usb_af9015_remote, int,0644 );MODULE_PARM_DESC (remote,"select remote" ); +#endif DVB_DEFINE_MOD_OPT_ADAPTER_NR (adapter_nr);static DEFINE_MUTEX (af9015_usb_mutex);
@@ -707,6 +709,7 @@ error:return ret; } +#ifdef CONFIG_IR_CORE struct af9015_rc_setup { unsigned int id; char *rc_codes;
@@ -804,6 +807,7 @@ static void af9015_set_remote_config(struct usb_device *udev, return; } +#endif static int af9015_read_config (struct usb_device *udev) {
@@ -826,6 +830,7 @@ static int af9015_read_config(struct usb_device *udev)if (ret) goto error; +#ifdef CONFIG_IR_CORE deb_info ("%s: IR mode:%d\n" , __func__, val);for (i =0 ; i < af9015_properties_count; i++) {if (val ==AF9015_IR_MODE_DISABLED )
@@ -833,6 +838,7 @@ static int af9015_read_config(struct usb_device *udev) else af9015_set_remote_config(udev, &af9015_properties[i]); } +#endif /* TS mode - one or two receivers */ req.addr =AF9015_EEPROM_TS_MODE ;
@@ -1012,6 +1018,7 @@ static int af9015_identify_state(struct usb_device *udev,return ret; } +#ifdef CONFIG_IR_CORE static int af9015_rc_query (struct dvb_usb_device *d) {struct af9015_state *priv = d->priv;
@@ -1060,6 +1067,7 @@ error: return ret; } +#endif /* init 2nd I2C adapter */ static int af9015_i2c_init (struct dvb_usb_device *d)
@@ -1343,6 +1351,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { .identify_state = af9015_identify_state, +#ifdef CONFIG_IR_CORE .rc.core = { .protocol =RC_TYPE_NEC , .module_name = "af9015",
@@ -1350,6 +1359,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { .rc_interval = AF9015_RC_INTERVAL, .allowed_protos = RC_TYPE_NEC, }, +#endif .i2c_algo = &af9015_i2c_algo,
@@ -1471,6 +1481,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { .identify_state = af9015_identify_state, +#ifdef CONFIG_IR_CORE .rc.core = { .protocol =RC_TYPE_NEC , .module_name = "af9015",
@@ -1478,6 +1489,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { .rc_interval = AF9015_RC_INTERVAL, .allowed_protos = RC_TYPE_NEC, }, +#endif .i2c_algo = &af9015_i2c_algo,
@@ -1583,6 +1595,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { .identify_state = af9015_identify_state, +#ifdef CONFIG_IR_CORE .rc.core = { .protocol =RC_TYPE_NEC , .module_name = "af9015",
@@ -1590,6 +1603,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { .rc_interval = AF9015_RC_INTERVAL, .allowed_protos = RC_TYPE_NEC, }, +#endif .i2c_algo = &af9015_i2c_algo,
drivers/media/dvb/dvb-usb/anysee.c +4 -0
@@ -374,6 +374,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)return 0 ; } +#ifdef CONFIG_RC_CORE static int anysee_rc_query (struct dvb_usb_device *d) {u8 buf[] = {CMD_GET_IR_CODE };
@@ -399,6 +400,7 @@ static int anysee_rc_query(struct dvb_usb_device *d) return 0; } +#endif /* DVB USB Driver stuff */ static struct dvb_usb_device_properties anysee_properties;
@@ -474,6 +476,7 @@ static struct dvb_usb_device_properties anysee_properties = { } }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_codes = RC_MAP_ANYSEE, .protocol = RC_TYPE_OTHER,
@@ -481,6 +484,7 @@ static struct dvb_usb_device_properties anysee_properties = { .rc_query = anysee_rc_query, .rc_interval = 250, /* windows driver uses 500ms */ }, +#endif .i2c_algo = &anysee_i2c_algo,
drivers/media/dvb/dvb-usb/az6027.c +4 -0
@@ -385,6 +385,7 @@ static int az6027_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)return ret; } +#ifdef CONFIG_RC_CORE /* keys for the enclosed remote control */ static struct rc_map_table rc_map_az6027_table[] = { { 0x01, KEY_1 },
@@ -396,6 +397,7 @@ static int az6027_rc_query(struct dvb_usb_device *d, u32 *event, int *state) {return 0 ; } +#endif /* int az6027_power_ctrl(struct dvb_usb_device *d, int onoff)
@@ -1126,12 +1128,14 @@ static struct dvb_usb_device_properties az6027_properties = {.power_ctrl = az6027_power_ctrl, .read_mac_address = az6027_read_mac_addr, */ +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_az6027_table, .rc_map_size = ARRAY_SIZE(rc_map_az6027_table), .rc_interval = 400, .rc_query = az6027_rc_query, }, +#endif .i2c_algo = &az6027_i2c_algo,
drivers/media/dvb/dvb-usb/cinergyT2-core.c +4 -0
@@ -84,6 +84,7 @@ static int cinergyt2_frontend_attach(struct dvb_usb_adapter *adap)return 0 ; } +#ifdef CONFIG_RC_CORE static struct rc_map_table rc_map_cinergyt2_table[] = { {0x0401 ,KEY_POWER }, { 0x0402, KEY_1 },
@@ -177,6 +178,7 @@ static int cinergyt2_rc_query(struct dvb_usb_device *d, u32 *event, int *state) }return 0 ; } +#endif static int cinergyt2_usb_probe (struct usb_interface *intf,const struct usb_device_id *id)
@@ -217,12 +219,14 @@ static struct dvb_usb_device_properties cinergyt2_properties = { .power_ctrl = cinergyt2_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 50, .rc_map_table = rc_map_cinergyt2_table, .rc_map_size = ARRAY_SIZE(rc_map_cinergyt2_table), .rc_query = cinergyt2_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 1,
drivers/media/dvb/dvb-usb/cxusb.c +29 -5
@@ -383,6 +383,7 @@ static int cxusb_d680_dmb_streaming_ctrl( } } +#ifdef CONFIG_RC_CORE static int cxusb_rc_query (struct dvb_usb_device *d,u32 *event,int *state) {struct rc_map_table *keymap = d->props.rc.legacy.rc_map_table;
@@ -585,6 +586,7 @@ static struct rc_map_table rc_map_d680_dmb_table[] = { { 0x0814, KEY_UNKNOWN }, /* Shuffle */ { 0x0025, KEY_POWER }, }; +#endif static int cxusb_dee1601_demod_init(struct dvb_frontend* fe) {
@@ -902,11 +904,6 @@ static int cxusb_dee1601_frontend_attach(struct dvb_usb_adapter *adap)static int cxusb_dualdig4_frontend_attach (struct dvb_usb_adapter *adap) { -u8 ircode[4 ]; -int i; -struct i2c_msg msg = { .addr =0x6b , .flags =I2C_M_RD , - .buf = ircode, .len =4 }; -if (usb_set_interface (adap->dev->udev,0 ,1 ) <0 )err ("set interface failed" );
@@ -922,6 +919,12 @@ static int cxusb_dualdig4_frontend_attach(struct dvb_usb_adapter *adap) &adap->dev->i2c_adap)) == NULL)return -EIO ; +#ifdef CONFIG_RC_CORE +int i; +u8 ircode[4 ]; +struct i2c_msg msg = { .addr =0x6b , .flags =I2C_M_RD , + .buf = ircode, .len =4 }; +/* try to determine if there is no IR decoder on the I2C bus */ for (i =0 ; adap->dev->props.rc.legacy.rc_map_table !=NULL && i <5 ; i++) {msleep (20 );
@@ -936,6 +939,7 @@ no_IR: break; } } +#endif return 0 ; }
@@ -1451,12 +1455,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgh064f_properties = { .i2c_algo = &cxusb_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 100, .rc_map_table = rc_map_dvico_portable_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_portable_table), .rc_query = cxusb_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,
@@ -1504,12 +1510,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_dee1601_properties = { .i2c_algo = &cxusb_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 150, .rc_map_table = rc_map_dvico_mce_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_mce_table), .rc_query = cxusb_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,
@@ -1565,12 +1573,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgz201_properties = { .i2c_algo = &cxusb_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_dvico_portable_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_portable_table), .rc_query = cxusb_rc_query, }, +#endif .generic_bulk_ctrl_endpoint =0x01 , .num_device_descs = 1,
@@ -1617,12 +1627,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_dtt7579_properties = { .i2c_algo = &cxusb_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 100, .rc_map_table = rc_map_dvico_portable_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_portable_table), .rc_query = cxusb_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,
@@ -1668,12 +1680,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_dualdig4_properties = { .generic_bulk_ctrl_endpoint = 0x01, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_dvico_mce_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_mce_table), .rc_query = cxusb_bluebird2_rc_query, }, +#endif .num_device_descs =1 , .devices = {
@@ -1718,12 +1732,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_properties = { .generic_bulk_ctrl_endpoint = 0x01, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_dvico_portable_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_portable_table), .rc_query = cxusb_bluebird2_rc_query, }, +#endif .num_device_descs =1 , .devices = {
@@ -1770,12 +1786,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_needsfirmware_prope .generic_bulk_ctrl_endpoint = 0x01, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_dvico_portable_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_portable_table), .rc_query = cxusb_rc_query, }, +#endif .num_device_descs =1 , .devices = {
@@ -1863,12 +1881,14 @@ struct dvb_usb_device_properties cxusb_bluebird_dualdig4_rev2_properties = { .generic_bulk_ctrl_endpoint = 0x01, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_dvico_mce_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_mce_table), .rc_query = cxusb_rc_query, }, +#endif .num_device_descs =1 , .devices = {
@@ -1913,12 +1933,14 @@ static struct dvb_usb_device_properties cxusb_d680_dmb_properties = { .generic_bulk_ctrl_endpoint = 0x01, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_d680_dmb_table, .rc_map_size = ARRAY_SIZE(rc_map_d680_dmb_table), .rc_query = cxusb_d680_dmb_rc_query, }, +#endif .num_device_descs =1 , .devices = {
@@ -1964,12 +1986,14 @@ static struct dvb_usb_device_properties cxusb_mygica_d689_properties = { .generic_bulk_ctrl_endpoint = 0x01, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_d680_dmb_table, .rc_map_size = ARRAY_SIZE(rc_map_d680_dmb_table), .rc_query = cxusb_d680_dmb_rc_query, }, +#endif .num_device_descs =1 , .devices = {
drivers/media/dvb/dvb-usb/dib0700_core.c +4 -0
@@ -471,6 +471,7 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)return dib0700_ctrl_wr (adap->dev, b,4 ); } +#ifdef CONFIG_RC_CORE int dib0700_change_protocol (struct rc_dev *rc,u64 rc_type) {struct dvb_usb_device *d = rc->priv;
@@ -645,6 +646,7 @@ int dib0700_rc_setup(struct dvb_usb_device *d) return ret; } +#endif static int dib0700_probe (struct usb_interface *intf,const struct usb_device_id *id)
@@ -667,6 +669,7 @@ static int dib0700_probe(struct usb_interface *intf, st->fw_version = fw_version; st->nb_packet_buffer_size = (u32 )nb_packet_buffer_size; +#ifdef CONFIG_RC_CORE /* Disable polling mode on newer firmwares */ if (st->fw_version >=0x10200 ) dev->props.rc.core.bulk_mode = true;
@@ -674,6 +677,7 @@ static int dib0700_probe(struct usb_interface *intf, dev->props.rc.core.bulk_mode = false;dib0700_rc_setup (dev); +#endif return 0 ; }
drivers/media/dvb/dvb-usb/dib0700_devices.c +31 -0
@@ -466,6 +466,8 @@ static int stk7700ph_tuner_attach(struct dvb_usb_adapter *adap) == NULL ? -ENODEV : 0; } +#ifdef CONFIG_RC_CORE +#define DEFAULT_RC_INTERVAL 50static u8 rc_request[] = {REQUEST_POLL_RC ,0 };
@@ -532,6 +534,7 @@ static int dib0700_rc_query_old_firmware(struct dvb_usb_device *d) }return 0 ; } +#endif /* STK7700P: Hauppauge Nova-T Stick, AVerMedia Volar */ static struct dibx000_agc_config stk7700p_7000m_mt2060_agc_config = {
@@ -1920,6 +1923,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { } }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,
@@ -1929,6 +1933,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 2,
@@ -1954,6 +1959,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,
@@ -1963,6 +1969,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 2,
@@ -2013,6 +2020,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,
@@ -2022,6 +2030,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1,
@@ -2054,6 +2063,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { } }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,
@@ -2064,6 +2074,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1,
@@ -2130,6 +2141,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,
@@ -2140,6 +2152,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1,
@@ -2174,6 +2187,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,
@@ -2184,6 +2198,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 2,
@@ -2242,6 +2257,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,
@@ -2252,6 +2268,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 2,
@@ -2289,6 +2306,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_NEC_TABLE,
@@ -2299,6 +2317,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1,
@@ -2358,6 +2377,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,
@@ -2368,6 +2388,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1, .adapter = {
@@ -2394,6 +2415,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,
@@ -2404,6 +2426,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1, .adapter = {
@@ -2462,6 +2485,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,
@@ -2472,6 +2496,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1, .adapter = {
@@ -2506,6 +2531,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_NEC_TABLE,
@@ -2516,6 +2542,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 2, .adapter = {
@@ -2555,6 +2582,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,
@@ -2565,6 +2593,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1, .adapter = {
@@ -2592,6 +2621,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,
@@ -2602,6 +2632,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, };
drivers/media/dvb/dvb-usb/dibusb-common.c +2 -0
@@ -324,6 +324,7 @@ int dibusb_dib3000mc_tuner_attach(struct dvb_usb_adapter *adap)EXPORT_SYMBOL (dibusb_dib3000mc_tuner_attach);#endif +#ifdef CONFIG_RC_CORE /* * common remote control stuff */
@@ -468,3 +469,4 @@ int dibusb_rc_query(struct dvb_usb_device *d, u32 *event, int *state) return 0; }EXPORT_SYMBOL (dibusb_rc_query); +#endif
drivers/media/dvb/dvb-usb/dibusb-mb.c +8 -0
@@ -211,12 +211,14 @@ static struct dvb_usb_device_properties dibusb1_1_properties = { .power_ctrl = dibusb_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_map_table = rc_map_dibusb_table, .rc_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */ .rc_query = dibusb_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,
@@ -297,12 +299,14 @@ static struct dvb_usb_device_properties dibusb1_1_an2235_properties = { }, .power_ctrl = dibusb_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_map_table = rc_map_dibusb_table, .rc_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */ .rc_query = dibusb_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,
@@ -363,12 +367,14 @@ static struct dvb_usb_device_properties dibusb2_0b_properties = { }, .power_ctrl = dibusb2_0_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_map_table = rc_map_dibusb_table, .rc_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */ .rc_query = dibusb_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,
@@ -422,12 +428,14 @@ static struct dvb_usb_device_properties artec_t1_usb2_properties = { }, .power_ctrl = dibusb2_0_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_map_table = rc_map_dibusb_table, .rc_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */ .rc_query = dibusb_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,
drivers/media/dvb/dvb-usb/dibusb-mc.c +2 -0
@@ -81,12 +81,14 @@ static struct dvb_usb_device_properties dibusb_mc_properties = { }, .power_ctrl = dibusb2_0_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_map_table = rc_map_dibusb_table, .rc_map_size = 111, /* FIXME */ .rc_query = dibusb_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,
drivers/media/dvb/dvb-usb/digitv.c +4 -0
@@ -161,6 +161,7 @@ static int digitv_tuner_attach(struct dvb_usb_adapter *adap)return 0 ; } +#ifdef CONFIG_RC_CORE static struct rc_map_table rc_map_digitv_table[] = { {0x5f55 ,KEY_0 }, { 0x6f55, KEY_1 },
@@ -251,6 +252,7 @@ static int digitv_rc_query(struct dvb_usb_device *d, u32 *event, int *state)deb_rc ("key: %x %x %x %x %x\n" ,key[0 ],key[1 ],key[2 ],key[3 ],key[4 ]); return 0; } +#endif /* DVB USB Driver stuff */ static struct dvb_usb_device_properties digitv_properties;
@@ -310,12 +312,14 @@ static struct dvb_usb_device_properties digitv_properties = { }, .identify_state = digitv_identify_state, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 1000, .rc_map_table = rc_map_digitv_table, .rc_map_size = ARRAY_SIZE(rc_map_digitv_table), .rc_query = digitv_rc_query, }, +#endif .i2c_algo = &digitv_i2c_algo,
drivers/media/dvb/dvb-usb/dtt200u.c +10 -0
@@ -55,6 +55,7 @@ static int dtt200u_pid_filter(struct dvb_usb_adapter *adap, int index, u16 pid,return dvb_usb_generic_write (adap->dev, b_pid,4 ); } +#ifdef CONFIG_RC_CORE /* remote control */ /* key list for the tiny remote control (Yakumo, don't know about the others) */ static struct rc_map_table rc_map_dtt200u_table[] = {
@@ -87,6 +88,7 @@ static int dtt200u_rc_query(struct dvb_usb_device *d, u32 *event, int *state)deb_info ("key: %x %x %x %x %x\n" ,key[0 ],key[1 ],key[2 ],key[3 ],key[4 ]); return 0; } +#endif static int dtt200u_frontend_attach (struct dvb_usb_adapter *adap) {
@@ -161,12 +163,14 @@ static struct dvb_usb_device_properties dtt200u_properties = { }, .power_ctrl = dtt200u_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 300, .rc_map_table = rc_map_dtt200u_table, .rc_map_size = ARRAY_SIZE(rc_map_dtt200u_table), .rc_query = dtt200u_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,
@@ -208,12 +212,14 @@ static struct dvb_usb_device_properties wt220u_properties = { }, .power_ctrl = dtt200u_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 300, .rc_map_table = rc_map_dtt200u_table, .rc_map_size = ARRAY_SIZE(rc_map_dtt200u_table), .rc_query = dtt200u_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,
@@ -255,12 +261,14 @@ static struct dvb_usb_device_properties wt220u_fc_properties = { }, .power_ctrl = dtt200u_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 300, .rc_map_table = rc_map_dtt200u_table, .rc_map_size = ARRAY_SIZE(rc_map_dtt200u_table), .rc_query = dtt200u_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,
@@ -302,12 +310,14 @@ static struct dvb_usb_device_properties wt220u_zl0353_properties = { }, .power_ctrl = dtt200u_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 300, .rc_map_table = rc_map_dtt200u_table, .rc_map_size = ARRAY_SIZE(rc_map_dtt200u_table), .rc_query = dtt200u_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,
drivers/media/dvb/dvb-usb/dvb-usb-remote.c +5 -0
@@ -8,6 +8,7 @@#include "dvb-usb-common.h" #include <linux/usb/input.h> +#ifdef CONFIG_RC_CORE static int legacy_dvb_usb_getkeycode (struct input_dev *dev,unsigned int scancode,unsigned int *keycode) {
@@ -362,3 +363,7 @@ int dvb_usb_nec_rc_key_to_event(struct dvb_usb_device *d, return 0; }EXPORT_SYMBOL (dvb_usb_nec_rc_key_to_event); +#else +int dvb_usb_remote_init (struct dvb_usb_device *d) {return 0 ; } +int dvb_usb_remote_exit (struct dvb_usb_device *d) {return 0 ; } +#endif
drivers/media/dvb/dvb-usb/dvb-usb.h +2 -0
@@ -270,11 +270,13 @@ struct dvb_usb_device_properties {int (*identify_state) (struct usb_device *,struct dvb_usb_device_properties *,struct dvb_usb_device_description **,int *); +#ifdef CONFIG_RC_CORE struct {enum dvb_usb_mode mode;/* Drivers shouldn't touch on it */ struct dvb_rc_legacy legacy;struct dvb_rc core; } rc; +#endif struct i2c_algorithm *i2c_algo;
drivers/media/dvb/dvb-usb/dw2102.c +18 -1
@@ -83,11 +83,12 @@ static int dvb_usb_dw2102_debug;module_param_named (debug, dvb_usb_dw2102_debug, int,0644 );MODULE_PARM_DESC (debug,"set debugging level (1=info 2=xfer 4=rc(or-able))." DVB_USB_DEBUG_STATUS ); - +#ifdef CONFIG_RC_CORE /* keymaps */ static int ir_keymap;module_param_named (keymap, ir_keymap, int,0644 );MODULE_PARM_DESC (keymap,"set keymap 0=default 1=dvbworld 2=tevii 3=tbs ..." ); +#endif /* demod probe */ static int demod_probe =1 ;
@@ -948,6 +949,7 @@ static int dw3101_tuner_attach(struct dvb_usb_adapter *adap)return 0 ; } +#ifdef CONFIG_RC_CORE static struct rc_map_table rc_map_dw210x_table[] = { {0xf80a ,KEY_Q },/*power*/ { 0xf80c, KEY_M }, /*mute*/
@@ -1113,6 +1115,7 @@ static int dw2102_rc_query(struct dvb_usb_device *d, u32 *event, int *state)return 0 ; } +#endif static struct usb_device_id dw2102_table[] = { {USB_DEVICE (USB_VID_CYPRESS ,USB_PID_DW2102 )},
@@ -1185,14 +1188,18 @@ static int dw2102_load_firmware(struct usb_device *dev,/* init registers */ switch (dev->descriptor.idProduct) {case USB_PID_PROF_1100 : +#ifdef CONFIG_RC_CORE s6x0_properties.rc.legacy.rc_map_table = rc_map_tbs_table; s6x0_properties.rc.legacy.rc_map_size =ARRAY_SIZE (rc_map_tbs_table); +#endif break ;case USB_PID_TEVII_S650 : +#ifdef CONFIG_RC_CORE dw2104_properties.rc.legacy.rc_map_table = rc_map_tevii_table; dw2104_properties.rc.legacy.rc_map_size =ARRAY_SIZE (rc_map_tevii_table); +#endif case USB_PID_DW2104 : reset =1 ; dw210x_op_rw(dev, 0xc4, 0x0000, 0, &reset, 1,
@@ -1256,12 +1263,14 @@ static struct dvb_usb_device_properties dw2102_properties = { .i2c_algo = &dw2102_serit_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_dw210x_table, .rc_map_size = ARRAY_SIZE(rc_map_dw210x_table), .rc_interval = 150, .rc_query = dw2102_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x81,/* parameter for the MPEG2-data transfer */
@@ -1309,12 +1318,14 @@ static struct dvb_usb_device_properties dw2104_properties = { .no_reconnect = 1, .i2c_algo = &dw2104_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_dw210x_table, .rc_map_size = ARRAY_SIZE(rc_map_dw210x_table), .rc_interval = 150, .rc_query = dw2102_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x81,/* parameter for the MPEG2-data transfer */
@@ -1358,12 +1369,14 @@ static struct dvb_usb_device_properties dw3101_properties = { .no_reconnect = 1, .i2c_algo = &dw3101_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_dw210x_table, .rc_map_size = ARRAY_SIZE(rc_map_dw210x_table), .rc_interval = 150, .rc_query = dw2102_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x81,/* parameter for the MPEG2-data transfer */
@@ -1403,12 +1416,14 @@ static struct dvb_usb_device_properties s6x0_properties = { .no_reconnect = 1, .i2c_algo = &s6x0_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_tevii_table, .rc_map_size = ARRAY_SIZE(rc_map_tevii_table), .rc_interval = 150, .rc_query = dw2102_rc_query, }, +#endif .generic_bulk_ctrl_endpoint =0x81 , .num_adapters = 1,
@@ -1468,8 +1483,10 @@ static int dw2102_probe(struct usb_interface *intf,/* fill only different fields */ p7500->firmware ="dvb-usb-p7500.fw" ; p7500->devices[0 ] = d7500; +#ifdef CONFIG_RC_CORE p7500->rc.legacy.rc_map_table = rc_map_tbs_table; p7500->rc.legacy.rc_map_size =ARRAY_SIZE (rc_map_tbs_table); +#endif p7500->adapter->frontend_attach = prof_7500_frontend_attach; if (0 == dvb_usb_device_init(intf, &dw2102_properties,
drivers/media/dvb/dvb-usb/lmedm04.c +9 -0
@@ -193,12 +193,14 @@ static int lme2510_stream_restart(struct dvb_usb_device *d) }static int lme2510_remote_keypress (struct dvb_usb_adapter *adap,u16 keypress) { +#ifdef CONFIG_RC_CORE struct dvb_usb_device *d = adap->dev;deb_info (1 ,"INT Key Keypress =%04x" , keypress);if (keypress >0 )rc_keydown (d->rc_dev, keypress,0 ); +#endif return 0 ; }
@@ -554,6 +556,8 @@ static int lme2510_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)static int lme2510_int_service (struct dvb_usb_adapter *adap) { +int ret; +#ifdef CONFIG_RC_CORE struct dvb_usb_device *d = adap->dev;struct rc_dev *rc;int ret;
@@ -579,14 +583,17 @@ static int lme2510_int_service(struct dvb_usb_adapter *adap) return ret; } d->rc_dev = rc; +#endif /* Start the Interupt */ ret =lme2510_int_read (adap); +#ifdef CONFIG_RC_CORE if (ret <0 ) {rc_unregister_device (rc);info ("INT Unable to start Interupt Service" );return -ENODEV ; } +#endif return 0 ; }
@@ -1061,7 +1068,9 @@ void *lme2510_exit_int(struct dvb_usb_device *d)usb_free_coherent (d->udev,5000 , st->buffer, st->lme_urb->transfer_dma);info ("Interupt Service Stopped" ); +#ifdef CONFIG_RC_CORE rc_unregister_device (d->rc_dev); +#endif info ("Remote Stopped" ); }return buffer;
drivers/media/dvb/dvb-usb/m920x.c +12 -0
@@ -68,6 +68,7 @@ static int m920x_init(struct dvb_usb_device *d, struct m920x_inits *rc_seq)int ret =0 , i, epi, flags =0 ;int adap_enabled[M9206_MAX_ADAPTERS ] = {0 }; +#ifdef CONFIG_RC_CORE /* Remote controller init. */ if (d->props.rc.legacy.rc_query) {deb ("Initialising remote control\n" );
@@ -84,6 +85,7 @@ static int m920x_init(struct dvb_usb_device *d, struct m920x_inits *rc_seq) deb("Initialising remote control success\n"); } +#endif for (i =0 ; i < d->props.num_adapters; i++) flags |= d->adapter[i].props.caps;
@@ -130,6 +132,7 @@ static int m920x_init_ep(struct usb_interface *intf) alt->desc.bAlternateSetting); } +#ifdef CONFIG_RC_CORE static int m920x_rc_query (struct dvb_usb_device *d,u32 *event,int *state) {struct m920x_state *m = d->priv;
@@ -192,6 +195,7 @@ static int m920x_rc_query(struct dvb_usb_device *d, u32 *event, int *state) return ret; } +#endif /* I2C */ static int m920x_i2c_xfer (struct i2c_adapter *adap,struct i2c_msg msg[],int num)
@@ -588,6 +592,7 @@ static struct m920x_inits pinnacle310e_init[] = { { }/* terminating entry */ }; +#ifdef CONFIG_RC_CORE /* ir keymaps */ static struct rc_map_table rc_map_megasky_table[] = { { 0x0012, KEY_POWER },
@@ -683,6 +688,7 @@ static struct rc_map_table rc_map_pinnacle310e_table[] = { { 0x5e, KEY_SAT }, /* Yellow */ { 0x5f, KEY_PLAYER }, /* Blue */ }; +#endif /* DVB USB Driver stuff */ static struct dvb_usb_device_properties megasky_properties;
@@ -784,12 +790,14 @@ static struct dvb_usb_device_properties megasky_properties = { .firmware = "dvb-usb-megasky-02.fw", .download_firmware = m920x_firmware_download, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_megasky_table, .rc_map_size = ARRAY_SIZE(rc_map_megasky_table), .rc_query = m920x_rc_query, }, +#endif .size_of_priv = sizeof(struct m920x_state),
@@ -887,12 +895,14 @@ static struct dvb_usb_device_properties tvwalkertwin_properties = { .firmware = "dvb-usb-tvwalkert.fw", .download_firmware = m920x_firmware_download, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_tvwalkertwin_table, .rc_map_size = ARRAY_SIZE(rc_map_tvwalkertwin_table), .rc_query = m920x_rc_query, }, +#endif .size_of_priv = sizeof(struct m920x_state),
@@ -996,12 +1006,14 @@ static struct dvb_usb_device_properties pinnacle_pctv310e_properties = { .usb_ctrl = DEVICE_SPECIFIC, .download_firmware =NULL , +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_pinnacle310e_table, .rc_map_size = ARRAY_SIZE(rc_map_pinnacle310e_table), .rc_query = m920x_rc_query, }, +#endif .size_of_priv = sizeof(struct m920x_state),
drivers/media/dvb/dvb-usb/nova-t-usb2.c +4 -0
@@ -20,6 +20,7 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); #define deb_rc(args...) dprintk(debug,0x01,args) #define deb_ee(args...) dprintk(debug,0x02,args) +#ifdef CONFIG_RC_CORE /* Hauppauge NOVA-T USB2 keys */ static struct rc_map_table rc_map_haupp_table[] = { { 0x1e00, KEY_0 },
@@ -119,6 +120,7 @@ static int nova_t_rc_query(struct dvb_usb_device *d, u32 *event, int *state) return 0; } +#endif static int nova_t_read_mac_address (struct dvb_usb_device *d,u8 mac[6 ]) {
@@ -195,12 +197,14 @@ static struct dvb_usb_device_properties nova_t_properties = { .power_ctrl = dibusb2_0_power_ctrl, .read_mac_address = nova_t_read_mac_address, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_haupp_table, .rc_map_size = ARRAY_SIZE(rc_map_haupp_table), .rc_query = nova_t_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,
drivers/media/dvb/dvb-usb/opera1.c +4 -0
@@ -331,6 +331,7 @@ static int opera1_pid_filter_control(struct dvb_usb_adapter *adap, int onoff)return 0 ; } +#ifdef CONFIG_RC_CORE static struct rc_map_table rc_map_opera1_table[] = { {0x5fa0 ,KEY_1 }, {0x51af, KEY_2},
@@ -418,6 +419,7 @@ static int opera1_rc_query(struct dvb_usb_device *dev, u32 * event, int *state) *state =REMOTE_NO_KEY_PRESSED ;return 0 ; } +#endif static struct usb_device_id opera1_table[] = { {USB_DEVICE (USB_VID_CYPRESS ,USB_PID_OPERA1_COLD )},
@@ -496,12 +498,14 @@ static struct dvb_usb_device_properties opera1_properties = { .power_ctrl = opera1_power_ctrl, .i2c_algo = &opera1_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_opera1_table, .rc_map_size = ARRAY_SIZE(rc_map_opera1_table), .rc_interval = 200, .rc_query = opera1_rc_query, }, +#endif .read_mac_address = opera1_read_mac_address, .generic_bulk_ctrl_endpoint = 0x00,/* parameter for the MPEG2-data transfer */
drivers/media/dvb/dvb-usb/ttusb2.c +5 -1
@@ -129,6 +129,8 @@ static struct i2c_algorithm ttusb2_i2c_algo = { .functionality = ttusb2_i2c_func, }; +#ifdef CONFIG_RC_CORE +/* command to poll IR receiver (copied from pctv452e.c) */ #define CMD_GET_IR_CODE 0x1b
@@ -154,7 +156,7 @@ static int tt3650_rc_query(struct dvb_usb_device *d)return 0 ; } - +#endif /* Callbacks for DVB USB */ static int ttusb2_identify_state (struct usb_device *udev, struct
@@ -373,12 +375,14 @@ static struct dvb_usb_device_properties ttusb2_properties_ct3650 = { .size_of_priv = sizeof(struct ttusb2_state), +#ifdef CONFIG_RC_OCRE .rc.core = { .rc_interval =150 ,/* Less than IR_KEYPRESS_TIMEOUT */ .rc_codes = RC_MAP_TT_1500, .rc_query = tt3650_rc_query, .allowed_protos = RC_TYPE_UNKNOWN, }, +#endif .num_adapters =1 , .adapter = {
drivers/media/dvb/dvb-usb/vp702x.c +4 -1
@@ -173,6 +173,7 @@ static int vp702x_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)return 0 ; } +#ifdef CONFIG_RC_CORE /* keys for the enclosed remote control */ static struct rc_map_table rc_map_vp702x_table[] = { { 0x0001, KEY_1 },
@@ -205,7 +206,7 @@ static int vp702x_rc_query(struct dvb_usb_device *d, u32 *event, int *state) }return 0 ; } - +#endif static int vp702x_read_mac_addr (struct dvb_usb_device *d,u8 mac[6 ]) {
@@ -283,12 +284,14 @@ static struct dvb_usb_device_properties vp702x_properties = { }, .read_mac_address = vp702x_read_mac_addr, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_vp702x_table, .rc_map_size = ARRAY_SIZE(rc_map_vp702x_table), .rc_interval = 400, .rc_query = vp702x_rc_query, }, +#endif .num_device_descs =1 , .devices = {
drivers/media/dvb/dvb-usb/vp7045.c +4 -0
@@ -95,6 +95,7 @@ static int vp7045_power_ctrl(struct dvb_usb_device *d, int onoff)return vp7045_usb_op (d,SET_TUNER_POWER ,&v,1 ,NULL ,0 ,150 ); } +#ifdef CONFIG_RC_CORE /* remote control stuff */ /* The keymapping struct. Somehow this should be loaded to the driver, but
@@ -173,6 +174,7 @@ static int vp7045_rc_query(struct dvb_usb_device *d, u32 *event, int *state) }return 0 ; } +#endif static int vp7045_read_eeprom (struct dvb_usb_device *d,u8 *buf,int len,int offset) {
@@ -259,12 +261,14 @@ static struct dvb_usb_device_properties vp7045_properties = { .power_ctrl = vp7045_power_ctrl, .read_mac_address = vp7045_read_mac_addr, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =400 , .rc_map_table = rc_map_vp7045_table, .rc_map_size = ARRAY_SIZE(rc_map_vp7045_table), .rc_query = vp7045_rc_query, }, +#endif .num_device_descs =2 , .devices = {
Quoted 6 lines · Sean Young
I have a SheevaPlug which has no (human) input or output devices, with a DVB USB device connected with a mythtv backend running. The DVB USB drivers pull in the remote control tree, which is unneeded in this case; the mythtv client runs elsewhere (where RC is used). However the RC tree depends on input which also has dependants.
Quoted 7 lines
This can save a reasonable amount of memory:
$ ./scripts/bloat-o-meter vmlinux vmlinux-no-rc add/remove: 0/909 grow/shrink: 1/20 up/down: 4/-159171 (-159167)Diff against current mainline.
Signed-off-by Sean Young <[email protected]>
I'm one of those people with a usb device that doesn't have rc/input capabilities and would like to see this dependency fixed. Has anyone confirmed the patch is working?
Hi Sean,
Em 21-02-2011 18:49, Sean Young escreveu:
Quoted 9 lines
I have a SheevaPlug which has no (human) input or output devices, with a DVB USB device connected with a mythtv backend running. The DVB USB drivers pull in the remote control tree, which is unneeded in this case; the mythtv client runs elsewhere (where RC is used). However the RC tree depends on input which also has dependants.
This can save a reasonable amount of memory:
$ ./scripts/bloat-o-meter vmlinux vmlinux-no-rc add/remove: 0/909 grow/shrink: 1/20 up/down: 4/-159171 (-159167)
Sorry for a late review. The problem with this patch is that it is too much intrusive. It is a bad practice to fill the code with lots of #ifdef's, because it makes harder to analyse the source code and find bugs there.
Also, while it saves some memory, this strategy forces that all DVB drivers to have a check for RC_CORE, being very easy that someone would forget about that, causing compilation breakages if this option is disabled.
The proper way is to have a separate module for RC and just making such module as dependent of RC_CORE.
Mauro.
Quoted 1,545 lines
Diff against current mainline.
Signed-off-by Sean Young <[email protected]>---
drivers/media/dvb/dvb-usb/Kconfig +1
-1@@ -1,6 +1,6 @@ config DVB_USB tristate "Support for various USB DVB devices" - depends on DVB_CORE && USB && I2C && RC_CORE + depends on DVB_CORE && USB && I2C help By enabling this you will be able to choose the various supported USB1.1 and USB2.0 DVB devices.drivers/media/dvb/dvb-usb/a800.c +4
-0@@ -37,6 +37,7 @@ static int a800_identify_state(struct usb_device *udev, struct dvb_usb_device_prreturn 0 ; } +#ifdef CONFIG_RC_CORE static struct rc_map_table rc_map_a800_table[] = { {0x0201 ,KEY_PROG1 },/* SOURCE */ { 0x0200, KEY_POWER }, /* POWER */@@ -90,6 +91,7 @@ static int a800_rc_query(struct dvb_usb_device *d, u32 *event, int *state)deb_rc ("key: %x %x %x %x %x\n" ,key[0 ],key[1 ],key[2 ],key[3 ],key[4 ]); return 0; } +#endif /* USB Driver stuff */ static struct dvb_usb_device_properties a800_properties;@@ -146,12 +148,14 @@ static struct dvb_usb_device_properties a800_properties = { .power_ctrl = a800_power_ctrl, .identify_state = a800_identify_state, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =DEFAULT_RC_INTERVAL , .rc_map_table = rc_map_a800_table, .rc_map_size = ARRAY_SIZE(rc_map_a800_table), .rc_query = a800_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,drivers/media/dvb/dvb-usb/af9005.c +10
-0@@ -42,10 +42,12 @@ MODULE_PARM_DESC(dump_eeprom, "dump contents of the eeprom.");DVB_DEFINE_MOD_OPT_ADAPTER_NR (adapter_nr);/* remote control decoder */ +#ifdef CONFIG_RC_CORE static int (*rc_decode) (struct dvb_usb_device *d,u8 *data,int len,u32 *event,int *state);static void *rc_keys;static int *rc_keys_size; +#endif u8 regmask[8 ] = {0x01 ,0x03 ,0x07 ,0x0f ,0x1f ,0x3f ,0x7f ,0xff };@@ -819,6 +821,7 @@ static int af9005_frontend_attach(struct dvb_usb_adapter *adap)return 0 ; } +#ifdef CONFIG_RC_CORE static int af9005_rc_query (struct dvb_usb_device *d,u32 * event,int *state) {struct af9005_device_state *st = d->priv;@@ -871,6 +874,7 @@ static int af9005_rc_query(struct dvb_usb_device *d, u32 * event, int *state) }return 0 ; } +#endif static int af9005_power_ctrl (struct dvb_usb_device *d,int onoff) {@@ -1025,12 +1029,14 @@ static struct dvb_usb_device_properties af9005_properties = { .i2c_algo = &af9005_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =200 , .rc_map_table = NULL, .rc_map_size = 0, .rc_query = af9005_rc_query, }, +#endif .generic_bulk_ctrl_endpoint =2 , .generic_bulk_ctrl_endpoint_response = 1,@@ -1069,6 +1075,7 @@ static int __init af9005_usb_module_init(void)err ("usb_register failed. (%d)" , result);return result; } +#ifdef CONFIG_RC_CORE rc_decode =symbol_request (af9005_rc_decode); rc_keys =symbol_request (rc_map_af9005_table); rc_keys_size =symbol_request (rc_map_af9005_table_size);@@ -1079,12 +1086,14 @@ static int __init af9005_usb_module_init(void) af9005_properties.rc.legacy.rc_map_table = rc_keys; af9005_properties.rc.legacy.rc_map_size = *rc_keys_size; } +#endif return 0 ; } static void __exit af9005_usb_module_exit(void) { +#ifdef CONFIG_RC_CORE /* release rc decode symbols */ if (rc_decode !=NULL )symbol_put (af9005_rc_decode);@@ -1092,6 +1101,7 @@ static void __exit af9005_usb_module_exit(void)symbol_put (rc_map_af9005_table);if (rc_keys_size !=NULL )symbol_put (rc_map_af9005_table_size); +#endif /* deregister this driver from the USB subsystem */ usb_deregister (&af9005_usb_driver); }drivers/media/dvb/dvb-usb/af9015.c +14
-0@@ -37,9 +37,11 @@static int dvb_usb_af9015_debug;module_param_named (debug, dvb_usb_af9015_debug, int,0644 );MODULE_PARM_DESC (debug,"set debugging level" DVB_USB_DEBUG_STATUS ); +#ifdef CONFIG_IR_CORE static int dvb_usb_af9015_remote;module_param_named (remote, dvb_usb_af9015_remote, int,0644 );MODULE_PARM_DESC (remote,"select remote" ); +#endif DVB_DEFINE_MOD_OPT_ADAPTER_NR (adapter_nr);static DEFINE_MUTEX (af9015_usb_mutex);@@ -707,6 +709,7 @@ error:return ret; } +#ifdef CONFIG_IR_CORE struct af9015_rc_setup { unsigned int id; char *rc_codes;@@ -804,6 +807,7 @@ static void af9015_set_remote_config(struct usb_device *udev, return; } +#endif static int af9015_read_config (struct usb_device *udev) {@@ -826,6 +830,7 @@ static int af9015_read_config(struct usb_device *udev)if (ret) goto error; +#ifdef CONFIG_IR_CORE deb_info ("%s: IR mode:%d\n" , __func__, val);for (i =0 ; i < af9015_properties_count; i++) {if (val ==AF9015_IR_MODE_DISABLED )@@ -833,6 +838,7 @@ static int af9015_read_config(struct usb_device *udev) else af9015_set_remote_config(udev, &af9015_properties[i]); } +#endif /* TS mode - one or two receivers */ req.addr =AF9015_EEPROM_TS_MODE ;@@ -1012,6 +1018,7 @@ static int af9015_identify_state(struct usb_device *udev,return ret; } +#ifdef CONFIG_IR_CORE static int af9015_rc_query (struct dvb_usb_device *d) {struct af9015_state *priv = d->priv;@@ -1060,6 +1067,7 @@ error: return ret; } +#endif /* init 2nd I2C adapter */ static int af9015_i2c_init (struct dvb_usb_device *d)@@ -1343,6 +1351,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { .identify_state = af9015_identify_state, +#ifdef CONFIG_IR_CORE .rc.core = { .protocol =RC_TYPE_NEC , .module_name = "af9015",@@ -1350,6 +1359,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { .rc_interval = AF9015_RC_INTERVAL, .allowed_protos = RC_TYPE_NEC, }, +#endif .i2c_algo = &af9015_i2c_algo,@@ -1471,6 +1481,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { .identify_state = af9015_identify_state, +#ifdef CONFIG_IR_CORE .rc.core = { .protocol =RC_TYPE_NEC , .module_name = "af9015",@@ -1478,6 +1489,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { .rc_interval = AF9015_RC_INTERVAL, .allowed_protos = RC_TYPE_NEC, }, +#endif .i2c_algo = &af9015_i2c_algo,@@ -1583,6 +1595,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { .identify_state = af9015_identify_state, +#ifdef CONFIG_IR_CORE .rc.core = { .protocol =RC_TYPE_NEC , .module_name = "af9015",@@ -1590,6 +1603,7 @@ static struct dvb_usb_device_properties af9015_properties[] = { .rc_interval = AF9015_RC_INTERVAL, .allowed_protos = RC_TYPE_NEC, }, +#endif .i2c_algo = &af9015_i2c_algo,drivers/media/dvb/dvb-usb/anysee.c +4
-0@@ -374,6 +374,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)return 0 ; } +#ifdef CONFIG_RC_CORE static int anysee_rc_query (struct dvb_usb_device *d) {u8 buf[] = {CMD_GET_IR_CODE };@@ -399,6 +400,7 @@ static int anysee_rc_query(struct dvb_usb_device *d) return 0; } +#endif /* DVB USB Driver stuff */ static struct dvb_usb_device_properties anysee_properties;@@ -474,6 +476,7 @@ static struct dvb_usb_device_properties anysee_properties = { } }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_codes = RC_MAP_ANYSEE, .protocol = RC_TYPE_OTHER,@@ -481,6 +484,7 @@ static struct dvb_usb_device_properties anysee_properties = { .rc_query = anysee_rc_query, .rc_interval = 250, /* windows driver uses 500ms */ }, +#endif .i2c_algo = &anysee_i2c_algo,drivers/media/dvb/dvb-usb/az6027.c +4
-0@@ -385,6 +385,7 @@ static int az6027_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)return ret; } +#ifdef CONFIG_RC_CORE /* keys for the enclosed remote control */ static struct rc_map_table rc_map_az6027_table[] = { { 0x01, KEY_1 },@@ -396,6 +397,7 @@ static int az6027_rc_query(struct dvb_usb_device *d, u32 *event, int *state) {return 0 ; } +#endif /* int az6027_power_ctrl(struct dvb_usb_device *d, int onoff) @@ -1126,12 +1128,14 @@ static struct dvb_usb_device_properties az6027_properties = {.power_ctrl = az6027_power_ctrl, .read_mac_address = az6027_read_mac_addr, */ +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_az6027_table, .rc_map_size = ARRAY_SIZE(rc_map_az6027_table), .rc_interval = 400, .rc_query = az6027_rc_query, }, +#endif .i2c_algo = &az6027_i2c_algo,drivers/media/dvb/dvb-usb/cinergyT2-core.c +4
-0@@ -84,6 +84,7 @@ static int cinergyt2_frontend_attach(struct dvb_usb_adapter *adap)return 0 ; } +#ifdef CONFIG_RC_CORE static struct rc_map_table rc_map_cinergyt2_table[] = { {0x0401 ,KEY_POWER }, { 0x0402, KEY_1 },@@ -177,6 +178,7 @@ static int cinergyt2_rc_query(struct dvb_usb_device *d, u32 *event, int *state) }return 0 ; } +#endif static int cinergyt2_usb_probe (struct usb_interface *intf,const struct usb_device_id *id)@@ -217,12 +219,14 @@ static struct dvb_usb_device_properties cinergyt2_properties = { .power_ctrl = cinergyt2_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 50, .rc_map_table = rc_map_cinergyt2_table, .rc_map_size = ARRAY_SIZE(rc_map_cinergyt2_table), .rc_query = cinergyt2_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 1,drivers/media/dvb/dvb-usb/cxusb.c +29
-5@@ -383,6 +383,7 @@ static int cxusb_d680_dmb_streaming_ctrl( } } +#ifdef CONFIG_RC_CORE static int cxusb_rc_query (struct dvb_usb_device *d,u32 *event,int *state) {struct rc_map_table *keymap = d->props.rc.legacy.rc_map_table;@@ -585,6 +586,7 @@ static struct rc_map_table rc_map_d680_dmb_table[] = { { 0x0814, KEY_UNKNOWN }, /* Shuffle */ { 0x0025, KEY_POWER }, }; +#endif static int cxusb_dee1601_demod_init(struct dvb_frontend* fe) {@@ -902,11 +904,6 @@ static int cxusb_dee1601_frontend_attach(struct dvb_usb_adapter *adap)static int cxusb_dualdig4_frontend_attach (struct dvb_usb_adapter *adap) { -u8 ircode[4 ]; -int i; -struct i2c_msg msg = { .addr =0x6b , .flags =I2C_M_RD , - .buf = ircode, .len =4 }; -if (usb_set_interface (adap->dev->udev,0 ,1 ) <0 )err ("set interface failed" );@@ -922,6 +919,12 @@ static int cxusb_dualdig4_frontend_attach(struct dvb_usb_adapter *adap) &adap->dev->i2c_adap)) == NULL)return -EIO ; +#ifdef CONFIG_RC_CORE +int i; +u8 ircode[4 ]; +struct i2c_msg msg = { .addr =0x6b , .flags =I2C_M_RD , + .buf = ircode, .len =4 }; +/* try to determine if there is no IR decoder on the I2C bus */ for (i =0 ; adap->dev->props.rc.legacy.rc_map_table !=NULL && i <5 ; i++) {msleep (20 );@@ -936,6 +939,7 @@ no_IR: break; } } +#endif return 0 ; }@@ -1451,12 +1455,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgh064f_properties = { .i2c_algo = &cxusb_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 100, .rc_map_table = rc_map_dvico_portable_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_portable_table), .rc_query = cxusb_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,@@ -1504,12 +1510,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_dee1601_properties = { .i2c_algo = &cxusb_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 150, .rc_map_table = rc_map_dvico_mce_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_mce_table), .rc_query = cxusb_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,@@ -1565,12 +1573,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgz201_properties = { .i2c_algo = &cxusb_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_dvico_portable_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_portable_table), .rc_query = cxusb_rc_query, }, +#endif .generic_bulk_ctrl_endpoint =0x01 , .num_device_descs = 1,@@ -1617,12 +1627,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_dtt7579_properties = { .i2c_algo = &cxusb_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 100, .rc_map_table = rc_map_dvico_portable_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_portable_table), .rc_query = cxusb_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,@@ -1668,12 +1680,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_dualdig4_properties = { .generic_bulk_ctrl_endpoint = 0x01, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_dvico_mce_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_mce_table), .rc_query = cxusb_bluebird2_rc_query, }, +#endif .num_device_descs =1 , .devices = {@@ -1718,12 +1732,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_properties = { .generic_bulk_ctrl_endpoint = 0x01, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_dvico_portable_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_portable_table), .rc_query = cxusb_bluebird2_rc_query, }, +#endif .num_device_descs =1 , .devices = {@@ -1770,12 +1786,14 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_needsfirmware_prope .generic_bulk_ctrl_endpoint = 0x01, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_dvico_portable_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_portable_table), .rc_query = cxusb_rc_query, }, +#endif .num_device_descs =1 , .devices = {@@ -1863,12 +1881,14 @@ struct dvb_usb_device_properties cxusb_bluebird_dualdig4_rev2_properties = { .generic_bulk_ctrl_endpoint = 0x01, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_dvico_mce_table, .rc_map_size = ARRAY_SIZE(rc_map_dvico_mce_table), .rc_query = cxusb_rc_query, }, +#endif .num_device_descs =1 , .devices = {@@ -1913,12 +1933,14 @@ static struct dvb_usb_device_properties cxusb_d680_dmb_properties = { .generic_bulk_ctrl_endpoint = 0x01, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_d680_dmb_table, .rc_map_size = ARRAY_SIZE(rc_map_d680_dmb_table), .rc_query = cxusb_d680_dmb_rc_query, }, +#endif .num_device_descs =1 , .devices = {@@ -1964,12 +1986,14 @@ static struct dvb_usb_device_properties cxusb_mygica_d689_properties = { .generic_bulk_ctrl_endpoint = 0x01, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_d680_dmb_table, .rc_map_size = ARRAY_SIZE(rc_map_d680_dmb_table), .rc_query = cxusb_d680_dmb_rc_query, }, +#endif .num_device_descs =1 , .devices = {drivers/media/dvb/dvb-usb/dib0700_core.c +4
-0@@ -471,6 +471,7 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)return dib0700_ctrl_wr (adap->dev, b,4 ); } +#ifdef CONFIG_RC_CORE int dib0700_change_protocol (struct rc_dev *rc,u64 rc_type) {struct dvb_usb_device *d = rc->priv;@@ -645,6 +646,7 @@ int dib0700_rc_setup(struct dvb_usb_device *d) return ret; } +#endif static int dib0700_probe (struct usb_interface *intf,const struct usb_device_id *id)@@ -667,6 +669,7 @@ static int dib0700_probe(struct usb_interface *intf, st->fw_version = fw_version; st->nb_packet_buffer_size = (u32 )nb_packet_buffer_size; +#ifdef CONFIG_RC_CORE /* Disable polling mode on newer firmwares */ if (st->fw_version >=0x10200 ) dev->props.rc.core.bulk_mode = true;@@ -674,6 +677,7 @@ static int dib0700_probe(struct usb_interface *intf, dev->props.rc.core.bulk_mode = false;dib0700_rc_setup (dev); +#endif return 0 ; }drivers/media/dvb/dvb-usb/dib0700_devices.c +31
-0@@ -466,6 +466,8 @@ static int stk7700ph_tuner_attach(struct dvb_usb_adapter *adap) == NULL ? -ENODEV : 0; } +#ifdef CONFIG_RC_CORE +#define DEFAULT_RC_INTERVAL 50static u8 rc_request[] = {REQUEST_POLL_RC ,0 };@@ -532,6 +534,7 @@ static int dib0700_rc_query_old_firmware(struct dvb_usb_device *d) }return 0 ; } +#endif /* STK7700P: Hauppauge Nova-T Stick, AVerMedia Volar */ static struct dibx000_agc_config stk7700p_7000m_mt2060_agc_config = {@@ -1920,6 +1923,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { } }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,@@ -1929,6 +1933,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 2,@@ -1954,6 +1959,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,@@ -1963,6 +1969,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 2,@@ -2013,6 +2020,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,@@ -2022,6 +2030,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1,@@ -2054,6 +2063,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { } }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,@@ -2064,6 +2074,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1,@@ -2130,6 +2141,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,@@ -2140,6 +2152,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1,@@ -2174,6 +2187,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,@@ -2184,6 +2198,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 2,@@ -2242,6 +2257,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,@@ -2252,6 +2268,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 2,@@ -2289,6 +2306,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_NEC_TABLE,@@ -2299,6 +2317,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1,@@ -2358,6 +2377,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,@@ -2368,6 +2388,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1, .adapter = {@@ -2394,6 +2415,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,@@ -2404,6 +2426,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1, .adapter = {@@ -2462,6 +2485,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,@@ -2472,6 +2496,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1, .adapter = {@@ -2506,6 +2531,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_NEC_TABLE,@@ -2516,6 +2542,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 2, .adapter = {@@ -2555,6 +2582,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,@@ -2565,6 +2593,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, .num_adapters = 1, .adapter = {@@ -2592,6 +2621,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { }, }, +#ifdef CONFIG_RC_CORE .rc.core = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_codes = RC_MAP_DIB0700_RC5_TABLE,@@ -2602,6 +2632,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { RC_TYPE_NEC, .change_protocol = dib0700_change_protocol, }, +#endif }, };drivers/media/dvb/dvb-usb/dibusb-common.c +2
-0@@ -324,6 +324,7 @@ int dibusb_dib3000mc_tuner_attach(struct dvb_usb_adapter *adap)EXPORT_SYMBOL (dibusb_dib3000mc_tuner_attach);#endif +#ifdef CONFIG_RC_CORE /* * common remote control stuff */ @@ -468,3 +469,4 @@ int dibusb_rc_query(struct dvb_usb_device *d, u32 *event, int *state) return 0; }EXPORT_SYMBOL (dibusb_rc_query); +#endif drivers/media/dvb/dvb-usb/dibusb-mb.c +8
-0@@ -211,12 +211,14 @@ static struct dvb_usb_device_properties dibusb1_1_properties = { .power_ctrl = dibusb_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_map_table = rc_map_dibusb_table, .rc_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */ .rc_query = dibusb_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,@@ -297,12 +299,14 @@ static struct dvb_usb_device_properties dibusb1_1_an2235_properties = { }, .power_ctrl = dibusb_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_map_table = rc_map_dibusb_table, .rc_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */ .rc_query = dibusb_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,@@ -363,12 +367,14 @@ static struct dvb_usb_device_properties dibusb2_0b_properties = { }, .power_ctrl = dibusb2_0_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_map_table = rc_map_dibusb_table, .rc_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */ .rc_query = dibusb_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,@@ -422,12 +428,14 @@ static struct dvb_usb_device_properties artec_t1_usb2_properties = { }, .power_ctrl = dibusb2_0_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_map_table = rc_map_dibusb_table, .rc_map_size = 111, /* wow, that is ugly ... I want to load it to the driver dynamically */ .rc_query = dibusb_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,drivers/media/dvb/dvb-usb/dibusb-mc.c +2
-0@@ -81,12 +81,14 @@ static struct dvb_usb_device_properties dibusb_mc_properties = { }, .power_ctrl = dibusb2_0_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = DEFAULT_RC_INTERVAL, .rc_map_table = rc_map_dibusb_table, .rc_map_size = 111, /* FIXME */ .rc_query = dibusb_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,drivers/media/dvb/dvb-usb/digitv.c +4
-0@@ -161,6 +161,7 @@ static int digitv_tuner_attach(struct dvb_usb_adapter *adap)return 0 ; } +#ifdef CONFIG_RC_CORE static struct rc_map_table rc_map_digitv_table[] = { {0x5f55 ,KEY_0 }, { 0x6f55, KEY_1 },@@ -251,6 +252,7 @@ static int digitv_rc_query(struct dvb_usb_device *d, u32 *event, int *state)deb_rc ("key: %x %x %x %x %x\n" ,key[0 ],key[1 ],key[2 ],key[3 ],key[4 ]); return 0; } +#endif /* DVB USB Driver stuff */ static struct dvb_usb_device_properties digitv_properties;@@ -310,12 +312,14 @@ static struct dvb_usb_device_properties digitv_properties = { }, .identify_state = digitv_identify_state, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 1000, .rc_map_table = rc_map_digitv_table, .rc_map_size = ARRAY_SIZE(rc_map_digitv_table), .rc_query = digitv_rc_query, }, +#endif .i2c_algo = &digitv_i2c_algo,drivers/media/dvb/dvb-usb/dtt200u.c +10
-0@@ -55,6 +55,7 @@ static int dtt200u_pid_filter(struct dvb_usb_adapter *adap, int index, u16 pid,return dvb_usb_generic_write (adap->dev, b_pid,4 ); } +#ifdef CONFIG_RC_CORE /* remote control */ /* key list for the tiny remote control (Yakumo, don't know about the others) */ static struct rc_map_table rc_map_dtt200u_table[] = {@@ -87,6 +88,7 @@ static int dtt200u_rc_query(struct dvb_usb_device *d, u32 *event, int *state)deb_info ("key: %x %x %x %x %x\n" ,key[0 ],key[1 ],key[2 ],key[3 ],key[4 ]); return 0; } +#endif static int dtt200u_frontend_attach (struct dvb_usb_adapter *adap) {@@ -161,12 +163,14 @@ static struct dvb_usb_device_properties dtt200u_properties = { }, .power_ctrl = dtt200u_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 300, .rc_map_table = rc_map_dtt200u_table, .rc_map_size = ARRAY_SIZE(rc_map_dtt200u_table), .rc_query = dtt200u_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,@@ -208,12 +212,14 @@ static struct dvb_usb_device_properties wt220u_properties = { }, .power_ctrl = dtt200u_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 300, .rc_map_table = rc_map_dtt200u_table, .rc_map_size = ARRAY_SIZE(rc_map_dtt200u_table), .rc_query = dtt200u_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,@@ -255,12 +261,14 @@ static struct dvb_usb_device_properties wt220u_fc_properties = { }, .power_ctrl = dtt200u_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 300, .rc_map_table = rc_map_dtt200u_table, .rc_map_size = ARRAY_SIZE(rc_map_dtt200u_table), .rc_query = dtt200u_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,@@ -302,12 +310,14 @@ static struct dvb_usb_device_properties wt220u_zl0353_properties = { }, .power_ctrl = dtt200u_power_ctrl, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval = 300, .rc_map_table = rc_map_dtt200u_table, .rc_map_size = ARRAY_SIZE(rc_map_dtt200u_table), .rc_query = dtt200u_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x01,drivers/media/dvb/dvb-usb/dvb-usb-remote.c +5
-0@@ -8,6 +8,7 @@#include "dvb-usb-common.h" #include <linux/usb/input.h> +#ifdef CONFIG_RC_CORE static int legacy_dvb_usb_getkeycode (struct input_dev *dev,unsigned int scancode,unsigned int *keycode) {@@ -362,3 +363,7 @@ int dvb_usb_nec_rc_key_to_event(struct dvb_usb_device *d, return 0; }EXPORT_SYMBOL (dvb_usb_nec_rc_key_to_event); +#else +int dvb_usb_remote_init (struct dvb_usb_device *d) {return 0 ; } +int dvb_usb_remote_exit (struct dvb_usb_device *d) {return 0 ; } +#endif drivers/media/dvb/dvb-usb/dvb-usb.h +2
-0@@ -270,11 +270,13 @@ struct dvb_usb_device_properties {int (*identify_state) (struct usb_device *,struct dvb_usb_device_properties *,struct dvb_usb_device_description **,int *); +#ifdef CONFIG_RC_CORE struct {enum dvb_usb_mode mode;/* Drivers shouldn't touch on it */ struct dvb_rc_legacy legacy;struct dvb_rc core; } rc; +#endif struct i2c_algorithm *i2c_algo;drivers/media/dvb/dvb-usb/dw2102.c +18
-1@@ -83,11 +83,12 @@ static int dvb_usb_dw2102_debug;module_param_named (debug, dvb_usb_dw2102_debug, int,0644 );MODULE_PARM_DESC (debug,"set debugging level (1=info 2=xfer 4=rc(or-able))." DVB_USB_DEBUG_STATUS ); - +#ifdef CONFIG_RC_CORE /* keymaps */ static int ir_keymap;module_param_named (keymap, ir_keymap, int,0644 );MODULE_PARM_DESC (keymap,"set keymap 0=default 1=dvbworld 2=tevii 3=tbs ..." ); +#endif /* demod probe */ static int demod_probe =1 ;@@ -948,6 +949,7 @@ static int dw3101_tuner_attach(struct dvb_usb_adapter *adap)return 0 ; } +#ifdef CONFIG_RC_CORE static struct rc_map_table rc_map_dw210x_table[] = { {0xf80a ,KEY_Q },/*power*/ { 0xf80c, KEY_M }, /*mute*/@@ -1113,6 +1115,7 @@ static int dw2102_rc_query(struct dvb_usb_device *d, u32 *event, int *state)return 0 ; } +#endif static struct usb_device_id dw2102_table[] = { {USB_DEVICE (USB_VID_CYPRESS ,USB_PID_DW2102 )},@@ -1185,14 +1188,18 @@ static int dw2102_load_firmware(struct usb_device *dev,/* init registers */ switch (dev->descriptor.idProduct) {case USB_PID_PROF_1100 : +#ifdef CONFIG_RC_CORE s6x0_properties.rc.legacy.rc_map_table = rc_map_tbs_table; s6x0_properties.rc.legacy.rc_map_size =ARRAY_SIZE (rc_map_tbs_table); +#endif break ;case USB_PID_TEVII_S650 : +#ifdef CONFIG_RC_CORE dw2104_properties.rc.legacy.rc_map_table = rc_map_tevii_table; dw2104_properties.rc.legacy.rc_map_size =ARRAY_SIZE (rc_map_tevii_table); +#endif case USB_PID_DW2104 : reset =1 ; dw210x_op_rw(dev, 0xc4, 0x0000, 0, &reset, 1,@@ -1256,12 +1263,14 @@ static struct dvb_usb_device_properties dw2102_properties = { .i2c_algo = &dw2102_serit_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_dw210x_table, .rc_map_size = ARRAY_SIZE(rc_map_dw210x_table), .rc_interval = 150, .rc_query = dw2102_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x81,/* parameter for the MPEG2-data transfer */ @@ -1309,12 +1318,14 @@ static struct dvb_usb_device_properties dw2104_properties = { .no_reconnect = 1, .i2c_algo = &dw2104_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_dw210x_table, .rc_map_size = ARRAY_SIZE(rc_map_dw210x_table), .rc_interval = 150, .rc_query = dw2102_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x81,/* parameter for the MPEG2-data transfer */ @@ -1358,12 +1369,14 @@ static struct dvb_usb_device_properties dw3101_properties = { .no_reconnect = 1, .i2c_algo = &dw3101_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_dw210x_table, .rc_map_size = ARRAY_SIZE(rc_map_dw210x_table), .rc_interval = 150, .rc_query = dw2102_rc_query, }, +#endif .generic_bulk_ctrl_endpoint = 0x81,/* parameter for the MPEG2-data transfer */ @@ -1403,12 +1416,14 @@ static struct dvb_usb_device_properties s6x0_properties = { .no_reconnect = 1, .i2c_algo = &s6x0_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_tevii_table, .rc_map_size = ARRAY_SIZE(rc_map_tevii_table), .rc_interval = 150, .rc_query = dw2102_rc_query, }, +#endif .generic_bulk_ctrl_endpoint =0x81 , .num_adapters = 1,@@ -1468,8 +1483,10 @@ static int dw2102_probe(struct usb_interface *intf,/* fill only different fields */ p7500->firmware ="dvb-usb-p7500.fw" ; p7500->devices[0 ] = d7500; +#ifdef CONFIG_RC_CORE p7500->rc.legacy.rc_map_table = rc_map_tbs_table; p7500->rc.legacy.rc_map_size =ARRAY_SIZE (rc_map_tbs_table); +#endif p7500->adapter->frontend_attach = prof_7500_frontend_attach; if (0 == dvb_usb_device_init(intf, &dw2102_properties,drivers/media/dvb/dvb-usb/lmedm04.c +9
-0@@ -193,12 +193,14 @@ static int lme2510_stream_restart(struct dvb_usb_device *d) }static int lme2510_remote_keypress (struct dvb_usb_adapter *adap,u16 keypress) { +#ifdef CONFIG_RC_CORE struct dvb_usb_device *d = adap->dev;deb_info (1 ,"INT Key Keypress =%04x" , keypress);if (keypress >0 )rc_keydown (d->rc_dev, keypress,0 ); +#endif return 0 ; }@@ -554,6 +556,8 @@ static int lme2510_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)static int lme2510_int_service (struct dvb_usb_adapter *adap) { +int ret; +#ifdef CONFIG_RC_CORE struct dvb_usb_device *d = adap->dev;struct rc_dev *rc;int ret;@@ -579,14 +583,17 @@ static int lme2510_int_service(struct dvb_usb_adapter *adap) return ret; } d->rc_dev = rc; +#endif /* Start the Interupt */ ret =lme2510_int_read (adap); +#ifdef CONFIG_RC_CORE if (ret <0 ) {rc_unregister_device (rc);info ("INT Unable to start Interupt Service" );return -ENODEV ; } +#endif return 0 ; }@@ -1061,7 +1068,9 @@ void *lme2510_exit_int(struct dvb_usb_device *d)usb_free_coherent (d->udev,5000 , st->buffer, st->lme_urb->transfer_dma);info ("Interupt Service Stopped" ); +#ifdef CONFIG_RC_CORE rc_unregister_device (d->rc_dev); +#endif info ("Remote Stopped" ); }return buffer;drivers/media/dvb/dvb-usb/m920x.c +12
-0@@ -68,6 +68,7 @@ static int m920x_init(struct dvb_usb_device *d, struct m920x_inits *rc_seq)int ret =0 , i, epi, flags =0 ;int adap_enabled[M9206_MAX_ADAPTERS ] = {0 }; +#ifdef CONFIG_RC_CORE /* Remote controller init. */ if (d->props.rc.legacy.rc_query) {deb ("Initialising remote control\n" );@@ -84,6 +85,7 @@ static int m920x_init(struct dvb_usb_device *d, struct m920x_inits *rc_seq) deb("Initialising remote control success\n"); } +#endif for (i =0 ; i < d->props.num_adapters; i++) flags |= d->adapter[i].props.caps;@@ -130,6 +132,7 @@ static int m920x_init_ep(struct usb_interface *intf) alt->desc.bAlternateSetting); } +#ifdef CONFIG_RC_CORE static int m920x_rc_query (struct dvb_usb_device *d,u32 *event,int *state) {struct m920x_state *m = d->priv;@@ -192,6 +195,7 @@ static int m920x_rc_query(struct dvb_usb_device *d, u32 *event, int *state) return ret; } +#endif /* I2C */ static int m920x_i2c_xfer (struct i2c_adapter *adap,struct i2c_msg msg[],int num)@@ -588,6 +592,7 @@ static struct m920x_inits pinnacle310e_init[] = { { }/* terminating entry */ }; +#ifdef CONFIG_RC_CORE /* ir keymaps */ static struct rc_map_table rc_map_megasky_table[] = { { 0x0012, KEY_POWER },@@ -683,6 +688,7 @@ static struct rc_map_table rc_map_pinnacle310e_table[] = { { 0x5e, KEY_SAT }, /* Yellow */ { 0x5f, KEY_PLAYER }, /* Blue */ }; +#endif /* DVB USB Driver stuff */ static struct dvb_usb_device_properties megasky_properties;@@ -784,12 +790,14 @@ static struct dvb_usb_device_properties megasky_properties = { .firmware = "dvb-usb-megasky-02.fw", .download_firmware = m920x_firmware_download, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_megasky_table, .rc_map_size = ARRAY_SIZE(rc_map_megasky_table), .rc_query = m920x_rc_query, }, +#endif .size_of_priv = sizeof(struct m920x_state),@@ -887,12 +895,14 @@ static struct dvb_usb_device_properties tvwalkertwin_properties = { .firmware = "dvb-usb-tvwalkert.fw", .download_firmware = m920x_firmware_download, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_tvwalkertwin_table, .rc_map_size = ARRAY_SIZE(rc_map_tvwalkertwin_table), .rc_query = m920x_rc_query, }, +#endif .size_of_priv = sizeof(struct m920x_state),@@ -996,12 +1006,14 @@ static struct dvb_usb_device_properties pinnacle_pctv310e_properties = { .usb_ctrl = DEVICE_SPECIFIC, .download_firmware =NULL , +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_pinnacle310e_table, .rc_map_size = ARRAY_SIZE(rc_map_pinnacle310e_table), .rc_query = m920x_rc_query, }, +#endif .size_of_priv = sizeof(struct m920x_state),drivers/media/dvb/dvb-usb/nova-t-usb2.c +4
-0@@ -20,6 +20,7 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); #define deb_rc(args...) dprintk(debug,0x01,args) #define deb_ee(args...) dprintk(debug,0x02,args) +#ifdef CONFIG_RC_CORE /* Hauppauge NOVA-T USB2 keys */ static struct rc_map_table rc_map_haupp_table[] = { { 0x1e00, KEY_0 },@@ -119,6 +120,7 @@ static int nova_t_rc_query(struct dvb_usb_device *d, u32 *event, int *state) return 0; } +#endif static int nova_t_read_mac_address (struct dvb_usb_device *d,u8 mac[6 ]) {@@ -195,12 +197,14 @@ static struct dvb_usb_device_properties nova_t_properties = { .power_ctrl = dibusb2_0_power_ctrl, .read_mac_address = nova_t_read_mac_address, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =100 , .rc_map_table = rc_map_haupp_table, .rc_map_size = ARRAY_SIZE(rc_map_haupp_table), .rc_query = nova_t_rc_query, }, +#endif .i2c_algo = &dibusb_i2c_algo,drivers/media/dvb/dvb-usb/opera1.c +4
-0@@ -331,6 +331,7 @@ static int opera1_pid_filter_control(struct dvb_usb_adapter *adap, int onoff)return 0 ; } +#ifdef CONFIG_RC_CORE static struct rc_map_table rc_map_opera1_table[] = { {0x5fa0 ,KEY_1 }, {0x51af, KEY_2},@@ -418,6 +419,7 @@ static int opera1_rc_query(struct dvb_usb_device *dev, u32 * event, int *state) *state =REMOTE_NO_KEY_PRESSED ;return 0 ; } +#endif static struct usb_device_id opera1_table[] = { {USB_DEVICE (USB_VID_CYPRESS ,USB_PID_OPERA1_COLD )},@@ -496,12 +498,14 @@ static struct dvb_usb_device_properties opera1_properties = { .power_ctrl = opera1_power_ctrl, .i2c_algo = &opera1_i2c_algo, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_opera1_table, .rc_map_size = ARRAY_SIZE(rc_map_opera1_table), .rc_interval = 200, .rc_query = opera1_rc_query, }, +#endif .read_mac_address = opera1_read_mac_address, .generic_bulk_ctrl_endpoint = 0x00,/* parameter for the MPEG2-data transfer */ drivers/media/dvb/dvb-usb/ttusb2.c +5
-1@@ -129,6 +129,8 @@ static struct i2c_algorithm ttusb2_i2c_algo = { .functionality = ttusb2_i2c_func, }; +#ifdef CONFIG_RC_CORE +/* command to poll IR receiver (copied from pctv452e.c) */ #define CMD_GET_IR_CODE 0x1b@@ -154,7 +156,7 @@ static int tt3650_rc_query(struct dvb_usb_device *d)return 0 ; } - +#endif /* Callbacks for DVB USB */ static int ttusb2_identify_state (struct usb_device *udev, struct@@ -373,12 +375,14 @@ static struct dvb_usb_device_properties ttusb2_properties_ct3650 = { .size_of_priv = sizeof(struct ttusb2_state), +#ifdef CONFIG_RC_OCRE .rc.core = { .rc_interval =150 ,/* Less than IR_KEYPRESS_TIMEOUT */ .rc_codes = RC_MAP_TT_1500, .rc_query = tt3650_rc_query, .allowed_protos = RC_TYPE_UNKNOWN, }, +#endif .num_adapters =1 , .adapter = {drivers/media/dvb/dvb-usb/vp702x.c +4
-1@@ -173,6 +173,7 @@ static int vp702x_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)return 0 ; } +#ifdef CONFIG_RC_CORE /* keys for the enclosed remote control */ static struct rc_map_table rc_map_vp702x_table[] = { { 0x0001, KEY_1 },@@ -205,7 +206,7 @@ static int vp702x_rc_query(struct dvb_usb_device *d, u32 *event, int *state) }return 0 ; } - +#endif static int vp702x_read_mac_addr (struct dvb_usb_device *d,u8 mac[6 ]) {@@ -283,12 +284,14 @@ static struct dvb_usb_device_properties vp702x_properties = { }, .read_mac_address = vp702x_read_mac_addr, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_map_table = rc_map_vp702x_table, .rc_map_size = ARRAY_SIZE(rc_map_vp702x_table), .rc_interval = 400, .rc_query = vp702x_rc_query, }, +#endif .num_device_descs =1 , .devices = {drivers/media/dvb/dvb-usb/vp7045.c +4
-1@@ -95,6 +95,7 @@ static int vp7045_power_ctrl(struct dvb_usb_device *d, int onoff)return vp7045_usb_op (d,SET_TUNER_POWER ,&v,1 ,NULL ,0 ,150 ); } +#ifdef CONFIG_RC_CORE /* remote control stuff */ /* The keymapping struct. Somehow this should be loaded to the driver, but @@ -173,6 +174,7 @@ static int vp7045_rc_query(struct dvb_usb_device *d, u32 *event, int *state) }return 0 ; } +#endif static int vp7045_read_eeprom (struct dvb_usb_device *d,u8 *buf,int len,int offset) {@@ -259,12 +261,14 @@ static struct dvb_usb_device_properties vp7045_properties = { .power_ctrl = vp7045_power_ctrl, .read_mac_address = vp7045_read_mac_addr, +#ifdef CONFIG_RC_CORE .rc.legacy = { .rc_interval =400 , .rc_map_table = rc_map_vp7045_table, .rc_map_size = ARRAY_SIZE(rc_map_vp7045_table), .rc_query = vp7045_rc_query, }, +#endif .num_device_descs =2 , .devices = { --To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 17 lines · Mauro Carvalho Chehab
Hi Sean,
Em 21-02-2011 18:49, Sean Young escreveu:
Quoted 9 lines
I have a SheevaPlug which has no (human) input or output devices, with a DVB USB device connected with a mythtv backend running. The DVB USB drivers pull in the remote control tree, which is unneeded in this case; the mythtv client runs elsewhere (where RC is used). However the RC tree depends on input which also has dependants.
This can save a reasonable amount of memory:
$ ./scripts/bloat-o-meter vmlinux vmlinux-no-rc add/remove: 0/909 grow/shrink: 1/20 up/down: 4/-159171 (-159167)Sorry for a late review. The problem with this patch is that it is too much intrusive. It is a bad practice to fill the code with lots of #ifdef's, because it makes harder to analyse the source code and find bugs there.
Quoted 6 lines
Also, while it saves some memory, this strategy forces that all DVB drivers to have a check for
RC_CORE, being very easy that someone would forget about that, causing compilation breakages if this option is disabled.The proper way is to have a separate module for RC and just making such module as dependent of
RC_CORE.
Sean, could you possibly rework your patch in accordance with what Mauro stated above?