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

Commit 88f07ffb authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb

* master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb:
  V4L/DVB (3568k): zoran: Use i2c_master_send when possible
  V4L/DVB (3568j): adv7175: Drop unused encoder dump command
  V4L/DVB (3568i): adv7175: Drop unused register cache
  V4L/DVB (3568h): cpia: correct email address
  V4L/DVB (3568g): sem2mutex: zoran
  V4L/DVB (3568f): saa7110: Fix array overrun
  V4L/DVB (3568e): bt856: Spare memory
  V4L/DVB (3568d): saa7111.c fix
  V4L/DVB (3568c): zoran: Init cleanups
  V4L/DVB (3568b): saa7111: Prevent array overrun
  V4L/DVB (3568a): saa7114: Fix i2c block write
parents b6585ded 9aa45e34
Loading
Loading
Loading
Loading
+7 −10
Original line number Original line Diff line number Diff line
@@ -124,24 +124,21 @@ adv7170_write_block (struct i2c_client *client,
	if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
	if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
		/* do raw I2C, not smbus compatible */
		/* do raw I2C, not smbus compatible */
		struct adv7170 *encoder = i2c_get_clientdata(client);
		struct adv7170 *encoder = i2c_get_clientdata(client);
		struct i2c_msg msg;
		u8 block_data[32];
		u8 block_data[32];
		int block_len;


		msg.addr = client->addr;
		msg.flags = 0;
		while (len >= 2) {
		while (len >= 2) {
			msg.buf = (char *) block_data;
			block_len = 0;
			msg.len = 0;
			block_data[block_len++] = reg = data[0];
			block_data[msg.len++] = reg = data[0];
			do {
			do {
				block_data[msg.len++] =
				block_data[block_len++] =
				    encoder->reg[reg++] = data[1];
				    encoder->reg[reg++] = data[1];
				len -= 2;
				len -= 2;
				data += 2;
				data += 2;
			} while (len >= 2 && data[0] == reg &&
			} while (len >= 2 && data[0] == reg &&
				 msg.len < 32);
				 block_len < 32);
			if ((ret = i2c_transfer(client->adapter,
			if ((ret = i2c_master_send(client, block_data,
						&msg, 1)) < 0)
						   block_len)) < 0)
				break;
				break;
		}
		}
	} else {
	} else {
+8 −43
Original line number Original line Diff line number Diff line
@@ -67,8 +67,6 @@ MODULE_PARM_DESC(debug, "Debug level (0-1)");
/* ----------------------------------------------------------------------- */
/* ----------------------------------------------------------------------- */


struct adv7175 {
struct adv7175 {
	unsigned char reg[128];

	int norm;
	int norm;
	int input;
	int input;
	int enable;
	int enable;
@@ -94,9 +92,6 @@ adv7175_write (struct i2c_client *client,
	       u8                 reg,
	       u8                 reg,
	       u8                 value)
	       u8                 value)
{
{
	struct adv7175 *encoder = i2c_get_clientdata(client);

	encoder->reg[reg] = value;
	return i2c_smbus_write_byte_data(client, reg, value);
	return i2c_smbus_write_byte_data(client, reg, value);
}
}


@@ -119,25 +114,21 @@ adv7175_write_block (struct i2c_client *client,
	 * the adapter understands raw I2C */
	 * the adapter understands raw I2C */
	if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
	if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
		/* do raw I2C, not smbus compatible */
		/* do raw I2C, not smbus compatible */
		struct adv7175 *encoder = i2c_get_clientdata(client);
		struct i2c_msg msg;
		u8 block_data[32];
		u8 block_data[32];
		int block_len;


		msg.addr = client->addr;
		msg.flags = 0;
		while (len >= 2) {
		while (len >= 2) {
			msg.buf = (char *) block_data;
			block_len = 0;
			msg.len = 0;
			block_data[block_len++] = reg = data[0];
			block_data[msg.len++] = reg = data[0];
			do {
			do {
				block_data[msg.len++] =
				block_data[block_len++] = data[1];
				    encoder->reg[reg++] = data[1];
				reg++;
				len -= 2;
				len -= 2;
				data += 2;
				data += 2;
			} while (len >= 2 && data[0] == reg &&
			} while (len >= 2 && data[0] == reg &&
				 msg.len < 32);
				 block_len < 32);
			if ((ret = i2c_transfer(client->adapter,
			if ((ret = i2c_master_send(client, block_data,
						&msg, 1)) < 0)
						   block_len)) < 0)
				break;
				break;
		}
		}
	} else {
	} else {
@@ -170,24 +161,6 @@ set_subcarrier_freq (struct i2c_client *client,
	adv7175_write(client, 0x05, 0x25);
	adv7175_write(client, 0x05, 0x25);
}
}


#ifdef ENCODER_DUMP
static void
dump (struct i2c_client *client)
{
	struct adv7175 *encoder = i2c_get_clientdata(client);
	int i, j;

	printk(KERN_INFO "%s: registry dump\n", I2C_NAME(client));
	for (i = 0; i < 182 / 8; i++) {
		printk("%s: 0x%02x -", I2C_NAME(client), i * 8);
		for (j = 0; j < 8; j++) {
			printk(" 0x%02x", encoder->reg[i * 8 + j]);
		}
		printk("\n");
	}
}
#endif

/* ----------------------------------------------------------------------- */
/* ----------------------------------------------------------------------- */
// Output filter:  S-Video  Composite
// Output filter:  S-Video  Composite


@@ -406,14 +379,6 @@ adv7175_command (struct i2c_client *client,
	}
	}
		break;
		break;


#ifdef ENCODER_DUMP
	case ENCODER_DUMP:
	{
		dump(client);
	}
		break;
#endif

	default:
	default:
		return -EINVAL;
		return -EINVAL;
	}
	}
+7 −10
Original line number Original line Diff line number Diff line
@@ -140,24 +140,21 @@ bt819_write_block (struct i2c_client *client,
	if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
	if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
		/* do raw I2C, not smbus compatible */
		/* do raw I2C, not smbus compatible */
		struct bt819 *decoder = i2c_get_clientdata(client);
		struct bt819 *decoder = i2c_get_clientdata(client);
		struct i2c_msg msg;
		u8 block_data[32];
		u8 block_data[32];
		int block_len;


		msg.addr = client->addr;
		msg.flags = 0;
		while (len >= 2) {
		while (len >= 2) {
			msg.buf = (char *) block_data;
			block_len = 0;
			msg.len = 0;
			block_data[block_len++] = reg = data[0];
			block_data[msg.len++] = reg = data[0];
			do {
			do {
				block_data[msg.len++] =
				block_data[block_len++] =
				    decoder->reg[reg++] = data[1];
				    decoder->reg[reg++] = data[1];
				len -= 2;
				len -= 2;
				data += 2;
				data += 2;
			} while (len >= 2 && data[0] == reg &&
			} while (len >= 2 && data[0] == reg &&
				 msg.len < 32);
				 block_len < 32);
			if ((ret = i2c_transfer(client->adapter,
			if ((ret = i2c_master_send(client, block_data,
						&msg, 1)) < 0)
						   block_len)) < 0)
				break;
				break;
		}
		}
	} else {
	} else {
+5 −8
Original line number Original line Diff line number Diff line
@@ -70,17 +70,14 @@ MODULE_PARM_DESC(debug, "Debug level (0-1)");


/* ----------------------------------------------------------------------- */
/* ----------------------------------------------------------------------- */


#define REG_OFFSET  0xCE
#define REG_OFFSET	0xDA
#define BT856_NR_REG	6


struct bt856 {
struct bt856 {
	unsigned char reg[32];
	unsigned char reg[BT856_NR_REG];


	int norm;
	int norm;
	int enable;
	int enable;
	int bright;
	int contrast;
	int hue;
	int sat;
};
};


#define   I2C_BT856        0x88
#define   I2C_BT856        0x88
@@ -119,8 +116,8 @@ bt856_dump (struct i2c_client *client)
	struct bt856 *encoder = i2c_get_clientdata(client);
	struct bt856 *encoder = i2c_get_clientdata(client);


	printk(KERN_INFO "%s: register dump:", I2C_NAME(client));
	printk(KERN_INFO "%s: register dump:", I2C_NAME(client));
	for (i = 0xd6; i <= 0xde; i += 2)
	for (i = 0; i < BT856_NR_REG; i += 2)
		printk(" %02x", encoder->reg[i - REG_OFFSET]);
		printk(" %02x", encoder->reg[i]);
	printk("\n");
	printk("\n");
}
}


+1 −1
Original line number Original line Diff line number Diff line
@@ -58,7 +58,7 @@ static int video_nr = -1;


#ifdef MODULE
#ifdef MODULE
module_param(video_nr, int, 0);
module_param(video_nr, int, 0);
MODULE_AUTHOR("Scott J. Bertin <sbertin@securenym.net> & Peter Pregler <Peter_Pregler@email.com> & Johannes Erdfelt <johannes@erdfeld.com>");
MODULE_AUTHOR("Scott J. Bertin <sbertin@securenym.net> & Peter Pregler <Peter_Pregler@email.com> & Johannes Erdfelt <johannes@erdfelt.com>");
MODULE_DESCRIPTION("V4L-driver for Vision CPiA based cameras");
MODULE_DESCRIPTION("V4L-driver for Vision CPiA based cameras");
MODULE_LICENSE("GPL");
MODULE_LICENSE("GPL");
MODULE_SUPPORTED_DEVICE("video");
MODULE_SUPPORTED_DEVICE("video");
Loading