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 */ 28enum 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 */ 38enum instruction { 39 BRIDGE, 40 SENSOR, 41 SENSOR_LONG 42}; 43 44struct 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 /* Executed when the camera starts to send data */ 61 int (*start)(struct sd *sd); 62 63 /* Executed when the camera ends to send data */ 64 int (*stop)(struct sd *sd); 65 66 /* Executed when the device is disconnected */ 67 void (*disconnect)(struct sd *sd); 68}; 69 70#endif 71