1 /* 2 * USB Driver for ALi m5602 based webcams 3 * 4 * Copyright (C) 2008 Erik Andrén 5 * Copyright (C) 2007 Ilyes Gouta. Based on the m5603x Linux Driver Project. 6 * Copyright (C) 2005 m5603x Linux Driver Project <m5602@x3ng.com.br> 7 * 8 * Portions of code to USB interface and ALi driver software, 9 * Copyright (c) 2006 Willem Duinker 10 * v4l2 interface modeled after the V4L2 driver 11 * for SN9C10x PC Camera Controllers 12 * 13 * This program is free software; you can redistribute it and/or 14 * modify it under the terms of the GNU General Public License as 15 * published by the Free Software Foundation, version 2. 16 * 17 */ 18 19 #ifndef M5602_SENSOR_H_ 20 #define M5602_SENSOR_H_ 21 22 #include "m5602_bridge.h" 23 24 #define M5602_V4L2_CID_GREEN_BALANCE (V4L2_CID_PRIVATE_BASE + 0) 25 #define M5602_V4L2_CID_NOISE_SUPPRESION (V4L2_CID_PRIVATE_BASE + 1) 26 27 /* Enumerates all supported sensors */ 28 enum sensors { 29 OV9650_SENSOR = 1, 30 S5K83A_SENSOR = 2, 31 S5K4AA_SENSOR = 3, 32 MT9M111_SENSOR = 4, 33 PO1030_SENSOR = 5, 34 OV7660_SENSOR = 6, 35 }; 36 37 /* Enumerates all possible instruction types */ 38 enum instruction { 39 BRIDGE, 40 SENSOR, 41 SENSOR_LONG 42 }; 43 44 struct m5602_sensor { 45 /* Defines the name of a sensor */ 46 char name[32]; 47 48 /* What i2c address the sensor is connected to */ 49 u8 i2c_slave_id; 50 51 /* Width of each i2c register (in bytes) */ 52 u8 i2c_regW; 53 54 /* Probes if the sensor is connected */ 55 int (*probe)(struct sd *sd); 56 57 /* Performs a initialization sequence */ 58 int (*init)(struct sd *sd); 59 60 /* Controls initialization, maybe NULL */ 61 int (*init_controls)(struct sd *sd); 62 63 /* Executed when the camera starts to send data */ 64 int (*start)(struct sd *sd); 65 66 /* Executed when the camera ends to send data */ 67 int (*stop)(struct sd *sd); 68 69 /* Executed when the device is disconnected */ 70 void (*disconnect)(struct sd *sd); 71 }; 72 73 #endif 74