mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-29 15:43:59 +08:00
media: rc: i2c: only poll if the rc device is opened
The lirc_zilog driver only polls the device if the lirc chardev is opened; do the same with the rc-core driver. Signed-off-by: Sean Young <sean@mess.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
50a762b413
commit
a6927d81c0
@ -298,6 +298,22 @@ static void ir_work(struct work_struct *work)
|
||||
schedule_delayed_work(&ir->work, msecs_to_jiffies(ir->polling_interval));
|
||||
}
|
||||
|
||||
static int ir_open(struct rc_dev *dev)
|
||||
{
|
||||
struct IR_i2c *ir = dev->priv;
|
||||
|
||||
schedule_delayed_work(&ir->work, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ir_close(struct rc_dev *dev)
|
||||
{
|
||||
struct IR_i2c *ir = dev->priv;
|
||||
|
||||
cancel_delayed_work_sync(&ir->work);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
||||
@ -441,6 +457,9 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
||||
rc->input_phys = ir->phys;
|
||||
rc->device_name = name;
|
||||
rc->dev.parent = &client->dev;
|
||||
rc->priv = ir;
|
||||
rc->open = ir_open;
|
||||
rc->close = ir_close;
|
||||
|
||||
/*
|
||||
* Initialize the other fields of rc_dev
|
||||
@ -450,14 +469,12 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
||||
if (!rc->driver_name)
|
||||
rc->driver_name = KBUILD_MODNAME;
|
||||
|
||||
INIT_DELAYED_WORK(&ir->work, ir_work);
|
||||
|
||||
err = rc_register_device(rc);
|
||||
if (err)
|
||||
goto err_out_free;
|
||||
|
||||
/* start polling via eventd */
|
||||
INIT_DELAYED_WORK(&ir->work, ir_work);
|
||||
schedule_delayed_work(&ir->work, 0);
|
||||
|
||||
return 0;
|
||||
|
||||
err_out_free:
|
||||
|
Loading…
Reference in New Issue
Block a user