[media] ir-core: make struct rc_dev the primary interface
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / media / video / saa7134 / saa7134-input.c
index 3e37593a328fd2b846f20d7bbe7c44e3eb93ba56..fbb2ff1710084b4550f6dd0e7d289841c0865fcd 100644 (file)
@@ -22,7 +22,6 @@
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/interrupt.h>
-#include <linux/input.h>
 #include <linux/slab.h>
 
 #include "saa7134-reg.h"
@@ -45,14 +44,6 @@ MODULE_PARM_DESC(pinnacle_remote, "Specify Pinnacle PCTV remote: 0=coloured, 1=g
 static int ir_rc5_remote_gap = 885;
 module_param(ir_rc5_remote_gap, int, 0644);
 
-static int repeat_delay = 500;
-module_param(repeat_delay, int, 0644);
-MODULE_PARM_DESC(repeat_delay, "delay before key repeat started");
-static int repeat_period = 33;
-module_param(repeat_period, int, 0644);
-MODULE_PARM_DESC(repeat_period, "repeat period between "
-    "keypresses when key is down");
-
 static unsigned int disable_other_ir;
 module_param(disable_other_ir, int, 0644);
 MODULE_PARM_DESC(disable_other_ir, "disable full codes of "
@@ -523,17 +514,17 @@ void saa7134_ir_stop(struct saa7134_dev *dev)
                __saa7134_ir_stop(dev);
 }
 
-static int saa7134_ir_open(void *priv)
+static int saa7134_ir_open(struct rc_dev *rc)
 {
-       struct saa7134_dev *dev = priv;
+       struct saa7134_dev *dev = rc->priv;
 
        dev->remote->users++;
        return __saa7134_ir_start(dev);
 }
 
-static void saa7134_ir_close(void *priv)
+static void saa7134_ir_close(struct rc_dev *rc)
 {
-       struct saa7134_dev *dev = priv;
+       struct saa7134_dev *dev = rc->priv;
 
        dev->remote->users--;
        if (!dev->remote->users)
@@ -541,9 +532,9 @@ static void saa7134_ir_close(void *priv)
 }
 
 
-static int saa7134_ir_change_protocol(void *priv, u64 ir_type)
+static int saa7134_ir_change_protocol(struct rc_dev *rc, u64 ir_type)
 {
-       struct saa7134_dev *dev = priv;
+       struct saa7134_dev *dev = rc->priv;
        struct card_ir *ir = dev->remote;
        u32 nec_gpio, rc5_gpio;
 
@@ -577,7 +568,7 @@ static int saa7134_ir_change_protocol(void *priv, u64 ir_type)
 int saa7134_input_init1(struct saa7134_dev *dev)
 {
        struct card_ir *ir;
-       struct input_dev *input_dev;
+       struct rc_dev *rc;
        char *ir_codes = NULL;
        u32 mask_keycode = 0;
        u32 mask_keydown = 0;
@@ -822,13 +813,13 @@ int saa7134_input_init1(struct saa7134_dev *dev)
        }
 
        ir = kzalloc(sizeof(*ir), GFP_KERNEL);
-       input_dev = input_allocate_device();
-       if (!ir || !input_dev) {
+       rc = rc_allocate_device();
+       if (!ir || !rc) {
                err = -ENOMEM;
                goto err_out_free;
        }
 
-       ir->dev = input_dev;
+       ir->dev = rc;
        dev->remote = ir;
 
        ir->running = 0;
@@ -848,43 +839,40 @@ int saa7134_input_init1(struct saa7134_dev *dev)
        snprintf(ir->phys, sizeof(ir->phys), "pci-%s/ir0",
                 pci_name(dev->pci));
 
-
-       ir->props.priv = dev;
-       ir->props.open = saa7134_ir_open;
-       ir->props.close = saa7134_ir_close;
-
+       rc->priv = dev;
+       rc->open = saa7134_ir_open;
+       rc->close = saa7134_ir_close;
        if (raw_decode)
-               ir->props.driver_type = RC_DRIVER_IR_RAW;
+               rc->driver_type = RC_DRIVER_IR_RAW;
 
        if (!raw_decode && allow_protocol_change) {
-               ir->props.allowed_protos = IR_TYPE_RC5 | IR_TYPE_NEC;
-               ir->props.change_protocol = saa7134_ir_change_protocol;
+               rc->allowed_protos = IR_TYPE_RC5 | IR_TYPE_NEC;
+               rc->change_protocol = saa7134_ir_change_protocol;
        }
 
-       input_dev->name = ir->name;
-       input_dev->phys = ir->phys;
-       input_dev->id.bustype = BUS_PCI;
-       input_dev->id.version = 1;
+       rc->input_name = ir->name;
+       rc->input_phys = ir->phys;
+       rc->input_id.bustype = BUS_PCI;
+       rc->input_id.version = 1;
        if (dev->pci->subsystem_vendor) {
-               input_dev->id.vendor  = dev->pci->subsystem_vendor;
-               input_dev->id.product = dev->pci->subsystem_device;
+               rc->input_id.vendor  = dev->pci->subsystem_vendor;
+               rc->input_id.product = dev->pci->subsystem_device;
        } else {
-               input_dev->id.vendor  = dev->pci->vendor;
-               input_dev->id.product = dev->pci->device;
+               rc->input_id.vendor  = dev->pci->vendor;
+               rc->input_id.product = dev->pci->device;
        }
-       input_dev->dev.parent = &dev->pci->dev;
+       rc->dev.parent = &dev->pci->dev;
+       rc->map_name = ir_codes;
+       rc->driver_name = MODULE_NAME;
 
-       err = ir_input_register(ir->dev, ir_codes, &ir->props, MODULE_NAME);
+       err = rc_register_device(rc);
        if (err)
                goto err_out_free;
 
-       /* the remote isn't as bouncy as a keyboard */
-       ir->dev->rep[REP_DELAY] = repeat_delay;
-       ir->dev->rep[REP_PERIOD] = repeat_period;
-
        return 0;
 
 err_out_free:
+       rc_free_device(rc);
        dev->remote = NULL;
        kfree(ir);
        return err;
@@ -896,7 +884,7 @@ void saa7134_input_fini(struct saa7134_dev *dev)
                return;
 
        saa7134_ir_stop(dev);
-       ir_input_unregister(dev->remote->dev);
+       rc_unregister_device(dev->remote->dev);
        kfree(dev->remote);
        dev->remote = NULL;
 }