Lines Matching defs:sd

29 int stv06xx_write_bridge(struct sd *sd, u16 address, u16 i2c_data)
32 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
33 struct usb_device *udev = sd->gspca_dev.dev;
34 __u8 *buf = sd->gspca_dev.usb_buf;
51 int stv06xx_read_bridge(struct sd *sd, u16 address, u8 *i2c_data)
54 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
55 struct usb_device *udev = sd->gspca_dev.dev;
56 __u8 *buf = sd->gspca_dev.usb_buf;
72 int stv06xx_write_sensor(struct sd *sd, u8 address, u16 value)
74 if (sd->sensor->i2c_len == 2) {
76 return stv06xx_write_sensor_words(sd, data, 1);
79 return stv06xx_write_sensor_bytes(sd, data, 1);
83 static int stv06xx_write_sensor_finish(struct sd *sd)
87 if (sd->bridge == BRIDGE_STV610) {
88 struct usb_device *udev = sd->gspca_dev.dev;
89 __u8 *buf = sd->gspca_dev.usb_buf;
100 int stv06xx_write_sensor_bytes(struct sd *sd, const u8 *data, u8 len)
103 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
104 struct usb_device *udev = sd->gspca_dev.dev;
105 __u8 *buf = sd->gspca_dev.usb_buf;
118 buf[0x20] = sd->sensor->i2c_addr;
128 return stv06xx_write_sensor_finish(sd);
131 int stv06xx_write_sensor_words(struct sd *sd, const u16 *data, u8 len)
134 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
135 struct usb_device *udev = sd->gspca_dev.dev;
136 __u8 *buf = sd->gspca_dev.usb_buf;
151 buf[0x20] = sd->sensor->i2c_addr;
161 return stv06xx_write_sensor_finish(sd);
164 int stv06xx_read_sensor(struct sd *sd, const u8 address, u16 *value)
167 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
168 struct usb_device *udev = sd->gspca_dev.dev;
169 __u8 *buf = sd->gspca_dev.usb_buf;
171 err = stv06xx_write_bridge(sd, STV_I2C_FLUSH, sd->sensor->i2c_flush);
179 buf[0x20] = sd->sensor->i2c_addr;
194 0x04, 0xc0, 0x1410, 0, buf, sd->sensor->i2c_len,
196 if (sd->sensor->i2c_len == 2)
208 static void stv06xx_dump_bridge(struct sd *sd)
215 stv06xx_read_bridge(sd, i, &data);
222 stv06xx_read_bridge(sd, i, &data);
225 stv06xx_write_bridge(sd, i, 0xff);
226 stv06xx_read_bridge(sd, i, &data);
235 stv06xx_write_bridge(sd, i, buf);
242 struct sd *sd = (struct sd *) gspca_dev;
251 err = sd->sensor->init(sd);
253 if (dump_sensor && sd->sensor->dump)
254 sd->sensor->dump(sd);
262 struct sd *sd = (struct sd *) gspca_dev;
267 return sd->sensor->init_controls(sd);
273 struct sd *sd = (struct sd *) gspca_dev;
278 intf = usb_ifnum_to_if(sd->gspca_dev.dev, sd->gspca_dev.iface);
279 alt = usb_altnum_to_altsetting(intf, sd->gspca_dev.alt);
289 err = stv06xx_write_bridge(sd, STV_ISO_SIZE_L, packet_size);
294 err = sd->sensor->start(sd);
299 err = stv06xx_write_bridge(sd, STV_ISO_ENABLE, 1);
314 struct sd *sd = (struct sd *) gspca_dev;
328 cpu_to_le16(sd->sensor->max_packet_size[gspca_dev->curr_mode]);
337 struct sd *sd = (struct sd *) gspca_dev;
345 min_packet_size = sd->sensor->min_packet_size[gspca_dev->curr_mode];
364 struct sd *sd = (struct sd *) gspca_dev;
367 err = stv06xx_write_bridge(sd, STV_ISO_ENABLE, 0);
371 err = sd->sensor->stop(sd);
396 struct sd *sd = (struct sd *) gspca_dev;
428 if (sd->bridge == BRIDGE_ST6422 && (id & 0xff00) == 0x0200)
437 if (sd->to_skip) {
438 int skip = (sd->to_skip < chunk_len) ?
439 sd->to_skip : chunk_len;
443 sd->to_skip -= skip;
460 if (sd->bridge == BRIDGE_ST6422)
461 sd->to_skip = gspca_dev->pixfmt.width * 4;
534 struct sd *sd = (struct sd *)gspca_dev;
536 kfree(sd->sensor_priv);
537 sd->sensor_priv = NULL;
561 struct sd *sd = (struct sd *) gspca_dev;
565 sd->bridge = id->driver_info;
569 stv06xx_dump_bridge(sd);
571 sd->sensor = &stv06xx_sensor_st6422;
572 if (!sd->sensor->probe(sd))
575 sd->sensor = &stv06xx_sensor_vv6410;
576 if (!sd->sensor->probe(sd))
579 sd->sensor = &stv06xx_sensor_hdcs1x00;
580 if (!sd->sensor->probe(sd))
583 sd->sensor = &stv06xx_sensor_hdcs1020;
584 if (!sd->sensor->probe(sd))
587 sd->sensor = &stv06xx_sensor_pb0100;
588 if (!sd->sensor->probe(sd))
591 sd->sensor = NULL;
613 return gspca_dev_probe(intf, id, &sd_desc, sizeof(struct sd),
620 struct sd *sd = (struct sd *) gspca_dev;
621 void *priv = sd->sensor_priv;
624 sd->sensor = NULL;