Path: blob/master/drivers/media/video/gspca/m5602/m5602_ov7660.h
17984 views
/*1* Driver for the ov7660 sensor2*3* Copyright (C) 2009 Erik Andrén4* Copyright (C) 2007 Ilyes Gouta. Based on the m5603x Linux Driver Project.5* Copyright (C) 2005 m5603x Linux Driver Project <[email protected]>6*7* Portions of code to USB interface and ALi driver software,8* Copyright (c) 2006 Willem Duinker9* v4l2 interface modeled after the V4L2 driver10* for SN9C10x PC Camera Controllers11*12* This program is free software; you can redistribute it and/or13* modify it under the terms of the GNU General Public License as14* published by the Free Software Foundation, version 2.15*16*/1718#ifndef M5602_OV7660_H_19#define M5602_OV7660_H_2021#include "m5602_sensor.h"2223#define OV7660_GAIN 0x0024#define OV7660_BLUE_GAIN 0x0125#define OV7660_RED_GAIN 0x0226#define OV7660_VREF 0x0327#define OV7660_COM1 0x0428#define OV7660_BAVE 0x0529#define OV7660_GEAVE 0x0630#define OV7660_AECHH 0x0731#define OV7660_RAVE 0x0832#define OV7660_COM2 0x0933#define OV7660_PID 0x0a34#define OV7660_VER 0x0b35#define OV7660_COM3 0x0c36#define OV7660_COM4 0x0d37#define OV7660_COM5 0x0e38#define OV7660_COM6 0x0f39#define OV7660_AECH 0x1040#define OV7660_CLKRC 0x1141#define OV7660_COM7 0x1242#define OV7660_COM8 0x1343#define OV7660_COM9 0x1444#define OV7660_COM10 0x1545#define OV7660_RSVD16 0x1646#define OV7660_HSTART 0x1747#define OV7660_HSTOP 0x1848#define OV7660_VSTART 0x1949#define OV7660_VSTOP 0x1a50#define OV7660_PSHFT 0x1b51#define OV7660_MIDH 0x1c52#define OV7660_MIDL 0x1d53#define OV7660_MVFP 0x1e54#define OV7660_LAEC 0x1f55#define OV7660_BOS 0x2056#define OV7660_GBOS 0x2157#define OV7660_GROS 0x2258#define OV7660_ROS 0x2359#define OV7660_AEW 0x2460#define OV7660_AEB 0x2561#define OV7660_VPT 0x2662#define OV7660_BBIAS 0x2763#define OV7660_GbBIAS 0x2864#define OV7660_RSVD29 0x2965#define OV7660_RBIAS 0x2c66#define OV7660_HREF 0x3267#define OV7660_ADC 0x3768#define OV7660_OFON 0x3969#define OV7660_TSLB 0x3a70#define OV7660_COM12 0x3c71#define OV7660_COM13 0x3d72#define OV7660_LCC1 0x6273#define OV7660_LCC2 0x6374#define OV7660_LCC3 0x6475#define OV7660_LCC4 0x6576#define OV7660_LCC5 0x6677#define OV7660_HV 0x6978#define OV7660_RSVDA1 0xa17980#define OV7660_DEFAULT_GAIN 0x0e81#define OV7660_DEFAULT_RED_GAIN 0x8082#define OV7660_DEFAULT_BLUE_GAIN 0x8083#define OV7660_DEFAULT_SATURATION 0x0084#define OV7660_DEFAULT_EXPOSURE 0x208586/* Kernel module parameters */87extern int force_sensor;88extern int dump_sensor;8990int ov7660_probe(struct sd *sd);91int ov7660_init(struct sd *sd);92int ov7660_start(struct sd *sd);93int ov7660_stop(struct sd *sd);94void ov7660_disconnect(struct sd *sd);9596static const struct m5602_sensor ov7660 = {97.name = "ov7660",98.i2c_slave_id = 0x42,99.i2c_regW = 1,100.probe = ov7660_probe,101.init = ov7660_init,102.start = ov7660_start,103.stop = ov7660_stop,104.disconnect = ov7660_disconnect,105};106107static const unsigned char preinit_ov7660[][4] = {108{BRIDGE, M5602_XB_MCU_CLK_DIV, 0x02},109{BRIDGE, M5602_XB_MCU_CLK_CTRL, 0xb0},110{BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00},111{BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0},112{BRIDGE, M5602_XB_ADC_CTRL, 0xc0},113{BRIDGE, M5602_XB_SENSOR_TYPE, 0x0d},114{BRIDGE, M5602_XB_SENSOR_CTRL, 0x00},115{BRIDGE, M5602_XB_GPIO_DIR, 0x03},116{BRIDGE, M5602_XB_GPIO_DIR, 0x03},117{BRIDGE, M5602_XB_ADC_CTRL, 0xc0},118{BRIDGE, M5602_XB_SENSOR_TYPE, 0x0c},119120{SENSOR, OV7660_OFON, 0x0c},121{SENSOR, OV7660_COM2, 0x11},122{SENSOR, OV7660_COM7, 0x05},123124{BRIDGE, M5602_XB_GPIO_DIR, 0x01},125{BRIDGE, M5602_XB_GPIO_DAT, 0x04},126{BRIDGE, M5602_XB_GPIO_EN_H, 0x06},127{BRIDGE, M5602_XB_GPIO_DIR_H, 0x06},128{BRIDGE, M5602_XB_GPIO_DAT_H, 0x00},129{BRIDGE, M5602_XB_SEN_CLK_DIV, 0x08},130{BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0},131{BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00},132{BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0},133{BRIDGE, M5602_XB_ADC_CTRL, 0xc0},134{BRIDGE, M5602_XB_SENSOR_TYPE, 0x0c},135{BRIDGE, M5602_XB_GPIO_DIR, 0x05},136{BRIDGE, M5602_XB_GPIO_DAT, 0x00},137{BRIDGE, M5602_XB_GPIO_EN_H, 0x06},138{BRIDGE, M5602_XB_GPIO_EN_L, 0x00}139};140141static const unsigned char init_ov7660[][4] = {142{BRIDGE, M5602_XB_MCU_CLK_DIV, 0x02},143{BRIDGE, M5602_XB_MCU_CLK_CTRL, 0xb0},144{BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00},145{BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0},146{BRIDGE, M5602_XB_ADC_CTRL, 0xc0},147{BRIDGE, M5602_XB_SENSOR_TYPE, 0x0d},148{BRIDGE, M5602_XB_SENSOR_CTRL, 0x00},149{BRIDGE, M5602_XB_GPIO_DIR, 0x01},150{BRIDGE, M5602_XB_GPIO_DIR, 0x01},151{BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00},152{BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0},153{BRIDGE, M5602_XB_ADC_CTRL, 0xc0},154{BRIDGE, M5602_XB_SENSOR_TYPE, 0x0c},155{BRIDGE, M5602_XB_GPIO_DIR, 0x05},156{BRIDGE, M5602_XB_GPIO_DAT, 0x00},157{BRIDGE, M5602_XB_GPIO_EN_H, 0x06},158{BRIDGE, M5602_XB_GPIO_EN_L, 0x00},159{SENSOR, OV7660_COM7, 0x80},160{SENSOR, OV7660_CLKRC, 0x80},161{SENSOR, OV7660_COM9, 0x4c},162{SENSOR, OV7660_OFON, 0x43},163{SENSOR, OV7660_COM12, 0x28},164{SENSOR, OV7660_COM8, 0x00},165{SENSOR, OV7660_COM10, 0x40},166{SENSOR, OV7660_HSTART, 0x0c},167{SENSOR, OV7660_HSTOP, 0x61},168{SENSOR, OV7660_HREF, 0xa4},169{SENSOR, OV7660_PSHFT, 0x0b},170{SENSOR, OV7660_VSTART, 0x01},171{SENSOR, OV7660_VSTOP, 0x7a},172{SENSOR, OV7660_VSTOP, 0x00},173{SENSOR, OV7660_COM7, 0x05},174{SENSOR, OV7660_COM6, 0x42},175{SENSOR, OV7660_BBIAS, 0x94},176{SENSOR, OV7660_GbBIAS, 0x94},177{SENSOR, OV7660_RSVD29, 0x94},178{SENSOR, OV7660_RBIAS, 0x94},179{SENSOR, OV7660_COM1, 0x00},180{SENSOR, OV7660_AECH, 0x00},181{SENSOR, OV7660_AECHH, 0x00},182{SENSOR, OV7660_ADC, 0x05},183{SENSOR, OV7660_COM13, 0x00},184{SENSOR, OV7660_RSVDA1, 0x23},185{SENSOR, OV7660_TSLB, 0x0d},186{SENSOR, OV7660_HV, 0x80},187{SENSOR, OV7660_LCC1, 0x00},188{SENSOR, OV7660_LCC2, 0x00},189{SENSOR, OV7660_LCC3, 0x10},190{SENSOR, OV7660_LCC4, 0x40},191{SENSOR, OV7660_LCC5, 0x01},192193{SENSOR, OV7660_AECH, 0x20},194{SENSOR, OV7660_COM1, 0x00},195{SENSOR, OV7660_OFON, 0x0c},196{SENSOR, OV7660_COM2, 0x11},197{SENSOR, OV7660_COM7, 0x05},198{BRIDGE, M5602_XB_GPIO_DIR, 0x01},199{BRIDGE, M5602_XB_GPIO_DAT, 0x04},200{BRIDGE, M5602_XB_GPIO_EN_H, 0x06},201{BRIDGE, M5602_XB_GPIO_DIR_H, 0x06},202{BRIDGE, M5602_XB_GPIO_DAT_H, 0x00},203{BRIDGE, M5602_XB_SEN_CLK_DIV, 0x08},204{BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0},205{BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00},206{BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0},207{BRIDGE, M5602_XB_ADC_CTRL, 0xc0},208{BRIDGE, M5602_XB_SENSOR_TYPE, 0x0c},209{BRIDGE, M5602_XB_GPIO_DIR, 0x05},210{BRIDGE, M5602_XB_GPIO_DAT, 0x00},211{BRIDGE, M5602_XB_GPIO_EN_H, 0x06},212{BRIDGE, M5602_XB_GPIO_EN_L, 0x00},213{SENSOR, OV7660_AECH, 0x5f},214{SENSOR, OV7660_COM1, 0x03},215{SENSOR, OV7660_OFON, 0x0c},216{SENSOR, OV7660_COM2, 0x11},217{SENSOR, OV7660_COM7, 0x05},218{BRIDGE, M5602_XB_GPIO_DIR, 0x01},219{BRIDGE, M5602_XB_GPIO_DAT, 0x04},220{BRIDGE, M5602_XB_GPIO_EN_H, 0x06},221{BRIDGE, M5602_XB_GPIO_DIR_H, 0x06},222{BRIDGE, M5602_XB_GPIO_DAT_H, 0x00},223{BRIDGE, M5602_XB_SEN_CLK_DIV, 0x08},224{BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0},225{BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00},226{BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0},227{BRIDGE, M5602_XB_ADC_CTRL, 0xc0},228{BRIDGE, M5602_XB_SENSOR_TYPE, 0x0c},229{BRIDGE, M5602_XB_GPIO_DIR, 0x05},230{BRIDGE, M5602_XB_GPIO_DAT, 0x00},231{BRIDGE, M5602_XB_GPIO_EN_H, 0x06},232{BRIDGE, M5602_XB_GPIO_EN_L, 0x00},233234{BRIDGE, M5602_XB_SEN_CLK_DIV, 0x06},235{BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0},236{BRIDGE, M5602_XB_ADC_CTRL, 0xc0},237{BRIDGE, M5602_XB_SENSOR_TYPE, 0x0c},238{BRIDGE, M5602_XB_LINE_OF_FRAME_H, 0x81},239{BRIDGE, M5602_XB_PIX_OF_LINE_H, 0x82},240{BRIDGE, M5602_XB_SIG_INI, 0x01},241{BRIDGE, M5602_XB_VSYNC_PARA, 0x00},242{BRIDGE, M5602_XB_VSYNC_PARA, 0x08},243{BRIDGE, M5602_XB_VSYNC_PARA, 0x00},244{BRIDGE, M5602_XB_VSYNC_PARA, 0x00},245{BRIDGE, M5602_XB_VSYNC_PARA, 0x01},246{BRIDGE, M5602_XB_VSYNC_PARA, 0xec},247{BRIDGE, M5602_XB_VSYNC_PARA, 0x00},248{BRIDGE, M5602_XB_VSYNC_PARA, 0x00},249{BRIDGE, M5602_XB_SIG_INI, 0x00},250{BRIDGE, M5602_XB_SIG_INI, 0x02},251{BRIDGE, M5602_XB_HSYNC_PARA, 0x00},252{BRIDGE, M5602_XB_HSYNC_PARA, 0x27},253{BRIDGE, M5602_XB_HSYNC_PARA, 0x02},254{BRIDGE, M5602_XB_HSYNC_PARA, 0xa7},255{BRIDGE, M5602_XB_SIG_INI, 0x00},256{BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00},257{BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0},258};259#endif260261262