Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 366740
b: refs/heads/master
c: 9719afa
h: refs/heads/master
v: v3
  • Loading branch information
David Härdeman authored and Mauro Carvalho Chehab committed Mar 23, 2013
1 parent 0190237 commit 9a2a420
Show file tree
Hide file tree
Showing 15 changed files with 29 additions and 39 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: efa914d7d05e69013054710e6aacaf225b8fc2a2
refs/heads/master: 9719afae5e589b409e137c36f89073d134f0de33
1 change: 1 addition & 0 deletions trunk/drivers/media/i2c/ir-kbd-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
*/
rc->map_name = ir->ir_codes;
rc->allowed_protos = rc_type;
rc->enabled_protocols = rc_type;
if (!rc->driver_name)
rc->driver_name = MODULE_NAME;

Expand Down
2 changes: 1 addition & 1 deletion trunk/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->raw->enabled_protocols & RC_BIT_JVC))
if (!(dev->enabled_protocols & RC_BIT_JVC))
return 0;

if (!is_timing_event(ev)) {
Expand Down
2 changes: 1 addition & 1 deletion trunk/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->raw->enabled_protocols & RC_BIT_LIRC))
if (!(dev->enabled_protocols & RC_BIT_LIRC))
return 0;

if (!dev->raw->lirc.drv || !dev->raw->lirc.drv->rbuf)
Expand Down
2 changes: 1 addition & 1 deletion trunk/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->raw->enabled_protocols & RC_BIT_MCE_KBD))
if (!(dev->enabled_protocols & RC_BIT_MCE_KBD))
return 0;

if (!is_timing_event(ev)) {
Expand Down
2 changes: 1 addition & 1 deletion trunk/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->raw->enabled_protocols & RC_BIT_NEC))
if (!(dev->enabled_protocols & RC_BIT_NEC))
return 0;

if (!is_timing_event(ev)) {
Expand Down
2 changes: 1 addition & 1 deletion trunk/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->raw->enabled_protocols = ~0;
dev->enabled_protocols = ~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 trunk/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->raw->enabled_protocols & (RC_BIT_RC5 | RC_BIT_RC5X)))
if (!(dev->enabled_protocols & (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->raw->enabled_protocols & RC_BIT_RC5X)) {
if (!(dev->enabled_protocols & 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->raw->enabled_protocols & RC_BIT_RC5)) {
if (!(dev->enabled_protocols & RC_BIT_RC5)) {
data->state = STATE_INACTIVE;
return 0;
}
Expand Down
2 changes: 1 addition & 1 deletion trunk/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->raw->enabled_protocols & RC_BIT_RC5_SZ))
if (!(dev->enabled_protocols & RC_BIT_RC5_SZ))
return 0;

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

if (!(dev->raw->enabled_protocols &
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)))
return 0;
Expand Down
2 changes: 1 addition & 1 deletion trunk/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->raw->enabled_protocols & RC_BIT_SANYO))
if (!(dev->enabled_protocols & RC_BIT_SANYO))
return 0;

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

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

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->raw->enabled_protocols & RC_BIT_SONY12)) {
if (!(dev->enabled_protocols & 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->raw->enabled_protocols & RC_BIT_SONY15)) {
if (!(dev->enabled_protocols & 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->raw->enabled_protocols & RC_BIT_SONY20)) {
if (!(dev->enabled_protocols & RC_BIT_SONY20)) {
data->state = STATE_INACTIVE;
return 0;
}
Expand Down
1 change: 0 additions & 1 deletion trunk/drivers/media/rc/rc-core-priv.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ struct ir_raw_event_ctrl {
ktime_t last_event; /* when last event occurred */
enum raw_event_type last_type; /* last event type */
struct rc_dev *dev; /* pointer to the parent rc_dev */
u64 enabled_protocols; /* enabled raw protocol decoders */

/* raw decoder state follows */
struct ir_raw_event prev_ev;
Expand Down
32 changes: 10 additions & 22 deletions trunk/drivers/media/rc/rc-main.c
Original file line number Diff line number Diff line change
Expand Up @@ -783,13 +783,12 @@ static ssize_t show_protocols(struct device *device,

mutex_lock(&dev->lock);

if (dev->driver_type == RC_DRIVER_SCANCODE) {
enabled = dev->rc_map.rc_type;
enabled = dev->enabled_protocols;
if (dev->driver_type == RC_DRIVER_SCANCODE)
allowed = dev->allowed_protos;
} else if (dev->raw) {
enabled = dev->raw->enabled_protocols;
else if (dev->raw)
allowed = ir_raw_get_allowed_protocols();
} else {
else {
mutex_unlock(&dev->lock);
return -ENODEV;
}
Expand Down Expand Up @@ -847,7 +846,6 @@ static ssize_t store_protocols(struct device *device,
u64 type;
u64 mask;
int rc, i, count = 0;
unsigned long flags;
ssize_t ret;

/* Device is being removed */
Expand All @@ -856,15 +854,12 @@ static ssize_t store_protocols(struct device *device,

mutex_lock(&dev->lock);

if (dev->driver_type == RC_DRIVER_SCANCODE)
type = dev->rc_map.rc_type;
else if (dev->raw)
type = dev->raw->enabled_protocols;
else {
if (dev->driver_type != RC_DRIVER_SCANCODE && !dev->raw) {
IR_dprintk(1, "Protocol switching not supported\n");
ret = -EINVAL;
goto out;
}
type = dev->enabled_protocols;

while ((tmp = strsep((char **) &data, " \n")) != NULL) {
if (!*tmp)
Expand Down Expand Up @@ -922,14 +917,7 @@ static ssize_t store_protocols(struct device *device,
}
}

if (dev->driver_type == RC_DRIVER_SCANCODE) {
spin_lock_irqsave(&dev->rc_map.lock, flags);
dev->rc_map.rc_type = type;
spin_unlock_irqrestore(&dev->rc_map.lock, flags);
} else {
dev->raw->enabled_protocols = type;
}

dev->enabled_protocols = type;
IR_dprintk(1, "Current protocol(s): 0x%llx\n",
(long long)type);

Expand Down Expand Up @@ -1068,9 +1056,8 @@ int rc_register_device(struct rc_dev *dev)
/*
* Take the lock here, as the device sysfs node will appear
* when device_add() is called, which may trigger an ir-keytable udev
* rule, which will in turn call show_protocols and access either
* dev->rc_map.rc_type or dev->raw->enabled_protocols before it has
* been initialized.
* rule, which will in turn call show_protocols and access
* dev->enabled_protocols before it has been initialized.
*/
mutex_lock(&dev->lock);

Expand Down Expand Up @@ -1132,6 +1119,7 @@ int rc_register_device(struct rc_dev *dev)
rc = dev->change_protocol(dev, &rc_type);
if (rc < 0)
goto out_raw;
dev->enabled_protocols = rc_type;
}

mutex_unlock(&dev->lock);
Expand Down
2 changes: 2 additions & 0 deletions trunk/include/media/rc-core.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ enum rc_driver_type {
* @driver_type: specifies if protocol decoding is done in hardware or software
* @idle: used to keep track of RX state
* @allowed_protos: bitmask with the supported RC_BIT_* protocols
* @enabled_protocols: bitmask with the enabled RC_BIT_* protocols
* @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
* anything with it. Yet, as the same keycode table can be used with other
Expand Down Expand Up @@ -99,6 +100,7 @@ struct rc_dev {
enum rc_driver_type driver_type;
bool idle;
u64 allowed_protos;
u64 enabled_protocols;
u32 scanmask;
void *priv;
spinlock_t keylock;
Expand Down

0 comments on commit 9a2a420

Please sign in to comment.