1 /* 2 * Copyright (c) 2001 Jean-Fredric Clere, Nikolas Zimmermann, Georg Acher 3 * Mark Cave-Ayland, Carlo E Prelz, Dick Streefland 4 * Copyright (c) 2002, 2003 Tuukka Toivonen 5 * Copyright (c) 2008 Erik Andrén 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 * 21 * P/N 861037: Sensor HDCS1000 ASIC STV0600 22 * P/N 861050-0010: Sensor HDCS1000 ASIC STV0600 23 * P/N 861050-0020: Sensor Photobit PB100 ASIC STV0600-1 - QuickCam Express 24 * P/N 861055: Sensor ST VV6410 ASIC STV0610 - LEGO cam 25 * P/N 861075-0040: Sensor HDCS1000 ASIC 26 * P/N 961179-0700: Sensor ST VV6410 ASIC STV0602 - Dexxa WebCam USB 27 * P/N 861040-0000: Sensor ST VV6410 ASIC STV0610 - QuickCam Web 28 */ 29 30 #ifndef STV06XX_SENSOR_H_ 31 #define STV06XX_SENSOR_H_ 32 33 #include "stv06xx.h" 34 35 #define IS_1020(sd) ((sd)->sensor == &stv06xx_sensor_hdcs1020) 36 37 extern const struct stv06xx_sensor stv06xx_sensor_vv6410; 38 extern const struct stv06xx_sensor stv06xx_sensor_hdcs1x00; 39 extern const struct stv06xx_sensor stv06xx_sensor_hdcs1020; 40 extern const struct stv06xx_sensor stv06xx_sensor_pb0100; 41 extern const struct stv06xx_sensor stv06xx_sensor_st6422; 42 43 struct stv06xx_sensor { 44 /* Defines the name of a sensor */ 45 char name[32]; 46 47 /* Sensor i2c address */ 48 u8 i2c_addr; 49 50 /* Flush value*/ 51 u8 i2c_flush; 52 53 /* length of an i2c word */ 54 u8 i2c_len; 55 56 /* Isoc packet size (per mode) */ 57 int min_packet_size[4]; 58 int max_packet_size[4]; 59 60 /* Probes if the sensor is connected */ 61 int (*probe)(struct sd *sd); 62 63 /* Performs a initialization sequence */ 64 int (*init)(struct sd *sd); 65 66 /* Initializes the controls */ 67 int (*init_controls)(struct sd *sd); 68 69 /* Reads a sensor register */ 70 int (*read_sensor)(struct sd *sd, const u8 address, 71 u8 *i2c_data, const u8 len); 72 73 /* Writes to a sensor register */ 74 int (*write_sensor)(struct sd *sd, const u8 address, 75 u8 *i2c_data, const u8 len); 76 77 /* Instructs the sensor to start streaming */ 78 int (*start)(struct sd *sd); 79 80 /* Instructs the sensor to stop streaming */ 81 int (*stop)(struct sd *sd); 82 83 /* Instructs the sensor to dump all its contents */ 84 int (*dump)(struct sd *sd); 85 }; 86 87 #endif 88