linux/drivers/media/usb/gspca/m5602/m5602_po1030.h
<<
>>
Prefs
   1/*
   2 * Driver for the po1030 sensor.
   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 * Register defines taken from Pascal Stangs Procyon Armlib
  14 *
  15 * This program is free software; you can redistribute it and/or
  16 * modify it under the terms of the GNU General Public License as
  17 * published by the Free Software Foundation, version 2.
  18 *
  19 */
  20
  21#ifndef M5602_PO1030_H_
  22#define M5602_PO1030_H_
  23
  24#include "m5602_sensor.h"
  25
  26/*****************************************************************************/
  27
  28#define PO1030_DEVID_H          0x00
  29#define PO1030_DEVID_L          0x01
  30#define PO1030_FRAMEWIDTH_H     0x04
  31#define PO1030_FRAMEWIDTH_L     0x05
  32#define PO1030_FRAMEHEIGHT_H    0x06
  33#define PO1030_FRAMEHEIGHT_L    0x07
  34#define PO1030_WINDOWX_H        0x08
  35#define PO1030_WINDOWX_L        0x09
  36#define PO1030_WINDOWY_H        0x0a
  37#define PO1030_WINDOWY_L        0x0b
  38#define PO1030_WINDOWWIDTH_H    0x0c
  39#define PO1030_WINDOWWIDTH_L    0x0d
  40#define PO1030_WINDOWHEIGHT_H   0x0e
  41#define PO1030_WINDOWHEIGHT_L   0x0f
  42
  43#define PO1030_GLOBALIBIAS      0x12
  44#define PO1030_PIXELIBIAS       0x13
  45
  46#define PO1030_GLOBALGAIN       0x15
  47#define PO1030_RED_GAIN         0x16
  48#define PO1030_GREEN_1_GAIN     0x17
  49#define PO1030_BLUE_GAIN        0x18
  50#define PO1030_GREEN_2_GAIN     0x19
  51
  52#define PO1030_INTEGLINES_H     0x1a
  53#define PO1030_INTEGLINES_M     0x1b
  54#define PO1030_INTEGLINES_L     0x1c
  55
  56#define PO1030_CONTROL1         0x1d
  57#define PO1030_CONTROL2         0x1e
  58#define PO1030_CONTROL3         0x1f
  59#define PO1030_CONTROL4         0x20
  60
  61#define PO1030_PERIOD50_H       0x23
  62#define PO1030_PERIOD50_L       0x24
  63#define PO1030_PERIOD60_H       0x25
  64#define PO1030_PERIOD60_L       0x26
  65#define PO1030_REGCLK167        0x27
  66#define PO1030_FLICKER_DELTA50  0x28
  67#define PO1030_FLICKERDELTA60   0x29
  68
  69#define PO1030_ADCOFFSET        0x2c
  70
  71/* Gamma Correction Coeffs */
  72#define PO1030_GC0              0x2d
  73#define PO1030_GC1              0x2e
  74#define PO1030_GC2              0x2f
  75#define PO1030_GC3              0x30
  76#define PO1030_GC4              0x31
  77#define PO1030_GC5              0x32
  78#define PO1030_GC6              0x33
  79#define PO1030_GC7              0x34
  80
  81/* Color Transform Matrix */
  82#define PO1030_CT0              0x35
  83#define PO1030_CT1              0x36
  84#define PO1030_CT2              0x37
  85#define PO1030_CT3              0x38
  86#define PO1030_CT4              0x39
  87#define PO1030_CT5              0x3a
  88#define PO1030_CT6              0x3b
  89#define PO1030_CT7              0x3c
  90#define PO1030_CT8              0x3d
  91
  92#define PO1030_AUTOCTRL1        0x3e
  93#define PO1030_AUTOCTRL2        0x3f
  94
  95#define PO1030_YTARGET          0x40
  96#define PO1030_GLOBALGAINMIN    0x41
  97#define PO1030_GLOBALGAINMAX    0x42
  98
  99#define PO1030_AWB_RED_TUNING   0x47
 100#define PO1030_AWB_BLUE_TUNING  0x48
 101
 102/* Output format control */
 103#define PO1030_OUTFORMCTRL1     0x5a
 104#define PO1030_OUTFORMCTRL2     0x5b
 105#define PO1030_OUTFORMCTRL3     0x5c
 106#define PO1030_OUTFORMCTRL4     0x5d
 107#define PO1030_OUTFORMCTRL5     0x5e
 108
 109#define PO1030_EDGE_ENH_OFF     0x5f
 110#define PO1030_EGA              0x60
 111
 112#define PO1030_Cb_U_GAIN        0x63
 113#define PO1030_Cr_V_GAIN        0x64
 114
 115#define PO1030_YCONTRAST        0x74
 116#define PO1030_YSATURATION      0x75
 117
 118#define PO1030_HFLIP            (1 << 7)
 119#define PO1030_VFLIP            (1 << 6)
 120
 121#define PO1030_HREF_ENABLE      (1 << 6)
 122
 123#define PO1030_RAW_RGB_BAYER    0x4
 124
 125#define PO1030_FRAME_EQUAL      (1 << 3)
 126#define PO1030_AUTO_SUBSAMPLING (1 << 4)
 127
 128#define PO1030_WEIGHT_WIN_2X    (1 << 3)
 129
 130#define PO1030_SHUTTER_MODE     (1 << 6)
 131#define PO1030_AUTO_SUBSAMPLING (1 << 4)
 132#define PO1030_FRAME_EQUAL      (1 << 3)
 133
 134#define PO1030_SENSOR_RESET     (1 << 5)
 135
 136#define PO1030_SUBSAMPLING      (1 << 6)
 137
 138/*****************************************************************************/
 139
 140#define PO1030_GLOBAL_GAIN_DEFAULT      0x12
 141#define PO1030_EXPOSURE_DEFAULT         0x0085
 142#define PO1030_BLUE_GAIN_DEFAULT        0x36
 143#define PO1030_RED_GAIN_DEFAULT         0x36
 144#define PO1030_GREEN_GAIN_DEFAULT       0x40
 145
 146/*****************************************************************************/
 147
 148/* Kernel module parameters */
 149extern int force_sensor;
 150extern bool dump_sensor;
 151
 152int po1030_probe(struct sd *sd);
 153int po1030_init(struct sd *sd);
 154int po1030_init_controls(struct sd *sd);
 155int po1030_start(struct sd *sd);
 156void po1030_disconnect(struct sd *sd);
 157
 158static const struct m5602_sensor po1030 = {
 159        .name = "PO1030",
 160
 161        .i2c_slave_id = 0xdc,
 162        .i2c_regW = 1,
 163
 164        .probe = po1030_probe,
 165        .init = po1030_init,
 166        .init_controls = po1030_init_controls,
 167        .start = po1030_start,
 168        .disconnect = po1030_disconnect,
 169};
 170#endif
 171