brintos

brintos / linux-shallow public Read only

0
0
Text · 4.7 KiB · c105594 Raw
208 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * OmniVision OV96xx Camera Header File4 *5 * Copyright (C) 2009 Marek Vasut <marek.vasut@gmail.com>6 */7 8#ifndef	__DRIVERS_MEDIA_VIDEO_OV9640_H__9#define	__DRIVERS_MEDIA_VIDEO_OV9640_H__10 11/* Register definitions */12#define	OV9640_GAIN	0x0013#define	OV9640_BLUE	0x0114#define	OV9640_RED	0x0215#define	OV9640_VFER	0x0316#define	OV9640_COM1	0x0417#define	OV9640_BAVE	0x0518#define	OV9640_GEAVE	0x0619#define	OV9640_RSID	0x0720#define	OV9640_RAVE	0x0821#define	OV9640_COM2	0x0922#define	OV9640_PID	0x0a23#define	OV9640_VER	0x0b24#define	OV9640_COM3	0x0c25#define	OV9640_COM4	0x0d26#define	OV9640_COM5	0x0e27#define	OV9640_COM6	0x0f28#define	OV9640_AECH	0x1029#define	OV9640_CLKRC	0x1130#define	OV9640_COM7	0x1231#define	OV9640_COM8	0x1332#define	OV9640_COM9	0x1433#define	OV9640_COM10	0x1534/* 0x16 - RESERVED */35#define	OV9640_HSTART	0x1736#define	OV9640_HSTOP	0x1837#define	OV9640_VSTART	0x1938#define	OV9640_VSTOP	0x1a39#define	OV9640_PSHFT	0x1b40#define	OV9640_MIDH	0x1c41#define	OV9640_MIDL	0x1d42#define	OV9640_MVFP	0x1e43#define	OV9640_LAEC	0x1f44#define	OV9640_BOS	0x2045#define	OV9640_GBOS	0x2146#define	OV9640_GROS	0x2247#define	OV9640_ROS	0x2348#define	OV9640_AEW	0x2449#define	OV9640_AEB	0x2550#define	OV9640_VPT	0x2651#define	OV9640_BBIAS	0x2752#define	OV9640_GBBIAS	0x2853/* 0x29 - RESERVED */54#define	OV9640_EXHCH	0x2a55#define	OV9640_EXHCL	0x2b56#define	OV9640_RBIAS	0x2c57#define	OV9640_ADVFL	0x2d58#define	OV9640_ADVFH	0x2e59#define	OV9640_YAVE	0x2f60#define	OV9640_HSYST	0x3061#define	OV9640_HSYEN	0x3162#define	OV9640_HREF	0x3263#define	OV9640_CHLF	0x3364#define	OV9640_ARBLM	0x3465/* 0x35..0x36 - RESERVED */66#define	OV9640_ADC	0x3767#define	OV9640_ACOM	0x3868#define	OV9640_OFON	0x3969#define	OV9640_TSLB	0x3a70#define	OV9640_COM11	0x3b71#define	OV9640_COM12	0x3c72#define	OV9640_COM13	0x3d73#define	OV9640_COM14	0x3e74#define	OV9640_EDGE	0x3f75#define	OV9640_COM15	0x4076#define	OV9640_COM16	0x4177#define	OV9640_COM17	0x4278/* 0x43..0x4e - RESERVED */79#define	OV9640_MTX1	0x4f80#define	OV9640_MTX2	0x5081#define	OV9640_MTX3	0x5182#define	OV9640_MTX4	0x5283#define	OV9640_MTX5	0x5384#define	OV9640_MTX6	0x5485#define	OV9640_MTX7	0x5586#define	OV9640_MTX8	0x5687#define	OV9640_MTX9	0x5788#define	OV9640_MTXS	0x5889/* 0x59..0x61 - RESERVED */90#define	OV9640_LCC1	0x6291#define	OV9640_LCC2	0x6392#define	OV9640_LCC3	0x6493#define	OV9640_LCC4	0x6594#define	OV9640_LCC5	0x6695#define	OV9640_MANU	0x6796#define	OV9640_MANV	0x6897#define	OV9640_HV	0x6998#define	OV9640_MBD	0x6a99#define	OV9640_DBLV	0x6b100#define	OV9640_GSP	0x6c	/* ... till 0x7b */101#define	OV9640_GST	0x7c	/* ... till 0x8a */102 103#define	OV9640_CLKRC_DPLL_EN	0x80104#define	OV9640_CLKRC_DIRECT	0x40105#define	OV9640_CLKRC_DIV(x)	((x) & 0x3f)106 107#define	OV9640_PSHFT_VAL(x)	((x) & 0xff)108 109#define	OV9640_ACOM_2X_ANALOG	0x80110#define	OV9640_ACOM_RSVD	0x12111 112#define	OV9640_MVFP_V		0x10113#define	OV9640_MVFP_H		0x20114 115#define	OV9640_COM1_HREF_NOSKIP	0x00116#define	OV9640_COM1_HREF_2SKIP	0x04117#define	OV9640_COM1_HREF_3SKIP	0x08118#define	OV9640_COM1_QQFMT	0x20119 120#define	OV9640_COM2_SSM		0x10121 122#define	OV9640_COM3_VP		0x04123 124#define	OV9640_COM4_QQ_VP	0x80125#define	OV9640_COM4_RSVD	0x40126 127#define	OV9640_COM5_SYSCLK	0x80128#define	OV9640_COM5_LONGEXP	0x01129 130#define	OV9640_COM6_OPT_BLC	0x40131#define	OV9640_COM6_ADBLC_BIAS	0x08132#define	OV9640_COM6_FMT_RST	0x82133#define	OV9640_COM6_ADBLC_OPTEN	0x01134 135#define	OV9640_COM7_RAW_RGB	0x01136#define	OV9640_COM7_RGB		0x04137#define	OV9640_COM7_QCIF	0x08138#define	OV9640_COM7_QVGA	0x10139#define	OV9640_COM7_CIF		0x20140#define	OV9640_COM7_VGA		0x40141#define	OV9640_COM7_SCCB_RESET	0x80142 143#define	OV9640_TSLB_YVYU_YUYV	0x04144#define	OV9640_TSLB_YUYV_UYVY	0x08145 146#define	OV9640_COM12_YUV_AVG	0x04147#define	OV9640_COM12_RSVD	0x40148 149#define	OV9640_COM13_GAMMA_NONE	0x00150#define	OV9640_COM13_GAMMA_Y	0x40151#define	OV9640_COM13_GAMMA_RAW	0x80152#define	OV9640_COM13_RGB_AVG	0x20153#define	OV9640_COM13_MATRIX_EN	0x10154#define	OV9640_COM13_Y_DELAY_EN	0x08155#define	OV9640_COM13_YUV_DLY(x)	((x) & 0x07)156 157#define	OV9640_COM15_OR_00FF	0x00158#define	OV9640_COM15_OR_01FE	0x40159#define	OV9640_COM15_OR_10F0	0xc0160#define	OV9640_COM15_RGB_NORM	0x00161#define	OV9640_COM15_RGB_565	0x10162#define	OV9640_COM15_RGB_555	0x30163 164#define	OV9640_COM16_RB_AVG	0x01165 166/* IDs */167#define	OV9640_V2		0x9648168#define	OV9640_V3		0x9649169#define	VERSION(pid, ver)	(((pid) << 8) | ((ver) & 0xFF))170 171/* supported resolutions */172enum {173	W_QQCIF	= 88,174	W_QQVGA	= 160,175	W_QCIF	= 176,176	W_QVGA	= 320,177	W_CIF	= 352,178	W_VGA	= 640,179	W_SXGA	= 1280180};181#define	H_SXGA	960182 183/* Misc. structures */184struct ov9640_reg_alt {185	u8	com7;186	u8	com12;187	u8	com13;188	u8	com15;189};190 191struct ov9640_reg {192	u8	reg;193	u8	val;194};195 196struct ov9640_priv {197	struct v4l2_subdev		subdev;198	struct v4l2_ctrl_handler	hdl;199	struct clk			*clk;200	struct gpio_desc		*gpio_power;201	struct gpio_desc		*gpio_reset;202 203	int				model;204	int				revision;205};206 207#endif	/* __DRIVERS_MEDIA_VIDEO_OV9640_H__ */208