| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* OmniVision* camera chip driver API | 
|  | 2 | * | 
|  | 3 | * Copyright (c) 1999-2004 Mark McClelland | 
|  | 4 | * | 
|  | 5 | * This program is free software; you can redistribute it and/or modify it | 
|  | 6 | * under the terms of the GNU General Public License as published by the | 
|  | 7 | * Free Software Foundation; either version 2 of the License, or (at your | 
|  | 8 | * option) any later version. NO WARRANTY OF ANY KIND is expressed or implied. | 
|  | 9 | * | 
|  | 10 | * * OmniVision is a trademark of OmniVision Technologies, Inc. This driver | 
|  | 11 | * is not sponsored or developed by them. | 
|  | 12 | */ | 
|  | 13 |  | 
|  | 14 | #ifndef __LINUX_OVCAMCHIP_H | 
|  | 15 | #define __LINUX_OVCAMCHIP_H | 
|  | 16 |  | 
|  | 17 | #include <linux/videodev.h> | 
| Mauro Carvalho Chehab | 5e87efa | 2006-06-05 10:26:32 -0300 | [diff] [blame] | 18 | #include <media/v4l2-common.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 19 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 20 | /* --------------------------------- */ | 
|  | 21 | /*           ENUMERATIONS            */ | 
|  | 22 | /* --------------------------------- */ | 
|  | 23 |  | 
|  | 24 | /* Controls */ | 
|  | 25 | enum { | 
|  | 26 | OVCAMCHIP_CID_CONT,		/* Contrast */ | 
|  | 27 | OVCAMCHIP_CID_BRIGHT,		/* Brightness */ | 
|  | 28 | OVCAMCHIP_CID_SAT,		/* Saturation */ | 
|  | 29 | OVCAMCHIP_CID_HUE,		/* Hue */ | 
|  | 30 | OVCAMCHIP_CID_EXP,		/* Exposure */ | 
|  | 31 | OVCAMCHIP_CID_FREQ,		/* Light frequency */ | 
|  | 32 | OVCAMCHIP_CID_BANDFILT,		/* Banding filter */ | 
|  | 33 | OVCAMCHIP_CID_AUTOBRIGHT,	/* Auto brightness */ | 
|  | 34 | OVCAMCHIP_CID_AUTOEXP,		/* Auto exposure */ | 
|  | 35 | OVCAMCHIP_CID_BACKLIGHT,	/* Back light compensation */ | 
|  | 36 | OVCAMCHIP_CID_MIRROR,		/* Mirror horizontally */ | 
|  | 37 | }; | 
|  | 38 |  | 
|  | 39 | /* Chip types */ | 
|  | 40 | #define NUM_CC_TYPES	9 | 
|  | 41 | enum { | 
|  | 42 | CC_UNKNOWN, | 
|  | 43 | CC_OV76BE, | 
|  | 44 | CC_OV7610, | 
|  | 45 | CC_OV7620, | 
|  | 46 | CC_OV7620AE, | 
|  | 47 | CC_OV6620, | 
|  | 48 | CC_OV6630, | 
|  | 49 | CC_OV6630AE, | 
|  | 50 | CC_OV6630AF, | 
|  | 51 | }; | 
|  | 52 |  | 
|  | 53 | /* --------------------------------- */ | 
|  | 54 | /*           I2C ADDRESSES           */ | 
|  | 55 | /* --------------------------------- */ | 
|  | 56 |  | 
|  | 57 | #define OV7xx0_SID   (0x42 >> 1) | 
|  | 58 | #define OV6xx0_SID   (0xC0 >> 1) | 
|  | 59 |  | 
|  | 60 | /* --------------------------------- */ | 
|  | 61 | /*                API                */ | 
|  | 62 | /* --------------------------------- */ | 
|  | 63 |  | 
|  | 64 | struct ovcamchip_control { | 
|  | 65 | __u32 id; | 
|  | 66 | __s32 value; | 
|  | 67 | }; | 
|  | 68 |  | 
|  | 69 | struct ovcamchip_window { | 
|  | 70 | int x; | 
|  | 71 | int y; | 
|  | 72 | int width; | 
|  | 73 | int height; | 
|  | 74 | int format; | 
|  | 75 | int quarter;		/* Scale width and height down 2x */ | 
|  | 76 |  | 
|  | 77 | /* This stuff will be removed eventually */ | 
|  | 78 | int clockdiv;		/* Clock divisor setting */ | 
|  | 79 | }; | 
|  | 80 |  | 
|  | 81 | /* Commands */ | 
|  | 82 | #define OVCAMCHIP_CMD_Q_SUBTYPE     _IOR  (0x88, 0x00, int) | 
|  | 83 | #define OVCAMCHIP_CMD_INITIALIZE    _IOW  (0x88, 0x01, int) | 
|  | 84 | /* You must call OVCAMCHIP_CMD_INITIALIZE before any of commands below! */ | 
|  | 85 | #define OVCAMCHIP_CMD_S_CTRL        _IOW  (0x88, 0x02, struct ovcamchip_control) | 
|  | 86 | #define OVCAMCHIP_CMD_G_CTRL        _IOWR (0x88, 0x03, struct ovcamchip_control) | 
|  | 87 | #define OVCAMCHIP_CMD_S_MODE        _IOW  (0x88, 0x04, struct ovcamchip_window) | 
|  | 88 | #define OVCAMCHIP_MAX_CMD           _IO   (0x88, 0x3f) | 
|  | 89 |  | 
|  | 90 | #endif |