70 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * USB Driver for ALi m5602 based webcams4 *5 * Copyright (C) 2008 Erik Andrén6 * Copyright (C) 2007 Ilyes Gouta. Based on the m5603x Linux Driver Project.7 * Copyright (C) 2005 m5603x Linux Driver Project <m5602@x3ng.com.br>8 *9 * Portions of code to USB interface and ALi driver software,10 * Copyright (c) 2006 Willem Duinker11 * v4l2 interface modeled after the V4L2 driver12 * for SN9C10x PC Camera Controllers13 */14 15#ifndef M5602_SENSOR_H_16#define M5602_SENSOR_H_17 18#include "m5602_bridge.h"19 20#define M5602_V4L2_CID_GREEN_BALANCE (V4L2_CID_PRIVATE_BASE + 0)21#define M5602_V4L2_CID_NOISE_SUPPRESION (V4L2_CID_PRIVATE_BASE + 1)22 23/* Enumerates all supported sensors */24enum sensors {25 OV9650_SENSOR = 1,26 S5K83A_SENSOR = 2,27 S5K4AA_SENSOR = 3,28 MT9M111_SENSOR = 4,29 PO1030_SENSOR = 5,30 OV7660_SENSOR = 6,31};32 33/* Enumerates all possible instruction types */34enum instruction {35 BRIDGE,36 SENSOR,37 SENSOR_LONG38};39 40struct m5602_sensor {41 /* Defines the name of a sensor */42 char name[32];43 44 /* What i2c address the sensor is connected to */45 u8 i2c_slave_id;46 47 /* Width of each i2c register (in bytes) */48 u8 i2c_regW;49 50 /* Probes if the sensor is connected */51 int (*probe)(struct sd *sd);52 53 /* Performs a initialization sequence */54 int (*init)(struct sd *sd);55 56 /* Controls initialization, maybe NULL */57 int (*init_controls)(struct sd *sd);58 59 /* Executed when the camera starts to send data */60 int (*start)(struct sd *sd);61 62 /* Executed when the camera ends to send data */63 int (*stop)(struct sd *sd);64 65 /* Executed when the device is disconnected */66 void (*disconnect)(struct sd *sd);67};68 69#endif70