Skip to content

Commit

Permalink
Merge master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
Linus Torvalds committed Mar 24, 2006
2 parents b6585de + 9aa45e3 commit 88f07ff
Show file tree
Hide file tree
Showing 12 changed files with 200 additions and 263 deletions.
17 changes: 7 additions & 10 deletions drivers/media/video/adv7170.c
Original file line number Diff line number Diff line change
Expand Up @@ -124,24 +124,21 @@ adv7170_write_block (struct i2c_client *client,
if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
/* do raw I2C, not smbus compatible */
struct adv7170 *encoder = i2c_get_clientdata(client);
struct i2c_msg msg;
u8 block_data[32];
int block_len;

msg.addr = client->addr;
msg.flags = 0;
while (len >= 2) {
msg.buf = (char *) block_data;
msg.len = 0;
block_data[msg.len++] = reg = data[0];
block_len = 0;
block_data[block_len++] = reg = data[0];
do {
block_data[msg.len++] =
block_data[block_len++] =
encoder->reg[reg++] = data[1];
len -= 2;
data += 2;
} while (len >= 2 && data[0] == reg &&
msg.len < 32);
if ((ret = i2c_transfer(client->adapter,
&msg, 1)) < 0)
block_len < 32);
if ((ret = i2c_master_send(client, block_data,
block_len)) < 0)
break;
}
} else {
Expand Down
51 changes: 8 additions & 43 deletions drivers/media/video/adv7175.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,6 @@ MODULE_PARM_DESC(debug, "Debug level (0-1)");
/* ----------------------------------------------------------------------- */

struct adv7175 {
unsigned char reg[128];

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

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

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

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

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

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

default:
return -EINVAL;
}
Expand Down
17 changes: 7 additions & 10 deletions drivers/media/video/bt819.c
Original file line number Diff line number Diff line change
Expand Up @@ -140,24 +140,21 @@ bt819_write_block (struct i2c_client *client,
if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
/* do raw I2C, not smbus compatible */
struct bt819 *decoder = i2c_get_clientdata(client);
struct i2c_msg msg;
u8 block_data[32];
int block_len;

msg.addr = client->addr;
msg.flags = 0;
while (len >= 2) {
msg.buf = (char *) block_data;
msg.len = 0;
block_data[msg.len++] = reg = data[0];
block_len = 0;
block_data[block_len++] = reg = data[0];
do {
block_data[msg.len++] =
block_data[block_len++] =
decoder->reg[reg++] = data[1];
len -= 2;
data += 2;
} while (len >= 2 && data[0] == reg &&
msg.len < 32);
if ((ret = i2c_transfer(client->adapter,
&msg, 1)) < 0)
block_len < 32);
if ((ret = i2c_master_send(client, block_data,
block_len)) < 0)
break;
}
} else {
Expand Down
13 changes: 5 additions & 8 deletions drivers/media/video/bt856.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
unsigned char reg[32];
unsigned char reg[BT856_NR_REG];

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

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

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

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/video/cpia.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ static int video_nr = -1;

#ifdef MODULE
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_LICENSE("GPL");
MODULE_SUPPORTED_DEVICE("video");
Expand Down
19 changes: 6 additions & 13 deletions drivers/media/video/saa7110.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,8 @@ saa7110_write_block (struct i2c_client *client,
* the adapter understands raw I2C */
if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
struct saa7110 *decoder = i2c_get_clientdata(client);
struct i2c_msg msg;

msg.len = len;
msg.buf = (char *) data;
msg.addr = client->addr;
msg.flags = 0;
ret = i2c_transfer(client->adapter, &msg, 1);
ret = i2c_master_send(client, data, len);

/* Cache the written data */
memcpy(decoder->reg + reg, data + 1, len - 1);
Expand Down Expand Up @@ -431,15 +426,13 @@ saa7110_command (struct i2c_client *client,
break;

case DECODER_DUMP:
for (v = 0; v < 0x34; v += 16) {
for (v = 0; v < SAA7110_NR_REG; v += 16) {
int j;
dprintk(1, KERN_INFO "%s: %03x\n", I2C_NAME(client),
dprintk(1, KERN_DEBUG "%s: %02x:", I2C_NAME(client),
v);
for (j = 0; j < 16; j++) {
dprintk(1, KERN_INFO " %02x",
decoder->reg[v + j]);
}
dprintk(1, KERN_INFO "\n");
for (j = 0; j < 16 && v + j < SAA7110_NR_REG; j++)
dprintk(1, " %02x", decoder->reg[v + j]);
dprintk(1, "\n");
}
break;

Expand Down
26 changes: 13 additions & 13 deletions drivers/media/video/saa7111.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,10 @@ MODULE_PARM_DESC(debug, "Debug level (0-1)");

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

#define SAA7111_NR_REG 0x18

struct saa7111 {
unsigned char reg[32];
unsigned char reg[SAA7111_NR_REG];

int norm;
int input;
Expand Down Expand Up @@ -109,24 +111,21 @@ saa7111_write_block (struct i2c_client *client,
if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
/* do raw I2C, not smbus compatible */
struct saa7111 *decoder = i2c_get_clientdata(client);
struct i2c_msg msg;
u8 block_data[32];
int block_len;

msg.addr = client->addr;
msg.flags = 0;
while (len >= 2) {
msg.buf = (char *) block_data;
msg.len = 0;
block_data[msg.len++] = reg = data[0];
block_len = 0;
block_data[block_len++] = reg = data[0];
do {
block_data[msg.len++] =
block_data[block_len++] =
decoder->reg[reg++] = data[1];
len -= 2;
data += 2;
} while (len >= 2 && data[0] == reg &&
msg.len < 32);
if ((ret = i2c_transfer(client->adapter,
&msg, 1)) < 0)
block_len < 32);
if ((ret = i2c_master_send(client, block_data,
block_len)) < 0)
break;
}
} else {
Expand Down Expand Up @@ -209,6 +208,7 @@ saa7111_command (struct i2c_client *client,
switch (cmd) {

case 0:
break;
case DECODER_INIT:
{
struct video_decoder_init *init = arg;
Expand All @@ -226,11 +226,11 @@ saa7111_command (struct i2c_client *client,
{
int i;

for (i = 0; i < 32; i += 16) {
for (i = 0; i < SAA7111_NR_REG; i += 16) {
int j;

printk(KERN_DEBUG "%s: %03x", I2C_NAME(client), i);
for (j = 0; j < 16; ++j) {
for (j = 0; j < 16 && i + j < SAA7111_NR_REG; ++j) {
printk(" %02x",
saa7111_read(client, i + j));
}
Expand Down
23 changes: 8 additions & 15 deletions drivers/media/video/saa7114.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,6 @@ saa7114_write (struct i2c_client *client,
u8 reg,
u8 value)
{
/*struct saa7114 *decoder = i2c_get_clientdata(client);*/

/*decoder->reg[reg] = value;*/
return i2c_smbus_write_byte_data(client, reg, value);
}

Expand All @@ -156,25 +153,21 @@ saa7114_write_block (struct i2c_client *client,
* the adapter understands raw I2C */
if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
/* do raw I2C, not smbus compatible */
/*struct saa7114 *decoder = i2c_get_clientdata(client);*/
struct i2c_msg msg;
u8 block_data[32];
int block_len;

msg.addr = client->addr;
msg.flags = 0;
while (len >= 2) {
msg.buf = (char *) block_data;
msg.len = 0;
block_data[msg.len++] = reg = data[0];
block_len = 0;
block_data[block_len++] = reg = data[0];
do {
block_data[msg.len++] =
/*decoder->reg[reg++] =*/ data[1];
block_data[block_len++] = data[1];
reg++;
len -= 2;
data += 2;
} while (len >= 2 && data[0] == reg &&
msg.len < 32);
if ((ret = i2c_transfer(client->adapter,
&msg, 1)) < 0)
block_len < 32);
if ((ret = i2c_master_send(client, block_data,
block_len)) < 0)
break;
}
} else {
Expand Down
17 changes: 7 additions & 10 deletions drivers/media/video/saa7185.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,24 +112,21 @@ saa7185_write_block (struct i2c_client *client,
if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
/* do raw I2C, not smbus compatible */
struct saa7185 *encoder = i2c_get_clientdata(client);
struct i2c_msg msg;
u8 block_data[32];
int block_len;

msg.addr = client->addr;
msg.flags = 0;
while (len >= 2) {
msg.buf = (char *) block_data;
msg.len = 0;
block_data[msg.len++] = reg = data[0];
block_len = 0;
block_data[block_len++] = reg = data[0];
do {
block_data[msg.len++] =
block_data[block_len++] =
encoder->reg[reg++] = data[1];
len -= 2;
data += 2;
} while (len >= 2 && data[0] == reg &&
msg.len < 32);
if ((ret = i2c_transfer(client->adapter,
&msg, 1)) < 0)
block_len < 32);
if ((ret = i2c_master_send(client, block_data,
block_len)) < 0)
break;
}
} else {
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/video/zoran.h
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ struct zoran {
struct videocodec *codec; /* video codec */
struct videocodec *vfe; /* video front end */

struct semaphore resource_lock; /* prevent evil stuff */
struct mutex resource_lock; /* prevent evil stuff */

u8 initialized; /* flag if zoran has been correctly initalized */
int user; /* number of current users */
Expand Down
Loading

0 comments on commit 88f07ff

Please sign in to comment.