Lines Matching defs:ir

36 	int  (*get_key_i2c)(struct au0828_rc *ir);
43 static int au8522_rc_write(struct au0828_rc *ir, u16 reg, u8 data)
47 struct i2c_msg msg = { .addr = ir->i2c_dev_addr, .flags = 0,
50 rc = i2c_transfer(ir->dev->i2c_client.adapter, &msg, 1);
58 static int au8522_rc_read(struct au0828_rc *ir, u16 reg, int val,
63 struct i2c_msg msg[2] = { { .addr = ir->i2c_dev_addr, .flags = 0,
65 { .addr = ir->i2c_dev_addr, .flags = I2C_M_RD,
75 rc = i2c_transfer(ir->dev->i2c_client.adapter, msg, 2);
83 static int au8522_rc_andor(struct au0828_rc *ir, u16 reg, u8 mask, u8 value)
88 rc = au8522_rc_read(ir, reg, -1, &buf, 1);
99 return au8522_rc_write(ir, reg, buf);
102 #define au8522_rc_set(ir, reg, bit) au8522_rc_andor(ir, (reg), (bit), (bit))
103 #define au8522_rc_clear(ir, reg, bit) au8522_rc_andor(ir, (reg), (bit), 0)
113 static int au0828_get_key_au8522(struct au0828_rc *ir)
122 if (test_bit(DEV_DISCONNECTED, &ir->dev->dev_state))
126 rc = au8522_rc_read(ir, 0xe1, -1, buf, 1);
129 au8522_rc_set(ir, 0xe0, 1 << 4);
134 rc = au8522_rc_read(ir, 0xe3, 0x11, buf, sizeof(buf));
141 au8522_rc_clear(ir, 0xe0, 1 << 4);
144 au8522_rc_set(ir, 0xe0, 1 << 4);
185 ir_raw_event_store(ir->rc, &rawir);
193 ir_raw_event_store(ir->rc, &rawir);
205 ir_raw_event_store(ir->rc, &rawir);
207 ir_raw_event_handle(ir->rc);
218 struct au0828_rc *ir = container_of(work, struct au0828_rc, work.work);
221 rc = ir->get_key_i2c(ir);
225 schedule_delayed_work(&ir->work, msecs_to_jiffies(ir->polling));
230 struct au0828_rc *ir = rc->priv;
232 INIT_DELAYED_WORK(&ir->work, au0828_rc_work);
235 au8522_rc_set(ir, 0xe0, 1 << 4);
237 schedule_delayed_work(&ir->work, msecs_to_jiffies(ir->polling));
244 struct au0828_rc *ir = rc->priv;
246 cancel_delayed_work_sync(&ir->work);
249 if (!test_bit(DEV_DISCONNECTED, &ir->dev->dev_state)) {
251 au8522_rc_clear(ir, 0xe0, 1 << 4);
274 struct au0828_rc *ir;
286 ir = kzalloc(sizeof(*ir), GFP_KERNEL);
288 if (!ir || !rc)
292 ir->dev = dev;
293 dev->ir = ir;
294 ir->rc = rc;
296 rc->priv = ir;
304 ir->get_key_i2c = au0828_get_key_au8522;
311 ir->i2c_dev_addr = i2c_rc_dev_addr;
315 ir->polling = 100; /* ms */
318 snprintf(ir->name, sizeof(ir->name), "au0828 IR (%s)",
321 usb_make_path(dev->usbdev, ir->phys, sizeof(ir->phys));
322 strlcat(ir->phys, "/input0", sizeof(ir->phys));
324 rc->device_name = ir->name;
325 rc->input_phys = ir->phys;
340 pr_info("Remote controller %s initialized\n", ir->name);
345 dev->ir = NULL;
347 kfree(ir);
353 struct au0828_rc *ir = dev->ir;
356 if (!ir)
359 rc_unregister_device(ir->rc);
362 kfree(ir);
363 dev->ir = NULL;
368 struct au0828_rc *ir = dev->ir;
370 if (!ir)
375 cancel_delayed_work_sync(&ir->work);
378 au8522_rc_clear(ir, 0xe0, 1 << 4);
385 struct au0828_rc *ir = dev->ir;
387 if (!ir)
393 au8522_rc_set(ir, 0xe0, 1 << 4);
395 schedule_delayed_work(&ir->work, msecs_to_jiffies(ir->polling));