linux/drivers/media/usb/gspca/m5602/m5602_sensor.h
<<
>>
Prefs
   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        /* 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