Skip to content

Commit

Permalink
[media] rc: abstract access to allowed/enabled protocols
Browse files Browse the repository at this point in the history
The allowed and enabled protocol masks need to be expanded to be per
filter type in order to support wakeup filter protocol selection. To
ease that process abstract access to the rc_dev::allowed_protos and
rc_dev::enabled_protocols members with inline functions.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Reviewed-by: Antti Seppälä <a.seppala@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
  • Loading branch information
James Hogan authored and mchehab committed Mar 11, 2014
1 parent b8c7d91 commit 1a1934f
Show file tree
Hide file tree
Showing 36 changed files with 73 additions and 50 deletions.
2 changes: 1 addition & 1 deletion drivers/hid/hid-picolcd_cir.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ int picolcd_init_cir(struct picolcd_data *data, struct hid_report *report)

rdev->priv = data;
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rdev, RC_BIT_ALL);
rdev->open = picolcd_cir_open;
rdev->close = picolcd_cir_close;
rdev->input_name = data->hdev->name;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/common/siano/smsir.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ int sms_ir_init(struct smscore_device_t *coredev)

dev->priv = coredev;
dev->driver_type = RC_DRIVER_IR_RAW;
dev->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(dev, RC_BIT_ALL);
dev->map_name = sms_get_board(board_id)->rc_codes;
dev->driver_name = MODULE_NAME;

Expand Down
4 changes: 2 additions & 2 deletions drivers/media/i2c/ir-kbd-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -431,8 +431,8 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
* Initialize the other fields of rc_dev
*/
rc->map_name = ir->ir_codes;
rc->allowed_protos = rc_type;
rc->enabled_protocols = rc_type;
rc_set_allowed_protocols(rc, rc_type);
rc_set_enabled_protocols(rc, rc_type);
if (!rc->driver_name)
rc->driver_name = MODULE_NAME;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/pci/cx23885/cx23885-input.c
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ int cx23885_input_init(struct cx23885_dev *dev)
}
rc->dev.parent = &dev->pci->dev;
rc->driver_type = driver_type;
rc->allowed_protos = allowed_protos;
rc_set_allowed_protocols(rc, allowed_protos);
rc->priv = kernel_ir;
rc->open = cx23885_input_ir_open;
rc->close = cx23885_input_ir_close;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/pci/cx88/cx88-input.c
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
dev->timeout = 10 * 1000 * 1000; /* 10 ms */
} else {
dev->driver_type = RC_DRIVER_SCANCODE;
dev->allowed_protos = rc_type;
rc_set_allowed_protocols(dev, rc_type);
}

ir->core = core;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/ati_remote.c
Original file line number Diff line number Diff line change
Expand Up @@ -784,7 +784,7 @@ static void ati_remote_rc_init(struct ati_remote *ati_remote)

rdev->priv = ati_remote;
rdev->driver_type = RC_DRIVER_SCANCODE;
rdev->allowed_protos = RC_BIT_OTHER;
rc_set_allowed_protocols(rdev, RC_BIT_OTHER);
rdev->driver_name = "ati_remote";

rdev->open = ati_remote_rc_open;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/ene_ir.c
Original file line number Diff line number Diff line change
Expand Up @@ -1059,7 +1059,7 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
learning_mode_force = false;

rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rdev, RC_BIT_ALL);
rdev->priv = dev;
rdev->open = ene_open;
rdev->close = ene_close;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/fintek-cir.c
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,7 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
/* Set up the rc device */
rdev->priv = fintek;
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rdev, RC_BIT_ALL);
rdev->open = fintek_open;
rdev->close = fintek_close;
rdev->input_name = FINTEK_DESCRIPTION;
Expand Down
4 changes: 2 additions & 2 deletions drivers/media/rc/gpio-ir-recv.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,9 @@ static int gpio_ir_recv_probe(struct platform_device *pdev)
rcdev->dev.parent = &pdev->dev;
rcdev->driver_name = GPIO_IR_DRIVER_NAME;
if (pdata->allowed_protos)
rcdev->allowed_protos = pdata->allowed_protos;
rc_set_allowed_protocols(rcdev, pdata->allowed_protos);
else
rcdev->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rcdev, RC_BIT_ALL);
rcdev->map_name = pdata->map_name ?: RC_MAP_EMPTY;

gpio_dev->rcdev = rcdev;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/iguanair.c
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,7 @@ static int iguanair_probe(struct usb_interface *intf,
usb_to_input_id(ir->udev, &rc->input_id);
rc->dev.parent = &intf->dev;
rc->driver_type = RC_DRIVER_IR_RAW;
rc->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rc, RC_BIT_ALL);
rc->priv = ir;
rc->open = iguanair_open;
rc->close = iguanair_close;
Expand Down
7 changes: 4 additions & 3 deletions drivers/media/rc/imon.c
Original file line number Diff line number Diff line change
Expand Up @@ -1017,7 +1017,7 @@ static int imon_ir_change_protocol(struct rc_dev *rc, u64 *rc_type)
unsigned char ir_proto_packet[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86 };

if (*rc_type && !(*rc_type & rc->allowed_protos))
if (*rc_type && !rc_protocols_allowed(rc, *rc_type))
dev_warn(dev, "Looks like you're trying to use an IR protocol "
"this device does not support\n");

Expand Down Expand Up @@ -1867,7 +1867,8 @@ static struct rc_dev *imon_init_rdev(struct imon_context *ictx)

rdev->priv = ictx;
rdev->driver_type = RC_DRIVER_SCANCODE;
rdev->allowed_protos = RC_BIT_OTHER | RC_BIT_RC6_MCE; /* iMON PAD or 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->driver_name = MOD_NAME;

Expand All @@ -1880,7 +1881,7 @@ static struct rc_dev *imon_init_rdev(struct imon_context *ictx)

if (ictx->product == 0xffdc) {
imon_get_ffdc_type(ictx);
rdev->allowed_protos = ictx->rc_type;
rc_set_allowed_protocols(rdev, ictx->rc_type);
}

imon_set_display_type(ictx);
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/ir-jvc-decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

if (!(dev->enabled_protocols & RC_BIT_JVC))
if (!rc_protocols_enabled(dev, RC_BIT_JVC))
return 0;

if (!is_timing_event(ev)) {
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/ir-lirc-codec.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
int sample;

if (!(dev->enabled_protocols & RC_BIT_LIRC))
if (!rc_protocols_enabled(dev, RC_BIT_LIRC))
return 0;

if (!dev->raw->lirc.drv || !dev->raw->lirc.drv->rbuf)
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/ir-mce_kbd-decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ static int ir_mce_kbd_decode(struct rc_dev *dev, struct ir_raw_event ev)
u32 scancode;
unsigned long delay;

if (!(dev->enabled_protocols & RC_BIT_MCE_KBD))
if (!rc_protocols_enabled(dev, RC_BIT_MCE_KBD))
return 0;

if (!is_timing_event(ev)) {
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/ir-nec-decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
bool send_32bits = false;

if (!(dev->enabled_protocols & RC_BIT_NEC))
if (!rc_protocols_enabled(dev, RC_BIT_NEC))
return 0;

if (!is_timing_event(ev)) {
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/ir-raw.c
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ int ir_raw_event_register(struct rc_dev *dev)
return -ENOMEM;

dev->raw->dev = dev;
dev->enabled_protocols = ~0;
rc_set_enabled_protocols(dev, ~0);
rc = kfifo_alloc(&dev->raw->kfifo,
sizeof(struct ir_raw_event) * MAX_IR_EVENT_SIZE,
GFP_KERNEL);
Expand Down
6 changes: 3 additions & 3 deletions drivers/media/rc/ir-rc5-decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ static int ir_rc5_decode(struct rc_dev *dev, struct ir_raw_event ev)
u8 toggle;
u32 scancode;

if (!(dev->enabled_protocols & (RC_BIT_RC5 | RC_BIT_RC5X)))
if (!rc_protocols_enabled(dev, RC_BIT_RC5 | RC_BIT_RC5X))
return 0;

if (!is_timing_event(ev)) {
Expand Down Expand Up @@ -128,7 +128,7 @@ static int ir_rc5_decode(struct rc_dev *dev, struct ir_raw_event ev)
if (data->wanted_bits == RC5X_NBITS) {
/* RC5X */
u8 xdata, command, system;
if (!(dev->enabled_protocols & RC_BIT_RC5X)) {
if (!rc_protocols_enabled(dev, RC_BIT_RC5X)) {
data->state = STATE_INACTIVE;
return 0;
}
Expand All @@ -145,7 +145,7 @@ static int ir_rc5_decode(struct rc_dev *dev, struct ir_raw_event ev)
} else {
/* RC5 */
u8 command, system;
if (!(dev->enabled_protocols & RC_BIT_RC5)) {
if (!rc_protocols_enabled(dev, RC_BIT_RC5)) {
data->state = STATE_INACTIVE;
return 0;
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/ir-rc5-sz-decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ static int ir_rc5_sz_decode(struct rc_dev *dev, struct ir_raw_event ev)
u8 toggle, command, system;
u32 scancode;

if (!(dev->enabled_protocols & RC_BIT_RC5_SZ))
if (!rc_protocols_enabled(dev, RC_BIT_RC5_SZ))
return 0;

if (!is_timing_event(ev)) {
Expand Down
6 changes: 3 additions & 3 deletions drivers/media/rc/ir-rc6-decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,9 @@ static int ir_rc6_decode(struct rc_dev *dev, struct ir_raw_event ev)
u32 scancode;
u8 toggle;

if (!(dev->enabled_protocols &
(RC_BIT_RC6_0 | RC_BIT_RC6_6A_20 | RC_BIT_RC6_6A_24 |
RC_BIT_RC6_6A_32 | RC_BIT_RC6_MCE)))
if (!rc_protocols_enabled(dev, RC_BIT_RC6_0 | RC_BIT_RC6_6A_20 |
RC_BIT_RC6_6A_24 | RC_BIT_RC6_6A_32 |
RC_BIT_RC6_MCE))
return 0;

if (!is_timing_event(ev)) {
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/ir-sanyo-decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ static int ir_sanyo_decode(struct rc_dev *dev, struct ir_raw_event ev)
u32 scancode;
u8 address, command, not_command;

if (!(dev->enabled_protocols & RC_BIT_SANYO))
if (!rc_protocols_enabled(dev, RC_BIT_SANYO))
return 0;

if (!is_timing_event(ev)) {
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/ir-sharp-decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
u32 msg, echo, address, command, scancode;

if (!(dev->enabled_protocols & RC_BIT_SHARP))
if (!rc_protocols_enabled(dev, RC_BIT_SHARP))
return 0;

if (!is_timing_event(ev)) {
Expand Down
10 changes: 5 additions & 5 deletions drivers/media/rc/ir-sony-decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)
u32 scancode;
u8 device, subdevice, function;

if (!(dev->enabled_protocols &
(RC_BIT_SONY12 | RC_BIT_SONY15 | RC_BIT_SONY20)))
if (!rc_protocols_enabled(dev, RC_BIT_SONY12 | RC_BIT_SONY15 |
RC_BIT_SONY20))
return 0;

if (!is_timing_event(ev)) {
Expand Down Expand Up @@ -124,7 +124,7 @@ static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)

switch (data->count) {
case 12:
if (!(dev->enabled_protocols & RC_BIT_SONY12)) {
if (!rc_protocols_enabled(dev, RC_BIT_SONY12)) {
data->state = STATE_INACTIVE;
return 0;
}
Expand All @@ -133,7 +133,7 @@ static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)
function = bitrev8((data->bits >> 4) & 0xFE);
break;
case 15:
if (!(dev->enabled_protocols & RC_BIT_SONY15)) {
if (!rc_protocols_enabled(dev, RC_BIT_SONY15)) {
data->state = STATE_INACTIVE;
return 0;
}
Expand All @@ -142,7 +142,7 @@ static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)
function = bitrev8((data->bits >> 7) & 0xFE);
break;
case 20:
if (!(dev->enabled_protocols & RC_BIT_SONY20)) {
if (!rc_protocols_enabled(dev, RC_BIT_SONY20)) {
data->state = STATE_INACTIVE;
return 0;
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/ite-cir.c
Original file line number Diff line number Diff line change
Expand Up @@ -1563,7 +1563,7 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
/* set up ir-core props */
rdev->priv = itdev;
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rdev, RC_BIT_ALL);
rdev->open = ite_open;
rdev->close = ite_close;
rdev->s_idle = ite_s_idle;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/mceusb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1211,7 +1211,7 @@ static struct rc_dev *mceusb_init_rc_dev(struct mceusb_dev *ir)
rc->dev.parent = dev;
rc->priv = ir;
rc->driver_type = RC_DRIVER_IR_RAW;
rc->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rc, RC_BIT_ALL);
rc->timeout = MS_TO_NS(100);
if (!ir->flags.no_tx) {
rc->s_tx_mask = mceusb_set_tx_mask;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/nuvoton-cir.c
Original file line number Diff line number Diff line change
Expand Up @@ -1044,7 +1044,7 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
/* Set up the rc device */
rdev->priv = nvt;
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rdev, RC_BIT_ALL);
rdev->open = nvt_open;
rdev->close = nvt_close;
rdev->tx_ir = nvt_tx_ir;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/rc-loopback.c
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ static int __init loop_init(void)
rc->map_name = RC_MAP_EMPTY;
rc->priv = &loopdev;
rc->driver_type = RC_DRIVER_IR_RAW;
rc->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rc, RC_BIT_ALL);
rc->timeout = 100 * 1000 * 1000; /* 100 ms */
rc->min_timeout = 1;
rc->max_timeout = UINT_MAX;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/redrat3.c
Original file line number Diff line number Diff line change
Expand Up @@ -922,7 +922,7 @@ static struct rc_dev *redrat3_init_rc_dev(struct redrat3_dev *rr3)
rc->dev.parent = dev;
rc->priv = rr3;
rc->driver_type = RC_DRIVER_IR_RAW;
rc->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rc, RC_BIT_ALL);
rc->timeout = US_TO_NS(2750);
rc->tx_ir = redrat3_transmit_ir;
rc->s_tx_carrier = redrat3_set_tx_carrier;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/st_rc.c
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ static int st_rc_probe(struct platform_device *pdev)
st_rc_hardware_init(rc_dev);

rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rdev, RC_BIT_ALL);
/* rx sampling rate is 10Mhz */
rdev->rx_resolution = 100;
rdev->timeout = US_TO_NS(MAX_SYMB_TIME);
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/streamzap.c
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ static struct rc_dev *streamzap_init_rc_dev(struct streamzap_ir *sz)
rdev->dev.parent = dev;
rdev->priv = sz;
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rdev, RC_BIT_ALL);
rdev->driver_name = DRIVER_NAME;
rdev->map_name = RC_MAP_STREAMZAP;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/ttusbir.c
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ static int ttusbir_probe(struct usb_interface *intf,
usb_to_input_id(tt->udev, &rc->input_id);
rc->dev.parent = &intf->dev;
rc->driver_type = RC_DRIVER_IR_RAW;
rc->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(rc, RC_BIT_ALL);
rc->priv = tt;
rc->driver_name = DRIVER_NAME;
rc->map_name = RC_MAP_TT_1500;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/winbond-cir.c
Original file line number Diff line number Diff line change
Expand Up @@ -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->timeout = MS_TO_NS(100);
data->dev->rx_resolution = US_TO_NS(2);
data->dev->allowed_protos = RC_BIT_ALL;
rc_set_allowed_protocols(data->dev, RC_BIT_ALL);

err = rc_register_device(data->dev);
if (err)
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ static int dvb_usbv2_remote_init(struct dvb_usb_device *d)
dev->driver_name = (char *) d->props->driver_name;
dev->map_name = d->rc.map_name;
dev->driver_type = d->rc.driver_type;
dev->allowed_protos = d->rc.allowed_protos;
rc_set_allowed_protocols(dev, d->rc.allowed_protos);
dev->change_protocol = d->rc.change_protocol;
dev->priv = d;

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/usb/dvb-usb/dvb-usb-remote.c
Original file line number Diff line number Diff line change
Expand Up @@ -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->map_name = d->props.rc.core.rc_codes;
dev->change_protocol = d->props.rc.core.change_protocol;
dev->allowed_protos = d->props.rc.core.allowed_protos;
rc_set_allowed_protocols(dev, d->props.rc.core.allowed_protos);
dev->driver_type = d->props.rc.core.driver_type;
usb_to_input_id(d->udev, &dev->input_id);
dev->input_name = "IR-receiver inside an USB DVB receiver";
Expand Down
Loading

0 comments on commit 1a1934f

Please sign in to comment.