[media] lirc_zilog: Move constants from ir_probe() into the lirc_driver template
authorAndy Walls <awalls@md.metrocast.net>
Fri, 28 Jan 2011 02:02:20 +0000 (23:02 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 22 Mar 2011 22:23:58 +0000 (19:23 -0300)
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>
drivers/staging/lirc/lirc_zilog.c

index 053fddb..d067885 100644 (file)
@@ -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;