Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
[sfrench/cifs-2.6.git] / drivers / media / video / ir-kbd-i2c.c
index 27ae8bbfb4777b4909afdd48e839c33359b39c93..5a000c65ae98ab3f4fa75b26b4f87ba885874290 100644 (file)
@@ -146,26 +146,6 @@ static int get_key_pixelview(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
        return 1;
 }
 
-static int get_key_pv951(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
-{
-       unsigned char b;
-
-       /* poll IR chip */
-       if (1 != i2c_master_recv(ir->c, &b, 1)) {
-               dprintk(1,"read error\n");
-               return -EIO;
-       }
-
-       /* ignore 0xaa */
-       if (b==0xaa)
-               return 0;
-       dprintk(2,"key %02x\n", b);
-
-       *ir_key = b;
-       *ir_raw = b;
-       return 1;
-}
-
 static int get_key_fusionhdtv(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
 {
        unsigned char buf[4];
@@ -279,15 +259,9 @@ static void ir_key_poll(struct IR_i2c *ir)
 static void ir_work(struct work_struct *work)
 {
        struct IR_i2c *ir = container_of(work, struct IR_i2c, work.work);
-       int polling_interval = 100;
-
-       /* MSI TV@nywhere Plus requires more frequent polling
-          otherwise it will miss some keypresses */
-       if (ir->c->adapter->id == I2C_HW_SAA7134 && ir->c->addr == 0x30)
-               polling_interval = 50;
 
        ir_key_poll(ir);
-       schedule_delayed_work(&ir->work, msecs_to_jiffies(polling_interval));
+       schedule_delayed_work(&ir->work, msecs_to_jiffies(ir->polling_interval));
 }
 
 /* ----------------------------------------------------------------------- */
@@ -312,6 +286,7 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
 
        ir->c = client;
        ir->input = input_dev;
+       ir->polling_interval = DEFAULT_POLLING_INTERVAL;
        i2c_set_clientdata(client, ir);
 
        switch(addr) {
@@ -321,12 +296,6 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
                ir_type     = IR_TYPE_OTHER;
                ir_codes    = RC_MAP_EMPTY;
                break;
-       case 0x4b:
-               name        = "PV951";
-               ir->get_key = get_key_pv951;
-               ir_type     = IR_TYPE_OTHER;
-               ir_codes    = RC_MAP_PV951;
-               break;
        case 0x18:
        case 0x1f:
        case 0x1a:
@@ -351,27 +320,6 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
                ir_type     = IR_TYPE_RC5;
                ir_codes    = RC_MAP_FUSIONHDTV_MCE;
                break;
-       case 0x0b:
-       case 0x47:
-       case 0x71:
-               if (adap->id == I2C_HW_B_CX2388x ||
-                   adap->id == I2C_HW_B_CX2341X) {
-                       /* Handled by cx88-input */
-                       name = adap->id == I2C_HW_B_CX2341X ? "CX2341x remote"
-                                                           : "CX2388x remote";
-                       ir_type     = IR_TYPE_RC5;
-                       ir->get_key = get_key_haup_xvr;
-                       if (hauppauge == 1) {
-                               ir_codes    = RC_MAP_HAUPPAUGE_NEW;
-                       } else {
-                               ir_codes    = RC_MAP_RC5_TV;
-                       }
-               } else {
-                       /* Handled by saa7134-input */
-                       name        = "SAA713x remote";
-                       ir_type     = IR_TYPE_OTHER;
-               }
-               break;
        case 0x40:
                name        = "AVerMedia Cardbus remote";
                ir->get_key = get_key_avermedia_cardbus;
@@ -390,6 +338,9 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
                if (init_data->type)
                        ir_type = init_data->type;
 
+               if (init_data->polling_interval)
+                       ir->polling_interval = init_data->polling_interval;
+
                switch (init_data->internal_get_key_func) {
                case IR_KBD_GET_KEY_CUSTOM:
                        /* The bridge driver provided us its own function */
@@ -398,9 +349,6 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
                case IR_KBD_GET_KEY_PIXELVIEW:
                        ir->get_key = get_key_pixelview;
                        break;
-               case IR_KBD_GET_KEY_PV951:
-                       ir->get_key = get_key_pv951;
-                       break;
                case IR_KBD_GET_KEY_HAUP:
                        ir->get_key = get_key_haup;
                        break;