summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Walls <awalls@md.metrocast.net>2011-01-28 03:02:20 +0100
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-03-22 23:23:58 +0100
commit534c1eab1e2770dca3cf4616cc4059683020114b (patch)
tree996c4773c32134de1a60de0c6a97a0926c18cd75
parent[media] lirc_zilog: Always allocate a Rx lirc_buffer object (diff)
downloadlinux-534c1eab1e2770dca3cf4616cc4059683020114b.tar.xz
linux-534c1eab1e2770dca3cf4616cc4059683020114b.zip
[media] lirc_zilog: Move constants from ir_probe() into the lirc_driver template
ir_probe() makes a number of constant assignments into the lirc_driver object after copying in a template. Make better use of the template. Signed-off-by: Andy Walls <awalls@md.metrocast.net> Signed-off-by: Jarod Wilson <jarod@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/staging/lirc/lirc_zilog.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/drivers/staging/lirc/lirc_zilog.c b/drivers/staging/lirc/lirc_zilog.c
index 053fddb8e448..d06788561189 100644
--- a/drivers/staging/lirc/lirc_zilog.c
+++ b/drivers/staging/lirc/lirc_zilog.c
@@ -1116,13 +1116,6 @@ static int close(struct inode *node, struct file *filep)
return 0;
}
-static struct lirc_driver lirc_template = {
- .name = "lirc_zilog",
- .set_use_inc = set_use_inc,
- .set_use_dec = set_use_dec,
- .owner = THIS_MODULE
-};
-
static int ir_remove(struct i2c_client *client);
static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id);
@@ -1161,6 +1154,19 @@ static const struct file_operations lirc_fops = {
.release = close
};
+static struct lirc_driver lirc_template = {
+ .name = "lirc_zilog",
+ .minor = -1,
+ .code_length = 13,
+ .buffer_size = BUFLEN / 2,
+ .sample_rate = 0, /* tell lirc_dev to not start its own kthread */
+ .chunk_size = 2,
+ .set_use_inc = set_use_inc,
+ .set_use_dec = set_use_dec,
+ .fops = &lirc_fops,
+ .owner = THIS_MODULE,
+};
+
static void destroy_rx_kthread(struct IR_rx *rx)
{
/* end up polling thread */
@@ -1292,14 +1298,9 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
/* set lirc_dev stuff */
memcpy(&ir->l, &lirc_template, sizeof(struct lirc_driver));
ir->l.minor = minor; /* module option */
- ir->l.code_length = 13;
- ir->l.chunk_size = 2;
- ir->l.buffer_size = BUFLEN / 2;
ir->l.rbuf = &ir->rbuf;
- ir->l.fops = &lirc_fops;
ir->l.data = ir;
ir->l.dev = &adap->dev;
- ir->l.sample_rate = 0;
ret = lirc_buffer_init(ir->l.rbuf,
ir->l.chunk_size, ir->l.buffer_size);
if (ret)
@@ -1314,6 +1315,7 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
goto out_free_xx;
}
+ ir->l.features |= LIRC_CAN_SEND_PULSE;
ir->tx->c = client;
ir->tx->need_boot = 1;
ir->tx->post_tx_ready_poll =
@@ -1326,6 +1328,7 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
goto out_free_xx;
}
+ ir->l.features |= LIRC_CAN_REC_LIRCCODE;
ir->rx->c = client;
ir->rx->hdpvr_data_fmt =
(id->driver_data & ID_FLAG_HDPVR) ? true : false;