162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Driver for the ov7660 sensor 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2009 Erik Andrén 662306a36Sopenharmony_ci * Copyright (C) 2007 Ilyes Gouta. Based on the m5603x Linux Driver Project. 762306a36Sopenharmony_ci * Copyright (C) 2005 m5603x Linux Driver Project <m5602@x3ng.com.br> 862306a36Sopenharmony_ci * 962306a36Sopenharmony_ci * Portions of code to USB interface and ALi driver software, 1062306a36Sopenharmony_ci * Copyright (c) 2006 Willem Duinker 1162306a36Sopenharmony_ci * v4l2 interface modeled after the V4L2 driver 1262306a36Sopenharmony_ci * for SN9C10x PC Camera Controllers 1362306a36Sopenharmony_ci */ 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#ifndef M5602_OV7660_H_ 1662306a36Sopenharmony_ci#define M5602_OV7660_H_ 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci#include "m5602_sensor.h" 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#define OV7660_GAIN 0x00 2162306a36Sopenharmony_ci#define OV7660_BLUE_GAIN 0x01 2262306a36Sopenharmony_ci#define OV7660_RED_GAIN 0x02 2362306a36Sopenharmony_ci#define OV7660_VREF 0x03 2462306a36Sopenharmony_ci#define OV7660_COM1 0x04 2562306a36Sopenharmony_ci#define OV7660_BAVE 0x05 2662306a36Sopenharmony_ci#define OV7660_GEAVE 0x06 2762306a36Sopenharmony_ci#define OV7660_AECHH 0x07 2862306a36Sopenharmony_ci#define OV7660_RAVE 0x08 2962306a36Sopenharmony_ci#define OV7660_COM2 0x09 3062306a36Sopenharmony_ci#define OV7660_PID 0x0a 3162306a36Sopenharmony_ci#define OV7660_VER 0x0b 3262306a36Sopenharmony_ci#define OV7660_COM3 0x0c 3362306a36Sopenharmony_ci#define OV7660_COM4 0x0d 3462306a36Sopenharmony_ci#define OV7660_COM5 0x0e 3562306a36Sopenharmony_ci#define OV7660_COM6 0x0f 3662306a36Sopenharmony_ci#define OV7660_AECH 0x10 3762306a36Sopenharmony_ci#define OV7660_CLKRC 0x11 3862306a36Sopenharmony_ci#define OV7660_COM7 0x12 3962306a36Sopenharmony_ci#define OV7660_COM8 0x13 4062306a36Sopenharmony_ci#define OV7660_COM9 0x14 4162306a36Sopenharmony_ci#define OV7660_COM10 0x15 4262306a36Sopenharmony_ci#define OV7660_RSVD16 0x16 4362306a36Sopenharmony_ci#define OV7660_HSTART 0x17 4462306a36Sopenharmony_ci#define OV7660_HSTOP 0x18 4562306a36Sopenharmony_ci#define OV7660_VSTART 0x19 4662306a36Sopenharmony_ci#define OV7660_VSTOP 0x1a 4762306a36Sopenharmony_ci#define OV7660_PSHFT 0x1b 4862306a36Sopenharmony_ci#define OV7660_MIDH 0x1c 4962306a36Sopenharmony_ci#define OV7660_MIDL 0x1d 5062306a36Sopenharmony_ci#define OV7660_MVFP 0x1e 5162306a36Sopenharmony_ci#define OV7660_LAEC 0x1f 5262306a36Sopenharmony_ci#define OV7660_BOS 0x20 5362306a36Sopenharmony_ci#define OV7660_GBOS 0x21 5462306a36Sopenharmony_ci#define OV7660_GROS 0x22 5562306a36Sopenharmony_ci#define OV7660_ROS 0x23 5662306a36Sopenharmony_ci#define OV7660_AEW 0x24 5762306a36Sopenharmony_ci#define OV7660_AEB 0x25 5862306a36Sopenharmony_ci#define OV7660_VPT 0x26 5962306a36Sopenharmony_ci#define OV7660_BBIAS 0x27 6062306a36Sopenharmony_ci#define OV7660_GbBIAS 0x28 6162306a36Sopenharmony_ci#define OV7660_RSVD29 0x29 6262306a36Sopenharmony_ci#define OV7660_RBIAS 0x2c 6362306a36Sopenharmony_ci#define OV7660_HREF 0x32 6462306a36Sopenharmony_ci#define OV7660_ADC 0x37 6562306a36Sopenharmony_ci#define OV7660_OFON 0x39 6662306a36Sopenharmony_ci#define OV7660_TSLB 0x3a 6762306a36Sopenharmony_ci#define OV7660_COM12 0x3c 6862306a36Sopenharmony_ci#define OV7660_COM13 0x3d 6962306a36Sopenharmony_ci#define OV7660_LCC1 0x62 7062306a36Sopenharmony_ci#define OV7660_LCC2 0x63 7162306a36Sopenharmony_ci#define OV7660_LCC3 0x64 7262306a36Sopenharmony_ci#define OV7660_LCC4 0x65 7362306a36Sopenharmony_ci#define OV7660_LCC5 0x66 7462306a36Sopenharmony_ci#define OV7660_HV 0x69 7562306a36Sopenharmony_ci#define OV7660_RSVDA1 0xa1 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci#define OV7660_DEFAULT_GAIN 0x0e 7862306a36Sopenharmony_ci#define OV7660_DEFAULT_RED_GAIN 0x80 7962306a36Sopenharmony_ci#define OV7660_DEFAULT_BLUE_GAIN 0x80 8062306a36Sopenharmony_ci#define OV7660_DEFAULT_SATURATION 0x00 8162306a36Sopenharmony_ci#define OV7660_DEFAULT_EXPOSURE 0x20 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci/* Kernel module parameters */ 8462306a36Sopenharmony_ciextern int force_sensor; 8562306a36Sopenharmony_ciextern bool dump_sensor; 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ciint ov7660_probe(struct sd *sd); 8862306a36Sopenharmony_ciint ov7660_init(struct sd *sd); 8962306a36Sopenharmony_ciint ov7660_init_controls(struct sd *sd); 9062306a36Sopenharmony_ciint ov7660_start(struct sd *sd); 9162306a36Sopenharmony_ciint ov7660_stop(struct sd *sd); 9262306a36Sopenharmony_civoid ov7660_disconnect(struct sd *sd); 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_cistatic const struct m5602_sensor ov7660 = { 9562306a36Sopenharmony_ci .name = "ov7660", 9662306a36Sopenharmony_ci .i2c_slave_id = 0x42, 9762306a36Sopenharmony_ci .i2c_regW = 1, 9862306a36Sopenharmony_ci .probe = ov7660_probe, 9962306a36Sopenharmony_ci .init = ov7660_init, 10062306a36Sopenharmony_ci .init_controls = ov7660_init_controls, 10162306a36Sopenharmony_ci .start = ov7660_start, 10262306a36Sopenharmony_ci .stop = ov7660_stop, 10362306a36Sopenharmony_ci .disconnect = ov7660_disconnect, 10462306a36Sopenharmony_ci}; 10562306a36Sopenharmony_ci#endif 106