[media] rc-core: remove protocol arrays

The basic API of rc-core used to be:

	dev = rc_allocate_device();
	dev->x = a;
	dev->y = b;
	dev->z = c;
	rc_register_device();

which is a pretty common pattern in the kernel, after the introduction of
protocol arrays the API looks something like:

	dev = rc_allocate_device();
	dev->x = a;
	rc_set_allowed_protocols(dev, RC_BIT_X);
	dev->z = c;
	rc_register_device();

There's no real need for the protocols to be an array, so change it
back to be consistent (and in preparation for the following patches).

[m.chehab@samsung.com: added missing changes at some files]
Signed-off-by: David Härdeman <david@hardeman.nu>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
David Härdeman 2014-04-03 20:32:21 -03:00 коммит произвёл Mauro Carvalho Chehab
Родитель da6e162d6a
Коммит c5540fbb9d
39 изменённых файлов: 86 добавлений и 119 удалений

Просмотреть файл

@ -114,7 +114,7 @@ int picolcd_init_cir(struct picolcd_data *data, struct hid_report *report)
rdev->priv = data; rdev->priv = data;
rdev->driver_type = RC_DRIVER_IR_RAW; rdev->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(rdev, RC_BIT_ALL); rdev->allowed_protocols = RC_BIT_ALL;
rdev->open = picolcd_cir_open; rdev->open = picolcd_cir_open;
rdev->close = picolcd_cir_close; rdev->close = picolcd_cir_close;
rdev->input_name = data->hdev->name; rdev->input_name = data->hdev->name;

Просмотреть файл

@ -88,7 +88,7 @@ int sms_ir_init(struct smscore_device_t *coredev)
dev->priv = coredev; dev->priv = coredev;
dev->driver_type = RC_DRIVER_IR_RAW; dev->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(dev, RC_BIT_ALL); dev->allowed_protocols = RC_BIT_ALL;
dev->map_name = sms_get_board(board_id)->rc_codes; dev->map_name = sms_get_board(board_id)->rc_codes;
dev->driver_name = MODULE_NAME; dev->driver_name = MODULE_NAME;

Просмотреть файл

@ -432,8 +432,8 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
* Initialize the other fields of rc_dev * Initialize the other fields of rc_dev
*/ */
rc->map_name = ir->ir_codes; rc->map_name = ir->ir_codes;
rc_set_allowed_protocols(rc, rc_type); rc->allowed_protocols = rc_type;
rc_set_enabled_protocols(rc, rc_type); rc->enabled_protocols = rc_type;
if (!rc->driver_name) if (!rc->driver_name)
rc->driver_name = MODULE_NAME; rc->driver_name = MODULE_NAME;

Просмотреть файл

@ -346,7 +346,7 @@ int cx23885_input_init(struct cx23885_dev *dev)
} }
rc->dev.parent = &dev->pci->dev; rc->dev.parent = &dev->pci->dev;
rc->driver_type = driver_type; rc->driver_type = driver_type;
rc_set_allowed_protocols(rc, allowed_protos); rc->allowed_protocols = allowed_protos;
rc->priv = kernel_ir; rc->priv = kernel_ir;
rc->open = cx23885_input_ir_open; rc->open = cx23885_input_ir_open;
rc->close = cx23885_input_ir_close; rc->close = cx23885_input_ir_close;

Просмотреть файл

@ -485,7 +485,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
dev->timeout = 10 * 1000 * 1000; /* 10 ms */ dev->timeout = 10 * 1000 * 1000; /* 10 ms */
} else { } else {
dev->driver_type = RC_DRIVER_SCANCODE; dev->driver_type = RC_DRIVER_SCANCODE;
rc_set_allowed_protocols(dev, rc_type); dev->allowed_protocols = rc_type;
} }
ir->core = core; ir->core = core;

Просмотреть файл

@ -784,7 +784,7 @@ static void ati_remote_rc_init(struct ati_remote *ati_remote)
rdev->priv = ati_remote; rdev->priv = ati_remote;
rdev->driver_type = RC_DRIVER_SCANCODE; rdev->driver_type = RC_DRIVER_SCANCODE;
rc_set_allowed_protocols(rdev, RC_BIT_OTHER); rdev->allowed_protocols = RC_BIT_OTHER;
rdev->driver_name = "ati_remote"; rdev->driver_name = "ati_remote";
rdev->open = ati_remote_rc_open; rdev->open = ati_remote_rc_open;

Просмотреть файл

@ -1059,7 +1059,7 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
learning_mode_force = false; learning_mode_force = false;
rdev->driver_type = RC_DRIVER_IR_RAW; rdev->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(rdev, RC_BIT_ALL); rdev->allowed_protocols = RC_BIT_ALL;
rdev->priv = dev; rdev->priv = dev;
rdev->open = ene_open; rdev->open = ene_open;
rdev->close = ene_close; rdev->close = ene_close;

Просмотреть файл

@ -541,7 +541,7 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
/* Set up the rc device */ /* Set up the rc device */
rdev->priv = fintek; rdev->priv = fintek;
rdev->driver_type = RC_DRIVER_IR_RAW; rdev->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(rdev, RC_BIT_ALL); rdev->allowed_protocols = RC_BIT_ALL;
rdev->open = fintek_open; rdev->open = fintek_open;
rdev->close = fintek_close; rdev->close = fintek_close;
rdev->input_name = FINTEK_DESCRIPTION; rdev->input_name = FINTEK_DESCRIPTION;

Просмотреть файл

@ -145,9 +145,9 @@ static int gpio_ir_recv_probe(struct platform_device *pdev)
rcdev->dev.parent = &pdev->dev; rcdev->dev.parent = &pdev->dev;
rcdev->driver_name = GPIO_IR_DRIVER_NAME; rcdev->driver_name = GPIO_IR_DRIVER_NAME;
if (pdata->allowed_protos) if (pdata->allowed_protos)
rc_set_allowed_protocols(rcdev, pdata->allowed_protos); rcdev->allowed_protocols = pdata->allowed_protos;
else else
rc_set_allowed_protocols(rcdev, RC_BIT_ALL); rcdev->allowed_protocols = RC_BIT_ALL;
rcdev->map_name = pdata->map_name ?: RC_MAP_EMPTY; rcdev->map_name = pdata->map_name ?: RC_MAP_EMPTY;
gpio_dev->rcdev = rcdev; gpio_dev->rcdev = rcdev;

Просмотреть файл

@ -495,7 +495,7 @@ static int iguanair_probe(struct usb_interface *intf,
usb_to_input_id(ir->udev, &rc->input_id); usb_to_input_id(ir->udev, &rc->input_id);
rc->dev.parent = &intf->dev; rc->dev.parent = &intf->dev;
rc->driver_type = RC_DRIVER_IR_RAW; rc->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(rc, RC_BIT_ALL); rc->allowed_protocols = RC_BIT_ALL;
rc->priv = ir; rc->priv = ir;
rc->open = iguanair_open; rc->open = iguanair_open;
rc->close = iguanair_close; rc->close = iguanair_close;

Просмотреть файл

@ -556,8 +556,8 @@ static void img_ir_set_decoder(struct img_ir_priv *priv,
hw->mode = IMG_IR_M_NORMAL; hw->mode = IMG_IR_M_NORMAL;
/* clear the wakeup scancode filter */ /* clear the wakeup scancode filter */
rdev->scancode_filters[RC_FILTER_WAKEUP].data = 0; rdev->scancode_wakeup_filter.data = 0;
rdev->scancode_filters[RC_FILTER_WAKEUP].mask = 0; rdev->scancode_wakeup_filter.mask = 0;
/* clear raw filters */ /* clear raw filters */
_img_ir_set_filter(priv, NULL); _img_ir_set_filter(priv, NULL);
@ -661,8 +661,8 @@ success:
wakeup_protocols = *ir_type; wakeup_protocols = *ir_type;
if (!hw->decoder || !hw->decoder->filter) if (!hw->decoder || !hw->decoder->filter)
wakeup_protocols = 0; wakeup_protocols = 0;
rc_set_allowed_wakeup_protocols(rdev, wakeup_protocols); rdev->allowed_wakeup_protocols = wakeup_protocols;
rc_set_enabled_wakeup_protocols(rdev, wakeup_protocols); rdev->enabled_wakeup_protocols = wakeup_protocols;
return 0; return 0;
} }
@ -676,9 +676,9 @@ static void img_ir_set_protocol(struct img_ir_priv *priv, u64 proto)
spin_unlock_irq(&rdev->rc_map.lock); spin_unlock_irq(&rdev->rc_map.lock);
mutex_lock(&rdev->lock); mutex_lock(&rdev->lock);
rc_set_enabled_protocols(rdev, proto); rdev->enabled_protocols = proto;
rc_set_allowed_wakeup_protocols(rdev, proto); rdev->allowed_wakeup_protocols = proto;
rc_set_enabled_wakeup_protocols(rdev, proto); rdev->enabled_wakeup_protocols = proto;
mutex_unlock(&rdev->lock); mutex_unlock(&rdev->lock);
} }
@ -1003,7 +1003,7 @@ int img_ir_probe_hw(struct img_ir_priv *priv)
} }
rdev->priv = priv; rdev->priv = priv;
rdev->map_name = RC_MAP_EMPTY; rdev->map_name = RC_MAP_EMPTY;
rc_set_allowed_protocols(rdev, img_ir_allowed_protos(priv)); rdev->allowed_protocols = img_ir_allowed_protos(priv);
rdev->input_name = "IMG Infrared Decoder"; rdev->input_name = "IMG Infrared Decoder";
rdev->s_filter = img_ir_set_normal_filter; rdev->s_filter = img_ir_set_normal_filter;
rdev->s_wakeup_filter = img_ir_set_wakeup_filter; rdev->s_wakeup_filter = img_ir_set_wakeup_filter;

Просмотреть файл

@ -1017,7 +1017,7 @@ static int imon_ir_change_protocol(struct rc_dev *rc, u64 *rc_type)
unsigned char ir_proto_packet[] = { unsigned char ir_proto_packet[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86 }; 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86 };
if (*rc_type && !rc_protocols_allowed(rc, *rc_type)) if (*rc_type && !(*rc_type & rc->allowed_protocols))
dev_warn(dev, "Looks like you're trying to use an IR protocol " dev_warn(dev, "Looks like you're trying to use an IR protocol "
"this device does not support\n"); "this device does not support\n");
@ -1870,8 +1870,7 @@ static struct rc_dev *imon_init_rdev(struct imon_context *ictx)
rdev->priv = ictx; rdev->priv = ictx;
rdev->driver_type = RC_DRIVER_SCANCODE; rdev->driver_type = RC_DRIVER_SCANCODE;
/* iMON PAD or MCE */ rdev->allowed_protocols = RC_BIT_OTHER | RC_BIT_RC6_MCE; /* iMON PAD or MCE */
rc_set_allowed_protocols(rdev, RC_BIT_OTHER | RC_BIT_RC6_MCE);
rdev->change_protocol = imon_ir_change_protocol; rdev->change_protocol = imon_ir_change_protocol;
rdev->driver_name = MOD_NAME; rdev->driver_name = MOD_NAME;
@ -1884,7 +1883,7 @@ static struct rc_dev *imon_init_rdev(struct imon_context *ictx)
if (ictx->product == 0xffdc) { if (ictx->product == 0xffdc) {
imon_get_ffdc_type(ictx); imon_get_ffdc_type(ictx);
rc_set_allowed_protocols(rdev, ictx->rc_type); rdev->allowed_protocols = ictx->rc_type;
} }
imon_set_display_type(ictx); imon_set_display_type(ictx);

Просмотреть файл

@ -47,7 +47,7 @@ static int ir_jvc_decode(struct rc_dev *dev, struct ir_raw_event ev)
{ {
struct jvc_dec *data = &dev->raw->jvc; struct jvc_dec *data = &dev->raw->jvc;
if (!rc_protocols_enabled(dev, RC_BIT_JVC)) if (!(dev->enabled_protocols & RC_BIT_JVC))
return 0; return 0;
if (!is_timing_event(ev)) { if (!is_timing_event(ev)) {

Просмотреть файл

@ -35,7 +35,7 @@ static int ir_lirc_decode(struct rc_dev *dev, struct ir_raw_event ev)
struct lirc_codec *lirc = &dev->raw->lirc; struct lirc_codec *lirc = &dev->raw->lirc;
int sample; int sample;
if (!rc_protocols_enabled(dev, RC_BIT_LIRC)) if (!(dev->enabled_protocols & RC_BIT_LIRC))
return 0; return 0;
if (!dev->raw->lirc.drv || !dev->raw->lirc.drv->rbuf) if (!dev->raw->lirc.drv || !dev->raw->lirc.drv->rbuf)

Просмотреть файл

@ -216,7 +216,7 @@ static int ir_mce_kbd_decode(struct rc_dev *dev, struct ir_raw_event ev)
u32 scancode; u32 scancode;
unsigned long delay; unsigned long delay;
if (!rc_protocols_enabled(dev, RC_BIT_MCE_KBD)) if (!(dev->enabled_protocols & RC_BIT_MCE_KBD))
return 0; return 0;
if (!is_timing_event(ev)) { if (!is_timing_event(ev)) {

Просмотреть файл

@ -52,7 +52,7 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev)
u8 address, not_address, command, not_command; u8 address, not_address, command, not_command;
bool send_32bits = false; bool send_32bits = false;
if (!rc_protocols_enabled(dev, RC_BIT_NEC)) if (!(dev->enabled_protocols & RC_BIT_NEC))
return 0; return 0;
if (!is_timing_event(ev)) { if (!is_timing_event(ev)) {

Просмотреть файл

@ -262,7 +262,7 @@ int ir_raw_event_register(struct rc_dev *dev)
return -ENOMEM; return -ENOMEM;
dev->raw->dev = dev; dev->raw->dev = dev;
rc_set_enabled_protocols(dev, ~0); dev->enabled_protocols = ~0;
dev->change_protocol = change_protocol; dev->change_protocol = change_protocol;
rc = kfifo_alloc(&dev->raw->kfifo, rc = kfifo_alloc(&dev->raw->kfifo,
sizeof(struct ir_raw_event) * MAX_IR_EVENT_SIZE, sizeof(struct ir_raw_event) * MAX_IR_EVENT_SIZE,

Просмотреть файл

@ -53,7 +53,7 @@ static int ir_rc5_decode(struct rc_dev *dev, struct ir_raw_event ev)
u32 scancode; u32 scancode;
enum rc_type protocol; enum rc_type protocol;
if (!rc_protocols_enabled(dev, RC_BIT_RC5 | RC_BIT_RC5X)) if (!(dev->enabled_protocols & (RC_BIT_RC5 | RC_BIT_RC5X)))
return 0; return 0;
if (!is_timing_event(ev)) { if (!is_timing_event(ev)) {
@ -129,7 +129,7 @@ again:
if (data->wanted_bits == RC5X_NBITS) { if (data->wanted_bits == RC5X_NBITS) {
/* RC5X */ /* RC5X */
u8 xdata, command, system; u8 xdata, command, system;
if (!rc_protocols_enabled(dev, RC_BIT_RC5X)) { if (!(dev->enabled_protocols & RC_BIT_RC5X)) {
data->state = STATE_INACTIVE; data->state = STATE_INACTIVE;
return 0; return 0;
} }
@ -147,7 +147,7 @@ again:
} else { } else {
/* RC5 */ /* RC5 */
u8 command, system; u8 command, system;
if (!rc_protocols_enabled(dev, RC_BIT_RC5)) { if (!(dev->enabled_protocols & RC_BIT_RC5)) {
data->state = STATE_INACTIVE; data->state = STATE_INACTIVE;
return 0; return 0;
} }

Просмотреть файл

@ -48,7 +48,7 @@ static int ir_rc5_sz_decode(struct rc_dev *dev, struct ir_raw_event ev)
u8 toggle, command, system; u8 toggle, command, system;
u32 scancode; u32 scancode;
if (!rc_protocols_enabled(dev, RC_BIT_RC5_SZ)) if (!(dev->enabled_protocols & RC_BIT_RC5_SZ))
return 0; return 0;
if (!is_timing_event(ev)) { if (!is_timing_event(ev)) {

Просмотреть файл

@ -90,9 +90,9 @@ static int ir_rc6_decode(struct rc_dev *dev, struct ir_raw_event ev)
u8 toggle; u8 toggle;
enum rc_type protocol; enum rc_type protocol;
if (!rc_protocols_enabled(dev, RC_BIT_RC6_0 | RC_BIT_RC6_6A_20 | if (!(dev->enabled_protocols &
RC_BIT_RC6_6A_24 | RC_BIT_RC6_6A_32 | (RC_BIT_RC6_0 | RC_BIT_RC6_6A_20 | RC_BIT_RC6_6A_24 |
RC_BIT_RC6_MCE)) RC_BIT_RC6_6A_32 | RC_BIT_RC6_MCE)))
return 0; return 0;
if (!is_timing_event(ev)) { if (!is_timing_event(ev)) {

Просмотреть файл

@ -58,7 +58,7 @@ static int ir_sanyo_decode(struct rc_dev *dev, struct ir_raw_event ev)
u32 scancode; u32 scancode;
u8 address, command, not_command; u8 address, command, not_command;
if (!rc_protocols_enabled(dev, RC_BIT_SANYO)) if (!(dev->enabled_protocols & RC_BIT_SANYO))
return 0; return 0;
if (!is_timing_event(ev)) { if (!is_timing_event(ev)) {

Просмотреть файл

@ -48,7 +48,7 @@ static int ir_sharp_decode(struct rc_dev *dev, struct ir_raw_event ev)
struct sharp_dec *data = &dev->raw->sharp; struct sharp_dec *data = &dev->raw->sharp;
u32 msg, echo, address, command, scancode; u32 msg, echo, address, command, scancode;
if (!rc_protocols_enabled(dev, RC_BIT_SHARP)) if (!(dev->enabled_protocols & RC_BIT_SHARP))
return 0; return 0;
if (!is_timing_event(ev)) { if (!is_timing_event(ev)) {

Просмотреть файл

@ -46,8 +46,8 @@ static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)
u32 scancode; u32 scancode;
u8 device, subdevice, function; u8 device, subdevice, function;
if (!rc_protocols_enabled(dev, RC_BIT_SONY12 | RC_BIT_SONY15 | if (!(dev->enabled_protocols &
RC_BIT_SONY20)) (RC_BIT_SONY12 | RC_BIT_SONY15 | RC_BIT_SONY20)))
return 0; return 0;
if (!is_timing_event(ev)) { if (!is_timing_event(ev)) {
@ -125,7 +125,7 @@ static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)
switch (data->count) { switch (data->count) {
case 12: case 12:
if (!rc_protocols_enabled(dev, RC_BIT_SONY12)) { if (!(dev->enabled_protocols & RC_BIT_SONY12)) {
data->state = STATE_INACTIVE; data->state = STATE_INACTIVE;
return 0; return 0;
} }
@ -135,7 +135,7 @@ static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)
protocol = RC_TYPE_SONY12; protocol = RC_TYPE_SONY12;
break; break;
case 15: case 15:
if (!rc_protocols_enabled(dev, RC_BIT_SONY15)) { if (!(dev->enabled_protocols & RC_BIT_SONY15)) {
data->state = STATE_INACTIVE; data->state = STATE_INACTIVE;
return 0; return 0;
} }
@ -145,7 +145,7 @@ static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)
protocol = RC_TYPE_SONY15; protocol = RC_TYPE_SONY15;
break; break;
case 20: case 20:
if (!rc_protocols_enabled(dev, RC_BIT_SONY20)) { if (!(dev->enabled_protocols & RC_BIT_SONY20)) {
data->state = STATE_INACTIVE; data->state = STATE_INACTIVE;
return 0; return 0;
} }

Просмотреть файл

@ -1563,7 +1563,7 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
/* set up ir-core props */ /* set up ir-core props */
rdev->priv = itdev; rdev->priv = itdev;
rdev->driver_type = RC_DRIVER_IR_RAW; rdev->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(rdev, RC_BIT_ALL); rdev->allowed_protocols = RC_BIT_ALL;
rdev->open = ite_open; rdev->open = ite_open;
rdev->close = ite_close; rdev->close = ite_close;
rdev->s_idle = ite_s_idle; rdev->s_idle = ite_s_idle;

Просмотреть файл

@ -1219,7 +1219,7 @@ static struct rc_dev *mceusb_init_rc_dev(struct mceusb_dev *ir)
rc->dev.parent = dev; rc->dev.parent = dev;
rc->priv = ir; rc->priv = ir;
rc->driver_type = RC_DRIVER_IR_RAW; rc->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(rc, RC_BIT_ALL); rc->allowed_protocols = RC_BIT_ALL;
rc->timeout = MS_TO_NS(100); rc->timeout = MS_TO_NS(100);
if (!ir->flags.no_tx) { if (!ir->flags.no_tx) {
rc->s_tx_mask = mceusb_set_tx_mask; rc->s_tx_mask = mceusb_set_tx_mask;

Просмотреть файл

@ -1044,7 +1044,7 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
/* Set up the rc device */ /* Set up the rc device */
rdev->priv = nvt; rdev->priv = nvt;
rdev->driver_type = RC_DRIVER_IR_RAW; rdev->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(rdev, RC_BIT_ALL); rdev->allowed_protocols = RC_BIT_ALL;
rdev->open = nvt_open; rdev->open = nvt_open;
rdev->close = nvt_close; rdev->close = nvt_close;
rdev->tx_ir = nvt_tx_ir; rdev->tx_ir = nvt_tx_ir;

Просмотреть файл

@ -195,7 +195,7 @@ static int __init loop_init(void)
rc->map_name = RC_MAP_EMPTY; rc->map_name = RC_MAP_EMPTY;
rc->priv = &loopdev; rc->priv = &loopdev;
rc->driver_type = RC_DRIVER_IR_RAW; rc->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(rc, RC_BIT_ALL); rc->allowed_protocols = RC_BIT_ALL;
rc->timeout = 100 * 1000 * 1000; /* 100 ms */ rc->timeout = 100 * 1000 * 1000; /* 100 ms */
rc->min_timeout = 1; rc->min_timeout = 1;
rc->max_timeout = UINT_MAX; rc->max_timeout = UINT_MAX;

Просмотреть файл

@ -857,14 +857,14 @@ static ssize_t show_protocols(struct device *device,
mutex_lock(&dev->lock); mutex_lock(&dev->lock);
if (fattr->type == RC_FILTER_NORMAL) { if (fattr->type == RC_FILTER_NORMAL) {
enabled = dev->enabled_protocols[RC_FILTER_NORMAL]; enabled = dev->enabled_protocols;
if (dev->raw) if (dev->raw)
allowed = ir_raw_get_allowed_protocols(); allowed = ir_raw_get_allowed_protocols();
else else
allowed = dev->allowed_protocols[RC_FILTER_NORMAL]; allowed = dev->allowed_protocols;
} else { } else {
enabled = dev->enabled_protocols[RC_FILTER_WAKEUP]; enabled = dev->enabled_wakeup_protocols;
allowed = dev->allowed_protocols[RC_FILTER_WAKEUP]; allowed = dev->allowed_wakeup_protocols;
} }
mutex_unlock(&dev->lock); mutex_unlock(&dev->lock);
@ -989,15 +989,15 @@ static ssize_t store_protocols(struct device *device,
if (fattr->type == RC_FILTER_NORMAL) { if (fattr->type == RC_FILTER_NORMAL) {
IR_dprintk(1, "Normal protocol change requested\n"); IR_dprintk(1, "Normal protocol change requested\n");
current_protocols = &dev->enabled_protocols[RC_FILTER_NORMAL]; current_protocols = &dev->enabled_protocols;
change_protocol = dev->change_protocol; change_protocol = dev->change_protocol;
filter = &dev->scancode_filters[RC_FILTER_NORMAL]; filter = &dev->scancode_filter;
set_filter = dev->s_filter; set_filter = dev->s_filter;
} else { } else {
IR_dprintk(1, "Wakeup protocol change requested\n"); IR_dprintk(1, "Wakeup protocol change requested\n");
current_protocols = &dev->enabled_protocols[RC_FILTER_WAKEUP]; current_protocols = &dev->enabled_wakeup_protocols;
change_protocol = dev->change_wakeup_protocol; change_protocol = dev->change_wakeup_protocol;
filter = &dev->scancode_filters[RC_FILTER_WAKEUP]; filter = &dev->scancode_wakeup_filter;
set_filter = dev->s_wakeup_filter; set_filter = dev->s_wakeup_filter;
} }
@ -1085,9 +1085,9 @@ static ssize_t show_filter(struct device *device,
return -EINVAL; return -EINVAL;
if (fattr->type == RC_FILTER_NORMAL) if (fattr->type == RC_FILTER_NORMAL)
filter = &dev->scancode_filters[RC_FILTER_NORMAL]; filter = &dev->scancode_filter;
else else
filter = &dev->scancode_filters[RC_FILTER_WAKEUP]; filter = &dev->scancode_wakeup_filter;
mutex_lock(&dev->lock); mutex_lock(&dev->lock);
if (fattr->mask) if (fattr->mask)
@ -1140,12 +1140,12 @@ static ssize_t store_filter(struct device *device,
if (fattr->type == RC_FILTER_NORMAL) { if (fattr->type == RC_FILTER_NORMAL) {
set_filter = dev->s_filter; set_filter = dev->s_filter;
enabled_protocols = &dev->enabled_protocols[RC_FILTER_NORMAL]; enabled_protocols = &dev->enabled_protocols;
filter = &dev->scancode_filters[RC_FILTER_NORMAL]; filter = &dev->scancode_filter;
} else { } else {
set_filter = dev->s_wakeup_filter; set_filter = dev->s_wakeup_filter;
enabled_protocols = &dev->enabled_protocols[RC_FILTER_WAKEUP]; enabled_protocols = &dev->enabled_wakeup_protocols;
filter = &dev->scancode_filters[RC_FILTER_WAKEUP]; filter = &dev->scancode_wakeup_filter;
} }
if (!set_filter) if (!set_filter)
@ -1424,7 +1424,7 @@ int rc_register_device(struct rc_dev *dev)
rc = dev->change_protocol(dev, &rc_type); rc = dev->change_protocol(dev, &rc_type);
if (rc < 0) if (rc < 0)
goto out_raw; goto out_raw;
dev->enabled_protocols[RC_FILTER_NORMAL] = rc_type; dev->enabled_protocols = rc_type;
} }
mutex_unlock(&dev->lock); mutex_unlock(&dev->lock);

Просмотреть файл

@ -878,7 +878,7 @@ static struct rc_dev *redrat3_init_rc_dev(struct redrat3_dev *rr3)
rc->dev.parent = dev; rc->dev.parent = dev;
rc->priv = rr3; rc->priv = rr3;
rc->driver_type = RC_DRIVER_IR_RAW; rc->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(rc, RC_BIT_ALL); rc->allowed_protocols = RC_BIT_ALL;
rc->timeout = US_TO_NS(2750); rc->timeout = US_TO_NS(2750);
rc->tx_ir = redrat3_transmit_ir; rc->tx_ir = redrat3_transmit_ir;
rc->s_tx_carrier = redrat3_set_tx_carrier; rc->s_tx_carrier = redrat3_set_tx_carrier;

Просмотреть файл

@ -287,7 +287,7 @@ static int st_rc_probe(struct platform_device *pdev)
st_rc_hardware_init(rc_dev); st_rc_hardware_init(rc_dev);
rdev->driver_type = RC_DRIVER_IR_RAW; rdev->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(rdev, RC_BIT_ALL); rdev->allowed_protocols = RC_BIT_ALL;
/* rx sampling rate is 10Mhz */ /* rx sampling rate is 10Mhz */
rdev->rx_resolution = 100; rdev->rx_resolution = 100;
rdev->timeout = US_TO_NS(MAX_SYMB_TIME); rdev->timeout = US_TO_NS(MAX_SYMB_TIME);

Просмотреть файл

@ -316,7 +316,7 @@ static struct rc_dev *streamzap_init_rc_dev(struct streamzap_ir *sz)
rdev->dev.parent = dev; rdev->dev.parent = dev;
rdev->priv = sz; rdev->priv = sz;
rdev->driver_type = RC_DRIVER_IR_RAW; rdev->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(rdev, RC_BIT_ALL); rdev->allowed_protocols = RC_BIT_ALL;
rdev->driver_name = DRIVER_NAME; rdev->driver_name = DRIVER_NAME;
rdev->map_name = RC_MAP_STREAMZAP; rdev->map_name = RC_MAP_STREAMZAP;

Просмотреть файл

@ -210,7 +210,7 @@ static int sunxi_ir_probe(struct platform_device *pdev)
ir->rc->map_name = ir->map_name ?: RC_MAP_EMPTY; ir->rc->map_name = ir->map_name ?: RC_MAP_EMPTY;
ir->rc->dev.parent = dev; ir->rc->dev.parent = dev;
ir->rc->driver_type = RC_DRIVER_IR_RAW; ir->rc->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(ir->rc, RC_BIT_ALL); ir->rc->allowed_protocols = RC_BIT_ALL;
ir->rc->rx_resolution = SUNXI_IR_SAMPLE; ir->rc->rx_resolution = SUNXI_IR_SAMPLE;
ir->rc->timeout = MS_TO_NS(SUNXI_IR_TIMEOUT); ir->rc->timeout = MS_TO_NS(SUNXI_IR_TIMEOUT);
ir->rc->driver_name = SUNXI_IR_DEV; ir->rc->driver_name = SUNXI_IR_DEV;

Просмотреть файл

@ -318,7 +318,7 @@ static int ttusbir_probe(struct usb_interface *intf,
usb_to_input_id(tt->udev, &rc->input_id); usb_to_input_id(tt->udev, &rc->input_id);
rc->dev.parent = &intf->dev; rc->dev.parent = &intf->dev;
rc->driver_type = RC_DRIVER_IR_RAW; rc->driver_type = RC_DRIVER_IR_RAW;
rc_set_allowed_protocols(rc, RC_BIT_ALL); rc->allowed_protocols = RC_BIT_ALL;
rc->priv = tt; rc->priv = tt;
rc->driver_name = DRIVER_NAME; rc->driver_name = DRIVER_NAME;
rc->map_name = RC_MAP_TT_1500; rc->map_name = RC_MAP_TT_1500;

Просмотреть файл

@ -1082,7 +1082,7 @@ wbcir_probe(struct pnp_dev *device, const struct pnp_device_id *dev_id)
data->dev->dev.parent = &device->dev; data->dev->dev.parent = &device->dev;
data->dev->timeout = MS_TO_NS(100); data->dev->timeout = MS_TO_NS(100);
data->dev->rx_resolution = US_TO_NS(2); data->dev->rx_resolution = US_TO_NS(2);
rc_set_allowed_protocols(data->dev, RC_BIT_ALL); data->dev->allowed_protocols = RC_BIT_ALL;
err = rc_register_device(data->dev); err = rc_register_device(data->dev);
if (err) if (err)

Просмотреть файл

@ -164,7 +164,7 @@ static int dvb_usbv2_remote_init(struct dvb_usb_device *d)
dev->driver_name = (char *) d->props->driver_name; dev->driver_name = (char *) d->props->driver_name;
dev->map_name = d->rc.map_name; dev->map_name = d->rc.map_name;
dev->driver_type = d->rc.driver_type; dev->driver_type = d->rc.driver_type;
rc_set_allowed_protocols(dev, d->rc.allowed_protos); dev->allowed_protocols = d->rc.allowed_protos;
dev->change_protocol = d->rc.change_protocol; dev->change_protocol = d->rc.change_protocol;
dev->priv = d; dev->priv = d;

Просмотреть файл

@ -272,7 +272,7 @@ static int rc_core_dvb_usb_remote_init(struct dvb_usb_device *d)
dev->driver_name = d->props.rc.core.module_name; dev->driver_name = d->props.rc.core.module_name;
dev->map_name = d->props.rc.core.rc_codes; dev->map_name = d->props.rc.core.rc_codes;
dev->change_protocol = d->props.rc.core.change_protocol; dev->change_protocol = d->props.rc.core.change_protocol;
rc_set_allowed_protocols(dev, d->props.rc.core.allowed_protos); dev->allowed_protocols = d->props.rc.core.allowed_protos;
dev->driver_type = d->props.rc.core.driver_type; dev->driver_type = d->props.rc.core.driver_type;
usb_to_input_id(d->udev, &dev->input_id); usb_to_input_id(d->udev, &dev->input_id);
dev->input_name = "IR-receiver inside an USB DVB receiver"; dev->input_name = "IR-receiver inside an USB DVB receiver";

Просмотреть файл

@ -745,7 +745,7 @@ static int em28xx_ir_init(struct em28xx *dev)
case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2: case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2:
rc->map_name = RC_MAP_HAUPPAUGE; rc->map_name = RC_MAP_HAUPPAUGE;
ir->get_key_i2c = em28xx_get_key_em_haup; ir->get_key_i2c = em28xx_get_key_em_haup;
rc_set_allowed_protocols(rc, RC_BIT_RC5); rc->allowed_protocols = RC_BIT_RC5;
break; break;
case EM2820_BOARD_LEADTEK_WINFAST_USBII_DELUXE: case EM2820_BOARD_LEADTEK_WINFAST_USBII_DELUXE:
rc->map_name = RC_MAP_WINFAST_USBII_DELUXE; rc->map_name = RC_MAP_WINFAST_USBII_DELUXE;
@ -761,7 +761,7 @@ static int em28xx_ir_init(struct em28xx *dev)
switch (dev->chip_id) { switch (dev->chip_id) {
case CHIP_ID_EM2860: case CHIP_ID_EM2860:
case CHIP_ID_EM2883: case CHIP_ID_EM2883:
rc_set_allowed_protocols(rc, RC_BIT_RC5 | RC_BIT_NEC); rc->allowed_protocols = RC_BIT_RC5 | RC_BIT_NEC;
ir->get_key = default_polling_getkey; ir->get_key = default_polling_getkey;
break; break;
case CHIP_ID_EM2884: case CHIP_ID_EM2884:
@ -769,8 +769,8 @@ static int em28xx_ir_init(struct em28xx *dev)
case CHIP_ID_EM28174: case CHIP_ID_EM28174:
case CHIP_ID_EM28178: case CHIP_ID_EM28178:
ir->get_key = em2874_polling_getkey; ir->get_key = em2874_polling_getkey;
rc_set_allowed_protocols(rc, RC_BIT_RC5 | RC_BIT_NEC | rc->allowed_protocols = RC_BIT_RC5 | RC_BIT_NEC |
RC_BIT_RC6_0); RC_BIT_RC6_0;
break; break;
default: default:
err = -ENODEV; err = -ENODEV;

Просмотреть файл

@ -441,7 +441,7 @@ int tm6000_ir_init(struct tm6000_core *dev)
ir->rc = rc; ir->rc = rc;
/* input setup */ /* input setup */
rc_set_allowed_protocols(rc, RC_BIT_RC5 | RC_BIT_NEC); rc->allowed_protocols = RC_BIT_RC5 | RC_BIT_NEC;
/* Neded, in order to support NEC remotes with 24 or 32 bits */ /* Neded, in order to support NEC remotes with 24 or 32 bits */
rc->scanmask = 0xffff; rc->scanmask = 0xffff;
rc->priv = ir; rc->priv = ir;

Просмотреть файл

@ -74,10 +74,12 @@ enum rc_filter_type {
* @input_dev: the input child device used to communicate events to userspace * @input_dev: the input child device used to communicate events to userspace
* @driver_type: specifies if protocol decoding is done in hardware or software * @driver_type: specifies if protocol decoding is done in hardware or software
* @idle: used to keep track of RX state * @idle: used to keep track of RX state
* @allowed_protocols: bitmask with the supported RC_BIT_* protocols for each * @allowed_protocols: bitmask with the supported RC_BIT_* protocols
* filter type * @enabled_protocols: bitmask with the enabled RC_BIT_* protocols
* @enabled_protocols: bitmask with the enabled RC_BIT_* protocols for each * @allowed_wakeup_protocols: bitmask with the supported RC_BIT_* wakeup protocols
* filter type * @enabled_wakeup_protocols: bitmask with the enabled RC_BIT_* wakeup protocols
* @scancode_filter: scancode filter
* @scancode_wakeup_filter: scancode wakeup filters
* @scanmask: some hardware decoders are not capable of providing the full * @scanmask: some hardware decoders are not capable of providing the full
* scancode to the application. As this is a hardware limit, we can't do * scancode to the application. As this is a hardware limit, we can't do
* anything with it. Yet, as the same keycode table can be used with other * anything with it. Yet, as the same keycode table can be used with other
@ -97,7 +99,6 @@ enum rc_filter_type {
* @max_timeout: maximum timeout supported by device * @max_timeout: maximum timeout supported by device
* @rx_resolution : resolution (in ns) of input sampler * @rx_resolution : resolution (in ns) of input sampler
* @tx_resolution: resolution (in ns) of output sampler * @tx_resolution: resolution (in ns) of output sampler
* @scancode_filters: scancode filters (indexed by enum rc_filter_type)
* @change_protocol: allow changing the protocol used on hardware decoders * @change_protocol: allow changing the protocol used on hardware decoders
* @change_wakeup_protocol: allow changing the protocol used for wakeup * @change_wakeup_protocol: allow changing the protocol used for wakeup
* filtering * filtering
@ -132,8 +133,12 @@ struct rc_dev {
struct input_dev *input_dev; struct input_dev *input_dev;
enum rc_driver_type driver_type; enum rc_driver_type driver_type;
bool idle; bool idle;
u64 allowed_protocols[RC_FILTER_MAX]; u64 allowed_protocols;
u64 enabled_protocols[RC_FILTER_MAX]; u64 enabled_protocols;
u64 allowed_wakeup_protocols;
u64 enabled_wakeup_protocols;
struct rc_scancode_filter scancode_filter;
struct rc_scancode_filter scancode_wakeup_filter;
u32 users; u32 users;
u32 scanmask; u32 scanmask;
void *priv; void *priv;
@ -150,7 +155,6 @@ struct rc_dev {
u32 max_timeout; u32 max_timeout;
u32 rx_resolution; u32 rx_resolution;
u32 tx_resolution; u32 tx_resolution;
struct rc_scancode_filter scancode_filters[RC_FILTER_MAX];
int (*change_protocol)(struct rc_dev *dev, u64 *rc_type); int (*change_protocol)(struct rc_dev *dev, u64 *rc_type);
int (*change_wakeup_protocol)(struct rc_dev *dev, u64 *rc_type); int (*change_wakeup_protocol)(struct rc_dev *dev, u64 *rc_type);
int (*open)(struct rc_dev *dev); int (*open)(struct rc_dev *dev);
@ -171,42 +175,6 @@ struct rc_dev {
#define to_rc_dev(d) container_of(d, struct rc_dev, dev) #define to_rc_dev(d) container_of(d, struct rc_dev, dev)
static inline bool rc_protocols_allowed(struct rc_dev *rdev, u64 protos)
{
return rdev->allowed_protocols[RC_FILTER_NORMAL] & protos;
}
/* should be called prior to registration or with mutex held */
static inline void rc_set_allowed_protocols(struct rc_dev *rdev, u64 protos)
{
rdev->allowed_protocols[RC_FILTER_NORMAL] = protos;
}
static inline bool rc_protocols_enabled(struct rc_dev *rdev, u64 protos)
{
return rdev->enabled_protocols[RC_FILTER_NORMAL] & protos;
}
/* should be called prior to registration or with mutex held */
static inline void rc_set_enabled_protocols(struct rc_dev *rdev, u64 protos)
{
rdev->enabled_protocols[RC_FILTER_NORMAL] = protos;
}
/* should be called prior to registration or with mutex held */
static inline void rc_set_allowed_wakeup_protocols(struct rc_dev *rdev,
u64 protos)
{
rdev->allowed_protocols[RC_FILTER_WAKEUP] = protos;
}
/* should be called prior to registration or with mutex held */
static inline void rc_set_enabled_wakeup_protocols(struct rc_dev *rdev,
u64 protos)
{
rdev->enabled_protocols[RC_FILTER_WAKEUP] = protos;
}
/* /*
* From rc-main.c * From rc-main.c
* Those functions can be used on any type of Remote Controller. They * Those functions can be used on any type of Remote Controller. They