Fix backport tree compilations with kernels older than 2.6.33. Compile tested only, with 2.6.32.4 kernel. Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> diff --git a/linux/drivers/media/IR/ir-core-priv.h b/linux/drivers/media/IR/ir-core-priv.h --- a/linux/drivers/media/IR/ir-core-priv.h +++ b/linux/drivers/media/IR/ir-core-priv.h @@ -28,7 +28,11 @@ struct ir_raw_handler { struct ir_raw_event_ctrl { struct work_struct rx_work; /* for the rx decoding workqueue */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33) + struct kfifo *kfifo; /* fifo for the pulse/space durations */ +#else struct kfifo kfifo; /* fifo for the pulse/space durations */ +#endif ktime_t last_event; /* when last event occurred */ enum raw_event_type last_type; /* last event type */ struct input_dev *input_dev; /* pointer to the parent input_dev */ diff --git a/linux/drivers/media/IR/ir-raw-event.c b/linux/drivers/media/IR/ir-raw-event.c --- a/linux/drivers/media/IR/ir-raw-event.c +++ b/linux/drivers/media/IR/ir-raw-event.c @@ -61,8 +61,13 @@ static void ir_raw_event_work(struct wor struct ir_raw_event_ctrl *raw = container_of(work, struct ir_raw_event_ctrl, rx_work); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33) + while (kfifo_get(raw->kfifo, (void *)&ev, sizeof(ev)) == sizeof(ev)) + RUN_DECODER(decode, raw->input_dev, ev); +#else while (kfifo_out(&raw->kfifo, &ev, sizeof(ev)) == sizeof(ev)) RUN_DECODER(decode, raw->input_dev, ev); +#endif } int ir_raw_event_register(struct input_dev *input_dev) @@ -77,8 +82,15 @@ int ir_raw_event_register(struct input_d ir->raw->input_dev = input_dev; INIT_WORK(&ir->raw->rx_work, ir_raw_event_work); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33) + ir->raw->kfifo = kfifo_alloc(sizeof(s64) * MAX_IR_EVENT_SIZE, + GFP_KERNEL, NULL); + if (ir->raw->kfifo == NULL) + rc = -ENOMEM; +#else rc = kfifo_alloc(&ir->raw->kfifo, sizeof(s64) * MAX_IR_EVENT_SIZE, GFP_KERNEL); +#endif if (rc < 0) { kfree(ir->raw); ir->raw = NULL; @@ -87,7 +99,11 @@ int ir_raw_event_register(struct input_d rc = RUN_DECODER(raw_register, input_dev); if (rc < 0) { +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33) + kfifo_free(ir->raw->kfifo); +#else kfifo_free(&ir->raw->kfifo); +#endif kfree(ir->raw); ir->raw = NULL; return rc; @@ -106,7 +122,11 @@ void ir_raw_event_unregister(struct inpu cancel_work_sync(&ir->raw->rx_work); RUN_DECODER(raw_unregister, input_dev); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33) + kfifo_free(ir->raw->kfifo); +#else kfifo_free(&ir->raw->kfifo); +#endif kfree(ir->raw); ir->raw = NULL; } @@ -128,8 +148,13 @@ int ir_raw_event_store(struct input_dev if (!ir->raw) return -EINVAL; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33) + if (kfifo_put(ir->raw->kfifo, (void *)ev, sizeof(*ev)) != sizeof(*ev)) + return -ENOMEM; +#else if (kfifo_in(&ir->raw->kfifo, ev, sizeof(*ev)) != sizeof(*ev)) return -ENOMEM; +#endif return 0; } -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html