@@ -1,36 +1,34 @@
---
- drivers/media/rc/ir-raw.c | 14 +++----
- drivers/media/rc/rc-core-priv.h | 2 -
- drivers/media/video/cx23885/cx23888-ir.c | 33 ++++++-----------
+ drivers/media/rc/ir-raw.c | 16 ++++----
+ drivers/media/rc/rc-core-priv.h | 2 +-
+ drivers/media/video/cx23885/cx23888-ir.c | 33 ++++++----------
drivers/media/video/cx25840/cx25840-ir.c | 28 +++++---------
- drivers/media/video/meye.c | 60 ++++++++++++++-----------------
+ drivers/media/video/meye.c | 60 ++++++++++++++----------------
drivers/media/video/meye.h | 4 +-
include/media/lirc_dev.h | 50 +++++++++----------------
- 7 files changed, 79 insertions(+), 112 deletions(-)
+ 7 files changed, 80 insertions(+), 113 deletions(-)
---- linux.orig/drivers/media/rc/rc-core-priv.h
-+++ linux/drivers/media/rc/rc-core-priv.h
-@@ -35,7 +35,7 @@ struct ir_raw_event_ctrl {
- struct list_head list; /* to keep track of raw clients */
- struct task_struct *thread;
- spinlock_t lock;
-- struct kfifo kfifo; /* fifo for the pulse/space durations */
-+ struct kfifo *kfifo; /* fifo for the pulse/space durations */
- 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 */
---- linux.orig/drivers/media/rc/ir-raw.c
-+++ linux/drivers/media/rc/ir-raw.c
-@@ -44,7 +44,7 @@ static int ir_raw_event_thread(void *dat
+--- a/drivers/media/rc/ir-raw.c
++++ b/drivers/media/rc/ir-raw.c
+@@ -45,7 +45,7 @@ static int ir_raw_event_thread(void *data)
while (!kthread_should_stop()) {
spin_lock_irq(&raw->lock);
+- retval = kfifo_len(&raw->kfifo);
++ retval = kfifo_len(raw->kfifo);
+
+ if (retval < sizeof(ev)) {
+ set_current_state(TASK_INTERRUPTIBLE);
+@@ -58,7 +58,7 @@ static int ir_raw_event_thread(void *data)
+ continue;
+ }
+
- retval = kfifo_out(&raw->kfifo, &ev, sizeof(ev));
+ retval = __kfifo_get(raw->kfifo, (void *)&ev, sizeof(ev));
+ spin_unlock_irq(&raw->lock);
- if (!retval) {
- set_current_state(TASK_INTERRUPTIBLE);
-@@ -90,7 +90,7 @@ int ir_raw_event_store(struct rc_dev *de
+ mutex_lock(&ir_raw_handler_lock);
+@@ -89,7 +89,7 @@ int ir_raw_event_store(struct rc_dev *dev, struct ir_raw_event *ev)
IR_dprintk(2, "sample: (%05dus %s)\n",
TO_US(ev->duration), TO_STR(ev->pulse));
@@ -39,7 +37,7 @@
return -ENOMEM;
return 0;
-@@ -258,11 +258,11 @@ int ir_raw_event_register(struct rc_dev
+@@ -259,11 +259,11 @@ int ir_raw_event_register(struct rc_dev *dev)
dev->raw->dev = dev;
dev->raw->enabled_protocols = ~0;
@@ -55,7 +53,7 @@
spin_lock_init(&dev->raw->lock);
dev->raw->thread = kthread_run(ir_raw_event_thread, dev->raw,
-@@ -304,7 +304,7 @@ void ir_raw_event_unregister(struct rc_d
+@@ -305,7 +305,7 @@ void ir_raw_event_unregister(struct rc_dev *dev)
handler->raw_unregister(dev);
mutex_unlock(&ir_raw_handler_lock);
@@ -64,8 +62,19 @@
kfree(dev->raw);
dev->raw = NULL;
}
---- linux.orig/drivers/media/video/cx23885/cx23888-ir.c
-+++ linux/drivers/media/video/cx23885/cx23888-ir.c
+--- a/drivers/media/rc/rc-core-priv.h
++++ b/drivers/media/rc/rc-core-priv.h
+@@ -35,7 +35,7 @@ struct ir_raw_event_ctrl {
+ struct list_head list; /* to keep track of raw clients */
+ struct task_struct *thread;
+ spinlock_t lock;
+- struct kfifo kfifo; /* fifo for the pulse/space durations */
++ struct kfifo *kfifo; /* fifo for the pulse/space durations */
+ 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 */
+--- a/drivers/media/video/cx23885/cx23888-ir.c
++++ b/drivers/media/video/cx23885/cx23888-ir.c
@@ -138,7 +138,7 @@ struct cx23888_ir_state {
atomic_t rxclk_divider;
atomic_t rx_invert;
@@ -75,7 +84,7 @@
spinlock_t rx_kfifo_lock;
struct v4l2_subdev_ir_parameters tx_params;
-@@ -540,7 +540,6 @@ static int cx23888_ir_irq_handler(struct
+@@ -540,7 +540,6 @@ static int cx23888_ir_irq_handler(struct v4l2_subdev *sd, u32 status,
{
struct cx23888_ir_state *state = to_state(sd);
struct cx23885_dev *dev = state->dev;
@@ -83,7 +92,7 @@
u32 cntrl = cx23888_ir_read4(dev, CX23888_IR_CNTRL_REG);
u32 irqen = cx23888_ir_read4(dev, CX23888_IR_IRQEN_REG);
-@@ -613,10 +612,9 @@ static int cx23888_ir_irq_handler(struct
+@@ -613,10 +612,9 @@ static int cx23888_ir_irq_handler(struct v4l2_subdev *sd, u32 status,
}
if (i == 0)
break;
@@ -97,7 +106,7 @@
if (k != j)
kror++; /* rx_kfifo over run */
}
-@@ -653,10 +651,8 @@ static int cx23888_ir_irq_handler(struct
+@@ -653,10 +651,8 @@ static int cx23888_ir_irq_handler(struct v4l2_subdev *sd, u32 status,
*handled = true;
}
@@ -109,7 +118,7 @@
if (events)
v4l2_subdev_notify(sd, V4L2_SUBDEV_IR_RX_NOTIFY, &events);
-@@ -682,7 +678,7 @@ static int cx23888_ir_rx_read(struct v4l
+@@ -682,7 +678,7 @@ static int cx23888_ir_rx_read(struct v4l2_subdev *sd, u8 *buf, size_t count,
return 0;
}
@@ -118,7 +127,7 @@
n /= sizeof(union cx23888_ir_fifo_rec);
*num = n * sizeof(union cx23888_ir_fifo_rec);
-@@ -817,12 +813,7 @@ static int cx23888_ir_rx_s_parameters(st
+@@ -821,12 +817,7 @@ static int cx23888_ir_rx_s_parameters(struct v4l2_subdev *sd,
o->interrupt_enable = p->interrupt_enable;
o->enable = p->enable;
if (p->enable) {
@@ -132,7 +141,7 @@
if (p->interrupt_enable)
irqenable_rx(dev, IRQEN_RSE | IRQEN_RTE | IRQEN_ROE);
control_rx_enable(dev, p->enable);
-@@ -1210,8 +1201,10 @@ int cx23888_ir_probe(struct cx23885_dev
+@@ -1214,8 +1205,10 @@ int cx23888_ir_probe(struct cx23885_dev *dev)
return -ENOMEM;
spin_lock_init(&state->rx_kfifo_lock);
@@ -145,7 +154,7 @@
state->dev = dev;
state->id = V4L2_IDENT_CX23888_IR;
-@@ -1243,7 +1236,7 @@ int cx23888_ir_probe(struct cx23885_dev
+@@ -1247,7 +1240,7 @@ int cx23888_ir_probe(struct cx23885_dev *dev)
sizeof(struct v4l2_subdev_ir_parameters));
v4l2_subdev_call(sd, ir, tx_s_parameters, &default_params);
} else {
@@ -154,7 +163,7 @@
}
return ret;
}
-@@ -1262,7 +1255,7 @@ int cx23888_ir_remove(struct cx23885_dev
+@@ -1266,7 +1259,7 @@ int cx23888_ir_remove(struct cx23885_dev *dev)
state = to_state(sd);
v4l2_device_unregister_subdev(sd);
@@ -163,9 +172,9 @@
kfree(state);
/* Nothing more to free() as state held the actual v4l2_subdev object */
return 0;
---- linux.orig/drivers/media/video/cx25840/cx25840-ir.c
-+++ linux/drivers/media/video/cx25840/cx25840-ir.c
-@@ -116,7 +116,7 @@ struct cx25840_ir_state {
+--- a/drivers/media/video/cx25840/cx25840-ir.c
++++ b/drivers/media/video/cx25840/cx25840-ir.c
+@@ -117,7 +117,7 @@ struct cx25840_ir_state {
atomic_t rxclk_divider;
atomic_t rx_invert;
@@ -174,7 +183,7 @@
spinlock_t rx_kfifo_lock; /* protect Rx data kfifo */
struct v4l2_subdev_ir_parameters tx_params;
-@@ -525,7 +525,6 @@ int cx25840_ir_irq_handler(struct v4l2_s
+@@ -526,7 +526,6 @@ int cx25840_ir_irq_handler(struct v4l2_subdev *sd, u32 status, bool *handled)
struct cx25840_state *state = to_state(sd);
struct cx25840_ir_state *ir_state = to_ir_state(sd);
struct i2c_client *c = NULL;
@@ -182,7 +191,7 @@
union cx25840_ir_fifo_rec rx_data[FIFO_RX_DEPTH];
unsigned int i, j, k;
-@@ -611,9 +610,8 @@ int cx25840_ir_irq_handler(struct v4l2_s
+@@ -612,9 +611,8 @@ int cx25840_ir_irq_handler(struct v4l2_subdev *sd, u32 status, bool *handled)
if (i == 0)
break;
j = i * sizeof(union cx25840_ir_fifo_rec);
@@ -194,7 +203,7 @@
if (k != j)
kror++; /* rx_kfifo over run */
}
-@@ -649,10 +647,8 @@ int cx25840_ir_irq_handler(struct v4l2_s
+@@ -650,10 +648,8 @@ int cx25840_ir_irq_handler(struct v4l2_subdev *sd, u32 status, bool *handled)
cx25840_write4(c, CX25840_IR_CNTRL_REG, cntrl);
*handled = true;
}
@@ -206,7 +215,7 @@
if (events)
v4l2_subdev_notify(sd, V4L2_SUBDEV_IR_RX_NOTIFY, &events);
-@@ -683,8 +679,7 @@ static int cx25840_ir_rx_read(struct v4l
+@@ -684,8 +680,7 @@ static int cx25840_ir_rx_read(struct v4l2_subdev *sd, u8 *buf, size_t count,
return 0;
}
@@ -216,7 +225,7 @@
n /= sizeof(union cx25840_ir_fifo_rec);
*num = n * sizeof(union cx25840_ir_fifo_rec);
-@@ -836,11 +831,7 @@ static int cx25840_ir_rx_s_parameters(st
+@@ -841,11 +836,7 @@ static int cx25840_ir_rx_s_parameters(struct v4l2_subdev *sd,
o->interrupt_enable = p->interrupt_enable;
o->enable = p->enable;
if (p->enable) {
@@ -229,7 +238,7 @@
if (p->interrupt_enable)
irqenable_rx(sd, IRQEN_RSE | IRQEN_RTE | IRQEN_ROE);
control_rx_enable(c, p->enable);
-@@ -1234,8 +1225,9 @@ int cx25840_ir_probe(struct v4l2_subdev
+@@ -1239,8 +1230,9 @@ int cx25840_ir_probe(struct v4l2_subdev *sd)
return -ENOMEM;
spin_lock_init(&ir_state->rx_kfifo_lock);
@@ -241,7 +250,7 @@
kfree(ir_state);
return -ENOMEM;
}
-@@ -1273,7 +1265,7 @@ int cx25840_ir_remove(struct v4l2_subdev
+@@ -1278,7 +1270,7 @@ int cx25840_ir_remove(struct v4l2_subdev *sd)
cx25840_ir_rx_shutdown(sd);
cx25840_ir_tx_shutdown(sd);
@@ -250,8 +259,8 @@
kfree(ir_state);
state->ir_state = NULL;
return 0;
---- linux.orig/drivers/media/video/meye.c
-+++ linux/drivers/media/video/meye.c
+--- a/drivers/media/video/meye.c
++++ b/drivers/media/video/meye.c
@@ -802,8 +802,8 @@ again:
return IRQ_HANDLED;
@@ -315,7 +324,7 @@
mutex_unlock(&meye.lock);
return 0;
-@@ -970,9 +967,7 @@ static int meyeioc_sync(struct file *fil
+@@ -970,9 +967,7 @@ static int meyeioc_sync(struct file *file, void *fh, int *i)
/* fall through */
case MEYE_BUF_DONE:
meye.grab_buffer[*i].state = MEYE_BUF_UNUSED;
@@ -326,7 +335,7 @@
}
*i = meye.grab_buffer[*i].size;
mutex_unlock(&meye.lock);
-@@ -1459,8 +1454,7 @@ static int vidioc_qbuf(struct file *file
+@@ -1459,8 +1454,7 @@ static int vidioc_qbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
buf->flags |= V4L2_BUF_FLAG_QUEUED;
buf->flags &= ~V4L2_BUF_FLAG_DONE;
meye.grab_buffer[buf->index].state = MEYE_BUF_USING;
@@ -336,7 +345,7 @@
mutex_unlock(&meye.lock);
return 0;
-@@ -1475,19 +1469,19 @@ static int vidioc_dqbuf(struct file *fil
+@@ -1475,19 +1469,19 @@ static int vidioc_dqbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
mutex_lock(&meye.lock);
@@ -360,7 +369,7 @@
mutex_unlock(&meye.lock);
return -EBUSY;
}
-@@ -1537,8 +1531,8 @@ static int vidioc_streamoff(struct file
+@@ -1537,8 +1531,8 @@ static int vidioc_streamoff(struct file *file, void *fh, enum v4l2_buf_type i)
{
mutex_lock(&meye.lock);
mchip_hic_stop();
@@ -371,7 +380,7 @@
for (i = 0; i < MEYE_MAX_BUFNBRS; i++)
meye.grab_buffer[i].state = MEYE_BUF_UNUSED;
-@@ -1581,7 +1575,7 @@ static unsigned int meye_poll(struct fil
+@@ -1581,7 +1575,7 @@ static unsigned int meye_poll(struct file *file, poll_table *wait)
mutex_lock(&meye.lock);
poll_wait(file, &meye.proc_list, wait);
@@ -380,7 +389,7 @@
res = POLLIN | POLLRDNORM;
mutex_unlock(&meye.lock);
return res;
-@@ -1760,14 +1754,16 @@ static int __devinit meye_probe(struct p
+@@ -1760,14 +1754,16 @@ static int __devinit meye_probe(struct pci_dev *pcidev,
}
spin_lock_init(&meye.grabq_lock);
@@ -413,7 +422,7 @@
outkfifoalloc1:
vfree(meye.grab_temp);
outvmalloc:
-@@ -1911,8 +1907,8 @@ static void __devexit meye_remove(struct
+@@ -1911,8 +1907,8 @@ static void __devexit meye_remove(struct pci_dev *pcidev)
sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERA, 0);
@@ -424,8 +433,8 @@
vfree(meye.grab_temp);
---- linux.orig/drivers/media/video/meye.h
-+++ linux/drivers/media/video/meye.h
+--- a/drivers/media/video/meye.h
++++ b/drivers/media/video/meye.h
@@ -304,9 +304,9 @@ struct meye {
struct meye_grab_buffer grab_buffer[MEYE_MAX_BUFNBRS];
int vma_use_count[MEYE_MAX_BUFNBRS]; /* mmap count */
@@ -438,8 +447,8 @@
spinlock_t doneq_lock; /* lock protecting the queue */
wait_queue_head_t proc_list; /* wait queue */
struct video_device *vdev; /* video device parameters */
---- linux.orig/include/media/lirc_dev.h
-+++ linux/include/media/lirc_dev.h
+--- a/include/media/lirc_dev.h
++++ b/include/media/lirc_dev.h
@@ -28,19 +28,15 @@ struct lirc_buffer {
unsigned int size; /* in chunks */
/* Using chunks instead of bytes pretends to simplify boundary checking
@@ -464,7 +473,7 @@
WARN(1, "calling %s on an uninitialized lirc_buffer\n",
__func__);
}
-@@ -49,25 +45,23 @@ static inline int lirc_buffer_init(struc
+@@ -49,25 +45,23 @@ static inline int lirc_buffer_init(struct lirc_buffer *buf,
unsigned int chunk_size,
unsigned int size)
{
@@ -498,7 +507,7 @@
WARN(1, "calling %s on an uninitialized lirc_buffer\n",
__func__);
}
-@@ -75,11 +69,8 @@ static inline void lirc_buffer_free(stru
+@@ -75,11 +69,8 @@ static inline void lirc_buffer_free(struct lirc_buffer *buf)
static inline int lirc_buffer_len(struct lirc_buffer *buf)
{
int len;
@@ -511,7 +520,7 @@
return len;
}
-@@ -102,24 +93,19 @@ static inline int lirc_buffer_available(
+@@ -102,24 +93,19 @@ static inline int lirc_buffer_available(struct lirc_buffer *buf)
static inline unsigned int lirc_buffer_read(struct lirc_buffer *buf,
unsigned char *dest)
{
@@ -541,3 +550,4 @@
}
struct lirc_driver {
+