Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c72ba8e6 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

V4L/DVB: saa7134: get rid of I2C_HW_SAA7134



The only reason for keeping I2C_HW_SAA7134 is to allow setting a
per-device polling interval. Just move this info to the platform
data, allowing drivers to change it per device, where needed.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 44243fc2
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -259,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));
}

/* ----------------------------------------------------------------------- */
@@ -292,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) {
@@ -343,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 */
+0 −1
Original line number Diff line number Diff line
@@ -328,7 +328,6 @@ static struct i2c_algorithm saa7134_algo = {
static struct i2c_adapter saa7134_adap_template = {
	.owner         = THIS_MODULE,
	.name          = "saa7134",
	.id            = I2C_HW_SAA7134,
	.algo          = &saa7134_algo,
};

+5 −0
Original line number Diff line number Diff line
@@ -959,6 +959,11 @@ void saa7134_probe_i2c_ir(struct saa7134_dev *dev)
		dev->init_data.name = "MSI TV@nywhere Plus";
		dev->init_data.get_key = get_key_msi_tvanywhere_plus;
		dev->init_data.ir_codes = RC_MAP_MSI_TVANYWHERE_PLUS;
		/*
		 * MSI TV@nyware Plus requires more frequent polling
		 * otherwise it will miss some keypresses
		 */
		dev->init_data.polling_interval = 50;
		info.addr = 0x30;
		/* MSI TV@nywhere Plus controller doesn't seem to
		   respond to probes unless we read something from
+7 −2
Original line number Diff line number Diff line
@@ -3,6 +3,8 @@

#include <media/ir-common.h>

#define DEFAULT_POLLING_INTERVAL	100	/* ms */

struct IR_i2c;

struct IR_i2c {
@@ -15,6 +17,8 @@ struct IR_i2c {
	/* Used to avoid fast repeating */
	unsigned char          old;

	u32                    polling_interval; /* in ms */

	struct delayed_work    work;
	char                   name[32];
	char                   phys[32];
@@ -36,6 +40,7 @@ struct IR_i2c_init_data {
	char			*ir_codes;
	const char		*name;
	u64			type; /* IR_TYPE_RC5, etc */
	u32			polling_interval; /* 0 means DEFAULT_POLLING_INTERVAL */
	/*
	 * Specify either a function pointer or a value indicating one of
	 * ir_kbd_i2c's internal get_key functions