V4L/DVB (13680): ir: use unsigned long instead of enum
When preparing the linux-next patches, I got those errors:
include/media/ir-core.h:29: warning: left shift count >= width of type
In file included from include/media/ir-common.h:29,
from drivers/media/video/ir-kbd-i2c.c:50:
drivers/media/video/ir-kbd-i2c.c: In function ‘ir_probe’:
drivers/media/video/ir-kbd-i2c.c:324: warning: left shift count >= width of type
Unfortunately, enum is 32 bits on i386. As we define IR_TYPE_OTHER as 1<<63,
it won't work on non 64 bits arch.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/drivers/media/IR/ir-functions.c b/drivers/media/IR/ir-functions.c
index b501ac9..ab06919 100644
--- a/drivers/media/IR/ir-functions.c
+++ b/drivers/media/IR/ir-functions.c
@@ -52,7 +52,7 @@
/* -------------------------------------------------------------------------- */
int ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
- const enum ir_type ir_type)
+ const u64 ir_type)
{
ir->ir_type = ir_type;
diff --git a/drivers/media/IR/ir-sysfs.c b/drivers/media/IR/ir-sysfs.c
index d73589a..d67c11d 100644
--- a/drivers/media/IR/ir-sysfs.c
+++ b/drivers/media/IR/ir-sysfs.c
@@ -39,9 +39,9 @@
{
char *s;
struct ir_input_dev *ir_dev = dev_get_drvdata(d);
- enum ir_type ir_type = ir_dev->rc_tab.ir_type;
+ u64 ir_type = ir_dev->rc_tab.ir_type;
- IR_dprintk(1, "Current protocol is %ld\n", ir_type);
+ IR_dprintk(1, "Current protocol is %lld\n", (long long)ir_type);
/* FIXME: doesn't support multiple protocols at the same time */
if (ir_type == IR_TYPE_UNKNOWN)
@@ -77,7 +77,7 @@
size_t len)
{
struct ir_input_dev *ir_dev = dev_get_drvdata(d);
- enum ir_type ir_type = IR_TYPE_UNKNOWN;
+ u64 ir_type = IR_TYPE_UNKNOWN;
int rc = -EINVAL;
unsigned long flags;
char *buf;
@@ -92,7 +92,8 @@
ir_type = IR_TYPE_NEC;
if (ir_type == IR_TYPE_UNKNOWN) {
- IR_dprintk(1, "Error setting protocol to %ld\n", ir_type);
+ IR_dprintk(1, "Error setting protocol to %lld\n",
+ (long long)ir_type);
return -EINVAL;
}
@@ -101,7 +102,8 @@
ir_type);
if (rc < 0) {
- IR_dprintk(1, "Error setting protocol to %ld\n", ir_type);
+ IR_dprintk(1, "Error setting protocol to %lld\n",
+ (long long)ir_type);
return -EINVAL;
}
@@ -109,7 +111,8 @@
ir_dev->rc_tab.ir_type = ir_type;
spin_unlock_irqrestore(&ir_dev->rc_tab.lock, flags);
- IR_dprintk(1, "Current protocol is %ld\n", ir_type);
+ IR_dprintk(1, "Current protocol is %lld\n",
+ (long long)ir_type);
return len;
}
diff --git a/drivers/media/dvb/dm1105/dm1105.c b/drivers/media/dvb/dm1105/dm1105.c
index 414d3b2..aadf803 100644
--- a/drivers/media/dvb/dm1105/dm1105.c
+++ b/drivers/media/dvb/dm1105/dm1105.c
@@ -578,7 +578,7 @@
{
struct input_dev *input_dev;
struct ir_scancode_table *ir_codes = &ir_codes_dm1105_nec_table;
- enum ir_type ir_type = IR_TYPE_OTHER;
+ u64 ir_type = IR_TYPE_OTHER;
int err = -ENOMEM;
input_dev = input_allocate_device();
diff --git a/drivers/media/video/bt8xx/bttv-input.c b/drivers/media/video/bt8xx/bttv-input.c
index f8053fd..b320dbd 100644
--- a/drivers/media/video/bt8xx/bttv-input.c
+++ b/drivers/media/video/bt8xx/bttv-input.c
@@ -247,7 +247,7 @@
struct card_ir *ir;
struct ir_scancode_table *ir_codes = NULL;
struct input_dev *input_dev;
- enum ir_type ir_type = IR_TYPE_OTHER;
+ u64 ir_type = IR_TYPE_OTHER;
int err = -ENOMEM;
if (!btv->has_remote)
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c
index 49c0753..de180d4 100644
--- a/drivers/media/video/cx88/cx88-input.c
+++ b/drivers/media/video/cx88/cx88-input.c
@@ -192,7 +192,7 @@
struct cx88_IR *ir;
struct input_dev *input_dev;
struct ir_scancode_table *ir_codes = NULL;
- enum ir_type ir_type = IR_TYPE_OTHER;
+ u64 ir_type = IR_TYPE_OTHER;
int err = -ENOMEM;
ir = kzalloc(sizeof(*ir), GFP_KERNEL);
diff --git a/drivers/media/video/em28xx/em28xx-input.c b/drivers/media/video/em28xx/em28xx-input.c
index 6746223..69dcf0c 100644
--- a/drivers/media/video/em28xx/em28xx-input.c
+++ b/drivers/media/video/em28xx/em28xx-input.c
@@ -340,7 +340,7 @@
cancel_delayed_work_sync(&ir->work);
}
-int em28xx_ir_change_protocol(void *priv, enum ir_type ir_type)
+int em28xx_ir_change_protocol(void *priv, u64 ir_type)
{
int rc = 0;
struct em28xx_IR *ir = priv;
diff --git a/drivers/media/video/ir-kbd-i2c.c b/drivers/media/video/ir-kbd-i2c.c
index 4cd75a3..094e21d 100644
--- a/drivers/media/video/ir-kbd-i2c.c
+++ b/drivers/media/video/ir-kbd-i2c.c
@@ -299,7 +299,7 @@
{
struct ir_scancode_table *ir_codes = NULL;
const char *name = NULL;
- enum ir_type ir_type = 0;
+ u64 ir_type = 0;
struct IR_i2c *ir;
struct input_dev *input_dev;
struct i2c_adapter *adap = client->adapter;
diff --git a/drivers/media/video/saa7134/saa7134-input.c b/drivers/media/video/saa7134/saa7134-input.c
index 71b4b01..a4eaf1b 100644
--- a/drivers/media/video/saa7134/saa7134-input.c
+++ b/drivers/media/video/saa7134/saa7134-input.c
@@ -460,7 +460,7 @@
int polling = 0;
int rc5_gpio = 0;
int nec_gpio = 0;
- enum ir_type ir_type = IR_TYPE_OTHER;
+ u64 ir_type = IR_TYPE_OTHER;
int err;
if (dev->has_remote != SAA7134_REMOTE_GPIO)
diff --git a/include/media/ir-common.h b/include/media/ir-common.h
index 1b43b77..015db75 100644
--- a/include/media/ir-common.h
+++ b/include/media/ir-common.h
@@ -35,7 +35,7 @@
struct ir_input_state {
/* configuration */
- enum ir_type ir_type;
+ u64 ir_type;
/* key info */
u32 ir_key; /* ir scancode */
@@ -84,7 +84,7 @@
/* Routines from ir-functions.c */
int ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
- const enum ir_type ir_type);
+ const u64 ir_type);
void ir_input_nokey(struct input_dev *dev, struct ir_input_state *ir);
void ir_input_keydown(struct input_dev *dev, struct ir_input_state *ir,
u32 ir_key);
diff --git a/include/media/ir-core.h b/include/media/ir-core.h
index a6d07de..d96f25a 100644
--- a/include/media/ir-core.h
+++ b/include/media/ir-core.h
@@ -21,13 +21,11 @@
#define IR_dprintk(level, fmt, arg...) if (ir_core_debug >= level) \
printk(KERN_DEBUG "%s: " fmt , __func__, ## arg)
-enum ir_type {
- IR_TYPE_UNKNOWN = 0,
- IR_TYPE_RC5 = 1L << 0, /* Philips RC5 protocol */
- IR_TYPE_PD = 1L << 1, /* Pulse distance encoded IR */
- IR_TYPE_NEC = 1L << 2,
- IR_TYPE_OTHER = 1L << 63,
-};
+#define IR_TYPE_UNKNOWN 0
+#define IR_TYPE_RC5 (1 << 0) /* Philips RC5 protocol */
+#define IR_TYPE_PD (1 << 1) /* Pulse distance encoded IR */
+#define IR_TYPE_NEC (1 << 2)
+#define IR_TYPE_OTHER (((u64)1) << 63l)
struct ir_scancode {
u16 scancode;
@@ -37,14 +35,14 @@
struct ir_scancode_table {
struct ir_scancode *scan;
int size;
- enum ir_type ir_type;
+ u64 ir_type;
spinlock_t lock;
};
struct ir_dev_props {
unsigned long allowed_protos;
void *priv;
- int (*change_protocol)(void *priv, enum ir_type ir_type);
+ int (*change_protocol)(void *priv, u64 ir_type);
};
diff --git a/include/media/ir-kbd-i2c.h b/include/media/ir-kbd-i2c.h
index 45926e3..9142936 100644
--- a/include/media/ir-kbd-i2c.h
+++ b/include/media/ir-kbd-i2c.h
@@ -36,7 +36,7 @@
struct IR_i2c_init_data {
struct ir_scancode_table *ir_codes;
const char *name;
- enum ir_type type; /* IR_TYPE_RC5, IR_TYPE_PD, etc */
+ u64 type; /* IR_TYPE_RC5, IR_TYPE_PD, etc */
/*
* Specify either a function pointer or a value indicating one of
* ir_kbd_i2c's internal get_key functions