|
@@ -304,18 +304,20 @@ static int ir_attach(struct i2c_adapter *adap, int addr,
|
|
|
ir = kzalloc(sizeof(struct IR_i2c),GFP_KERNEL);
|
|
|
input_dev = input_allocate_device();
|
|
|
if (!ir || !input_dev) {
|
|
|
- kfree(ir);
|
|
|
input_free_device(input_dev);
|
|
|
+ kfree(ir);
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
+ memset(ir,0,sizeof(*ir));
|
|
|
|
|
|
ir->c = client_template;
|
|
|
ir->input = input_dev;
|
|
|
|
|
|
- i2c_set_clientdata(&ir->c, ir);
|
|
|
ir->c.adapter = adap;
|
|
|
ir->c.addr = addr;
|
|
|
|
|
|
+ i2c_set_clientdata(&ir->c, ir);
|
|
|
+
|
|
|
switch(addr) {
|
|
|
case 0x64:
|
|
|
name = "Pixelview";
|
|
@@ -378,13 +380,15 @@ static int ir_attach(struct i2c_adapter *adap, int addr,
|
|
|
ir->c.dev.bus_id);
|
|
|
|
|
|
/* init + register input device */
|
|
|
- ir_input_init(input_dev, &ir->ir, ir_type, ir_codes);
|
|
|
- input_dev->id.bustype = BUS_I2C;
|
|
|
- input_dev->name = ir->c.name;
|
|
|
- input_dev->phys = ir->phys;
|
|
|
+ ir_input_init(input_dev,&ir->ir,ir_type,ir->ir_codes);
|
|
|
+ input_dev->id.bustype = BUS_I2C;
|
|
|
+ input_dev->name = ir->c.name;
|
|
|
+ input_dev->phys = ir->phys;
|
|
|
|
|
|
/* register event device */
|
|
|
input_register_device(ir->input);
|
|
|
+ printk(DEVNAME ": %s detected at %s [%s]\n",
|
|
|
+ ir->input->name,ir->input->phys,adap->name);
|
|
|
|
|
|
/* start polling via eventd */
|
|
|
INIT_WORK(&ir->work, ir_work, ir);
|