forked from Minki/linux
V4L/DVB (10014): gspca - m5602: Remove all sensor specific write functions.
Signed-off-by: Erik Andrén <erik.andren@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
6dc4cff0c3
commit
fce65f6515
@ -266,50 +266,6 @@ out:
|
||||
return err;
|
||||
}
|
||||
|
||||
int mt9m111_write_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len)
|
||||
{
|
||||
int err, i;
|
||||
u8 *p;
|
||||
struct usb_device *udev = sd->gspca_dev.dev;
|
||||
__u8 *buf = sd->gspca_dev.usb_buf;
|
||||
|
||||
/* No sensor with a data width larger
|
||||
than 16 bits has yet been seen, nor with 0 :p*/
|
||||
if (len > 2 || !len)
|
||||
return -EINVAL;
|
||||
|
||||
memcpy(buf, sensor_urb_skeleton,
|
||||
sizeof(sensor_urb_skeleton));
|
||||
|
||||
buf[11] = sd->sensor->i2c_slave_id;
|
||||
buf[15] = address;
|
||||
|
||||
p = buf + 16;
|
||||
|
||||
/* Copy a four byte write sequence for each byte to be written to */
|
||||
for (i = 0; i < len; i++) {
|
||||
memcpy(p, sensor_urb_skeleton + 16, 4);
|
||||
p[3] = i2c_data[i];
|
||||
p += 4;
|
||||
PDEBUG(D_CONF, "Writing sensor register 0x%x with 0x%x",
|
||||
address, i2c_data[i]);
|
||||
}
|
||||
|
||||
/* Copy the tailer */
|
||||
memcpy(p, sensor_urb_skeleton + 20, 4);
|
||||
|
||||
/* Set the total length */
|
||||
p[3] = 0x10 + len;
|
||||
|
||||
err = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
||||
0x04, 0x40, 0x19,
|
||||
0x0000, buf,
|
||||
20 + len * 4, M5602_URB_MSG_TIMEOUT);
|
||||
|
||||
return (err < 0) ? err : 0;
|
||||
}
|
||||
|
||||
static void mt9m111_dump_registers(struct sd *sd)
|
||||
{
|
||||
u8 address, value[2] = {0x00, 0x00};
|
||||
|
@ -90,9 +90,6 @@ int mt9m111_power_down(struct sd *sd);
|
||||
int mt9m111_read_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len);
|
||||
|
||||
int mt9m111_write_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len);
|
||||
|
||||
int mt9m111_set_vflip(struct gspca_dev *gspca_dev, __s32 val);
|
||||
int mt9m111_get_vflip(struct gspca_dev *gspca_dev, __s32 *val);
|
||||
int mt9m111_get_hflip(struct gspca_dev *gspca_dev, __s32 *val);
|
||||
|
@ -102,50 +102,6 @@ out:
|
||||
return (err < 0) ? err : 0;
|
||||
}
|
||||
|
||||
int ov9650_write_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len)
|
||||
{
|
||||
int err, i;
|
||||
u8 *p;
|
||||
struct usb_device *udev = sd->gspca_dev.dev;
|
||||
__u8 *buf = sd->gspca_dev.usb_buf;
|
||||
|
||||
/* The ov9650 only supports one byte writes */
|
||||
if (len > 1 || !len)
|
||||
return -EINVAL;
|
||||
|
||||
memcpy(buf, sensor_urb_skeleton,
|
||||
sizeof(sensor_urb_skeleton));
|
||||
|
||||
buf[11] = sd->sensor->i2c_slave_id;
|
||||
buf[15] = address;
|
||||
|
||||
/* Special case larger sensor writes */
|
||||
p = buf + 16;
|
||||
|
||||
/* Copy a four byte sequence for each byte to write over the I2C bus */
|
||||
for (i = 0; i < len; i++) {
|
||||
memcpy(p, sensor_urb_skeleton + 16, 4);
|
||||
p[3] = i2c_data[i];
|
||||
p += 4;
|
||||
PDEBUG(D_CONF, "Writing sensor register 0x%x with 0x%x",
|
||||
address, i2c_data[i]);
|
||||
}
|
||||
|
||||
/* Copy the tailer */
|
||||
memcpy(p, sensor_urb_skeleton + 20, 4);
|
||||
|
||||
/* Set the total length */
|
||||
p[3] = 0x10 + len;
|
||||
|
||||
err = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
||||
0x04, 0x40, 0x19,
|
||||
0x0000, buf,
|
||||
20 + len * 4, M5602_URB_MSG_TIMEOUT);
|
||||
|
||||
return (err < 0) ? err : 0;
|
||||
}
|
||||
|
||||
int ov9650_probe(struct sd *sd)
|
||||
{
|
||||
u8 prod_id = 0, ver_id = 0, i;
|
||||
|
@ -128,8 +128,6 @@ int ov9650_power_down(struct sd *sd);
|
||||
|
||||
int ov9650_read_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len);
|
||||
int ov9650_write_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len);
|
||||
|
||||
int ov9650_set_exposure(struct gspca_dev *gspca_dev, __s32 val);
|
||||
int ov9650_get_exposure(struct gspca_dev *gspca_dev, __s32 *val);
|
||||
|
@ -99,48 +99,6 @@ out:
|
||||
return err;
|
||||
}
|
||||
|
||||
int po1030_write_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len)
|
||||
{
|
||||
int err, i;
|
||||
u8 *p;
|
||||
struct usb_device *udev = sd->gspca_dev.dev;
|
||||
__u8 *buf = sd->gspca_dev.usb_buf;
|
||||
|
||||
/* The po1030 only supports one byte writes */
|
||||
if (len > 1 || !len)
|
||||
return -EINVAL;
|
||||
|
||||
memcpy(buf, sensor_urb_skeleton, sizeof(sensor_urb_skeleton));
|
||||
|
||||
buf[11] = sd->sensor->i2c_slave_id;
|
||||
buf[15] = address;
|
||||
|
||||
p = buf + 16;
|
||||
|
||||
/* Copy a four byte write sequence for each byte to be written to */
|
||||
for (i = 0; i < len; i++) {
|
||||
memcpy(p, sensor_urb_skeleton + 16, 4);
|
||||
p[3] = i2c_data[i];
|
||||
p += 4;
|
||||
PDEBUG(D_CONF, "Writing sensor register 0x%x with 0x%x",
|
||||
address, i2c_data[i]);
|
||||
}
|
||||
|
||||
/* Copy the footer */
|
||||
memcpy(p, sensor_urb_skeleton + 20, 4);
|
||||
|
||||
/* Set the total length */
|
||||
p[3] = 0x10 + len;
|
||||
|
||||
err = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
||||
0x04, 0x40, 0x19,
|
||||
0x0000, buf,
|
||||
20 + len * 4, M5602_URB_MSG_TIMEOUT);
|
||||
|
||||
return (err < 0) ? err : 0;
|
||||
}
|
||||
|
||||
int po1030_init(struct sd *sd)
|
||||
{
|
||||
int i, err = 0;
|
||||
|
@ -130,8 +130,6 @@ int po1030_power_down(struct sd *sd);
|
||||
|
||||
int po1030_read_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len);
|
||||
int po1030_write_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len);
|
||||
|
||||
int po1030_get_exposure(struct gspca_dev *gspca_dev, __s32 *val);
|
||||
int po1030_set_exposure(struct gspca_dev *gspca_dev, __s32 val);
|
||||
|
@ -159,50 +159,6 @@ out:
|
||||
return err;
|
||||
}
|
||||
|
||||
int s5k4aa_write_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len)
|
||||
{
|
||||
int err, i;
|
||||
u8 *p;
|
||||
struct usb_device *udev = sd->gspca_dev.dev;
|
||||
__u8 *buf = sd->gspca_dev.usb_buf;
|
||||
|
||||
/* No sensor with a data width larger than 16 bits has yet been seen */
|
||||
if (len > 2 || !len)
|
||||
return -EINVAL;
|
||||
|
||||
memcpy(buf, sensor_urb_skeleton,
|
||||
sizeof(sensor_urb_skeleton));
|
||||
|
||||
buf[11] = sd->sensor->i2c_slave_id;
|
||||
buf[15] = address;
|
||||
|
||||
/* Special case larger sensor writes */
|
||||
p = buf + 16;
|
||||
|
||||
/* Copy a four byte write sequence for each byte to be written to */
|
||||
for (i = 0; i < len; i++) {
|
||||
memcpy(p, sensor_urb_skeleton + 16, 4);
|
||||
p[3] = i2c_data[i];
|
||||
p += 4;
|
||||
PDEBUG(D_CONF, "Writing sensor register 0x%x with 0x%x",
|
||||
address, i2c_data[i]);
|
||||
}
|
||||
|
||||
/* Copy the tailer */
|
||||
memcpy(p, sensor_urb_skeleton + 20, 4);
|
||||
|
||||
/* Set the total length */
|
||||
p[3] = 0x10 + len;
|
||||
|
||||
err = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
||||
0x04, 0x40, 0x19,
|
||||
0x0000, buf,
|
||||
20 + len * 4, M5602_URB_MSG_TIMEOUT);
|
||||
|
||||
return (err < 0) ? err : 0;
|
||||
}
|
||||
|
||||
int s5k4aa_init(struct sd *sd)
|
||||
{
|
||||
int i, err = 0;
|
||||
|
@ -69,8 +69,6 @@ int s5k4aa_power_down(struct sd *sd);
|
||||
|
||||
int s5k4aa_read_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len);
|
||||
int s5k4aa_write_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len);
|
||||
|
||||
int s5k4aa_get_exposure(struct gspca_dev *gspca_dev, __s32 *val);
|
||||
int s5k4aa_set_exposure(struct gspca_dev *gspca_dev, __s32 val);
|
||||
|
@ -107,50 +107,6 @@ out:
|
||||
return err;
|
||||
}
|
||||
|
||||
int s5k83a_write_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len)
|
||||
{
|
||||
int err, i;
|
||||
u8 *p;
|
||||
struct usb_device *udev = sd->gspca_dev.dev;
|
||||
__u8 *buf = sd->gspca_dev.usb_buf;
|
||||
|
||||
/* No sensor with a data width larger than 16 bits has yet been seen */
|
||||
if (len > 2 || !len)
|
||||
return -EINVAL;
|
||||
|
||||
memcpy(buf, sensor_urb_skeleton,
|
||||
sizeof(sensor_urb_skeleton));
|
||||
|
||||
buf[11] = sd->sensor->i2c_slave_id;
|
||||
buf[15] = address;
|
||||
|
||||
/* Special case larger sensor writes */
|
||||
p = buf + 16;
|
||||
|
||||
/* Copy a four byte write sequence for each byte to be written to */
|
||||
for (i = 0; i < len; i++) {
|
||||
memcpy(p, sensor_urb_skeleton + 16, 4);
|
||||
p[3] = i2c_data[i];
|
||||
p += 4;
|
||||
PDEBUG(D_CONF, "Writing sensor register 0x%x with 0x%x",
|
||||
address, i2c_data[i]);
|
||||
}
|
||||
|
||||
/* Copy the tailer */
|
||||
memcpy(p, sensor_urb_skeleton + 20, 4);
|
||||
|
||||
/* Set the total length */
|
||||
p[3] = 0x10 + len;
|
||||
|
||||
err = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
||||
0x04, 0x40, 0x19,
|
||||
0x0000, buf,
|
||||
20 + len * 4, M5602_URB_MSG_TIMEOUT);
|
||||
|
||||
return (err < 0) ? err : 0;
|
||||
}
|
||||
|
||||
int s5k83a_init(struct sd *sd)
|
||||
{
|
||||
int i, err = 0;
|
||||
|
@ -48,8 +48,6 @@ int s5k83a_power_down(struct sd *sd);
|
||||
|
||||
int s5k83a_read_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len);
|
||||
int s5k83a_write_sensor(struct sd *sd, const u8 address,
|
||||
u8 *i2c_data, const u8 len);
|
||||
|
||||
int s5k83a_set_brightness(struct gspca_dev *gspca_dev, __s32 val);
|
||||
int s5k83a_get_brightness(struct gspca_dev *gspca_dev, __s32 *val);
|
||||
@ -62,7 +60,6 @@ int s5k83a_set_vflip(struct gspca_dev *gspca_dev, __s32 val);
|
||||
int s5k83a_get_hflip(struct gspca_dev *gspca_dev, __s32 *val);
|
||||
int s5k83a_set_hflip(struct gspca_dev *gspca_dev, __s32 val);
|
||||
|
||||
|
||||
static struct m5602_sensor s5k83a = {
|
||||
.name = "S5K83A",
|
||||
.probe = s5k83a_probe,
|
||||
|
Loading…
Reference in New Issue
Block a user