xref: /openbmc/linux/drivers/media/usb/gspca/m5602/m5602_ov7660.h (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
1*a10e763bSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
20c0d06caSMauro Carvalho Chehab /*
30c0d06caSMauro Carvalho Chehab  * Driver for the ov7660 sensor
40c0d06caSMauro Carvalho Chehab  *
50c0d06caSMauro Carvalho Chehab  * Copyright (C) 2009 Erik Andrén
60c0d06caSMauro Carvalho Chehab  * Copyright (C) 2007 Ilyes Gouta. Based on the m5603x Linux Driver Project.
70c0d06caSMauro Carvalho Chehab  * Copyright (C) 2005 m5603x Linux Driver Project <m5602@x3ng.com.br>
80c0d06caSMauro Carvalho Chehab  *
90c0d06caSMauro Carvalho Chehab  * Portions of code to USB interface and ALi driver software,
100c0d06caSMauro Carvalho Chehab  * Copyright (c) 2006 Willem Duinker
110c0d06caSMauro Carvalho Chehab  * v4l2 interface modeled after the V4L2 driver
120c0d06caSMauro Carvalho Chehab  * for SN9C10x PC Camera Controllers
130c0d06caSMauro Carvalho Chehab  */
140c0d06caSMauro Carvalho Chehab 
150c0d06caSMauro Carvalho Chehab #ifndef M5602_OV7660_H_
160c0d06caSMauro Carvalho Chehab #define M5602_OV7660_H_
170c0d06caSMauro Carvalho Chehab 
180c0d06caSMauro Carvalho Chehab #include "m5602_sensor.h"
190c0d06caSMauro Carvalho Chehab 
200c0d06caSMauro Carvalho Chehab #define OV7660_GAIN		0x00
210c0d06caSMauro Carvalho Chehab #define OV7660_BLUE_GAIN	0x01
220c0d06caSMauro Carvalho Chehab #define OV7660_RED_GAIN		0x02
230c0d06caSMauro Carvalho Chehab #define OV7660_VREF		0x03
240c0d06caSMauro Carvalho Chehab #define OV7660_COM1		0x04
250c0d06caSMauro Carvalho Chehab #define OV7660_BAVE		0x05
260c0d06caSMauro Carvalho Chehab #define OV7660_GEAVE		0x06
270c0d06caSMauro Carvalho Chehab #define OV7660_AECHH		0x07
280c0d06caSMauro Carvalho Chehab #define OV7660_RAVE		0x08
290c0d06caSMauro Carvalho Chehab #define OV7660_COM2		0x09
300c0d06caSMauro Carvalho Chehab #define OV7660_PID		0x0a
310c0d06caSMauro Carvalho Chehab #define OV7660_VER		0x0b
320c0d06caSMauro Carvalho Chehab #define OV7660_COM3		0x0c
330c0d06caSMauro Carvalho Chehab #define OV7660_COM4		0x0d
340c0d06caSMauro Carvalho Chehab #define OV7660_COM5		0x0e
350c0d06caSMauro Carvalho Chehab #define OV7660_COM6		0x0f
360c0d06caSMauro Carvalho Chehab #define OV7660_AECH		0x10
370c0d06caSMauro Carvalho Chehab #define OV7660_CLKRC		0x11
380c0d06caSMauro Carvalho Chehab #define OV7660_COM7		0x12
390c0d06caSMauro Carvalho Chehab #define OV7660_COM8		0x13
400c0d06caSMauro Carvalho Chehab #define OV7660_COM9		0x14
410c0d06caSMauro Carvalho Chehab #define OV7660_COM10		0x15
420c0d06caSMauro Carvalho Chehab #define OV7660_RSVD16		0x16
430c0d06caSMauro Carvalho Chehab #define OV7660_HSTART		0x17
440c0d06caSMauro Carvalho Chehab #define OV7660_HSTOP		0x18
450c0d06caSMauro Carvalho Chehab #define OV7660_VSTART		0x19
460c0d06caSMauro Carvalho Chehab #define OV7660_VSTOP		0x1a
470c0d06caSMauro Carvalho Chehab #define OV7660_PSHFT		0x1b
480c0d06caSMauro Carvalho Chehab #define OV7660_MIDH		0x1c
490c0d06caSMauro Carvalho Chehab #define OV7660_MIDL		0x1d
500c0d06caSMauro Carvalho Chehab #define OV7660_MVFP		0x1e
510c0d06caSMauro Carvalho Chehab #define OV7660_LAEC		0x1f
520c0d06caSMauro Carvalho Chehab #define OV7660_BOS		0x20
530c0d06caSMauro Carvalho Chehab #define OV7660_GBOS		0x21
540c0d06caSMauro Carvalho Chehab #define OV7660_GROS		0x22
550c0d06caSMauro Carvalho Chehab #define OV7660_ROS		0x23
560c0d06caSMauro Carvalho Chehab #define OV7660_AEW		0x24
570c0d06caSMauro Carvalho Chehab #define OV7660_AEB		0x25
580c0d06caSMauro Carvalho Chehab #define OV7660_VPT		0x26
590c0d06caSMauro Carvalho Chehab #define OV7660_BBIAS		0x27
600c0d06caSMauro Carvalho Chehab #define OV7660_GbBIAS		0x28
610c0d06caSMauro Carvalho Chehab #define OV7660_RSVD29		0x29
620c0d06caSMauro Carvalho Chehab #define OV7660_RBIAS		0x2c
630c0d06caSMauro Carvalho Chehab #define OV7660_HREF		0x32
640c0d06caSMauro Carvalho Chehab #define OV7660_ADC		0x37
650c0d06caSMauro Carvalho Chehab #define OV7660_OFON		0x39
660c0d06caSMauro Carvalho Chehab #define OV7660_TSLB		0x3a
670c0d06caSMauro Carvalho Chehab #define OV7660_COM12		0x3c
680c0d06caSMauro Carvalho Chehab #define OV7660_COM13		0x3d
690c0d06caSMauro Carvalho Chehab #define OV7660_LCC1		0x62
700c0d06caSMauro Carvalho Chehab #define OV7660_LCC2		0x63
710c0d06caSMauro Carvalho Chehab #define OV7660_LCC3		0x64
720c0d06caSMauro Carvalho Chehab #define OV7660_LCC4		0x65
730c0d06caSMauro Carvalho Chehab #define OV7660_LCC5		0x66
740c0d06caSMauro Carvalho Chehab #define OV7660_HV		0x69
750c0d06caSMauro Carvalho Chehab #define OV7660_RSVDA1		0xa1
760c0d06caSMauro Carvalho Chehab 
770c0d06caSMauro Carvalho Chehab #define OV7660_DEFAULT_GAIN		0x0e
780c0d06caSMauro Carvalho Chehab #define OV7660_DEFAULT_RED_GAIN		0x80
790c0d06caSMauro Carvalho Chehab #define OV7660_DEFAULT_BLUE_GAIN	0x80
800c0d06caSMauro Carvalho Chehab #define OV7660_DEFAULT_SATURATION	0x00
810c0d06caSMauro Carvalho Chehab #define OV7660_DEFAULT_EXPOSURE		0x20
820c0d06caSMauro Carvalho Chehab 
830c0d06caSMauro Carvalho Chehab /* Kernel module parameters */
840c0d06caSMauro Carvalho Chehab extern int force_sensor;
850c0d06caSMauro Carvalho Chehab extern bool dump_sensor;
860c0d06caSMauro Carvalho Chehab 
870c0d06caSMauro Carvalho Chehab int ov7660_probe(struct sd *sd);
880c0d06caSMauro Carvalho Chehab int ov7660_init(struct sd *sd);
89c84e412fSHans de Goede int ov7660_init_controls(struct sd *sd);
900c0d06caSMauro Carvalho Chehab int ov7660_start(struct sd *sd);
910c0d06caSMauro Carvalho Chehab int ov7660_stop(struct sd *sd);
920c0d06caSMauro Carvalho Chehab void ov7660_disconnect(struct sd *sd);
930c0d06caSMauro Carvalho Chehab 
940c0d06caSMauro Carvalho Chehab static const struct m5602_sensor ov7660 = {
950c0d06caSMauro Carvalho Chehab 	.name = "ov7660",
960c0d06caSMauro Carvalho Chehab 	.i2c_slave_id = 0x42,
970c0d06caSMauro Carvalho Chehab 	.i2c_regW = 1,
980c0d06caSMauro Carvalho Chehab 	.probe = ov7660_probe,
990c0d06caSMauro Carvalho Chehab 	.init = ov7660_init,
100c84e412fSHans de Goede 	.init_controls = ov7660_init_controls,
1010c0d06caSMauro Carvalho Chehab 	.start = ov7660_start,
1020c0d06caSMauro Carvalho Chehab 	.stop = ov7660_stop,
1030c0d06caSMauro Carvalho Chehab 	.disconnect = ov7660_disconnect,
1040c0d06caSMauro Carvalho Chehab };
1050c0d06caSMauro Carvalho Chehab #endif
106