• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/drivers/media/video/ovcamchip/
1/* OmniVision* camera chip driver private definitions for core code and
2 * chip-specific code
3 *
4 * Copyright (c) 1999-2004 Mark McClelland
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version. NO WARRANTY OF ANY KIND is expressed or implied.
10 *
11 * * OmniVision is a trademark of OmniVision Technologies, Inc. This driver
12 * is not sponsored or developed by them.
13 */
14
15#ifndef __LINUX_OVCAMCHIP_PRIV_H
16#define __LINUX_OVCAMCHIP_PRIV_H
17
18#include <linux/i2c.h>
19#include <media/ovcamchip.h>
20
21#ifdef DEBUG
22extern int ovcamchip_debug;
23#endif
24
25#define PDEBUG(level, fmt, args...) \
26	if (ovcamchip_debug >= (level))	pr_debug("[%s:%d] " fmt "\n", \
27		__FUNCTION__, __LINE__ , ## args)
28
29#define DDEBUG(level, dev, fmt, args...) \
30	if (ovcamchip_debug >= (level))	dev_dbg(dev, "[%s:%d] " fmt "\n", \
31		__FUNCTION__, __LINE__ , ## args)
32
33/* Number of times to retry chip detection. Increase this if you are getting
34 * "Failed to init camera chip" */
35#define I2C_DETECT_RETRIES	10
36
37struct ovcamchip_regvals {
38	unsigned char reg;
39	unsigned char val;
40};
41
42struct ovcamchip_ops {
43	int (*init)(struct i2c_client *);
44	int (*free)(struct i2c_client *);
45	int (*command)(struct i2c_client *, unsigned int, void *);
46};
47
48struct ovcamchip {
49	struct ovcamchip_ops *sops;
50	void *spriv;               /* Private data for OV7x10.c etc... */
51	int subtype;               /* = SEN_OV7610 etc... */
52	int mono;                  /* Monochrome chip? (invalid until init) */
53	int initialized;           /* OVCAMCHIP_CMD_INITIALIZE was successful */
54};
55
56/* --------------------------------- */
57/*              I2C I/O              */
58/* --------------------------------- */
59
60static inline int ov_read(struct i2c_client *c, unsigned char reg,
61			  unsigned char *value)
62{
63	int rc;
64
65	rc = i2c_smbus_read_byte_data(c, reg);
66	*value = (unsigned char) rc;
67	return rc;
68}
69
70static inline int ov_write(struct i2c_client *c, unsigned char reg,
71			   unsigned char value )
72{
73	return i2c_smbus_write_byte_data(c, reg, value);
74}
75
76/* --------------------------------- */
77/*        FUNCTION PROTOTYPES        */
78/* --------------------------------- */
79
80/* Functions in ovcamchip_core.c */
81
82extern int ov_write_regvals(struct i2c_client *c,
83			    struct ovcamchip_regvals *rvals);
84
85extern int ov_write_mask(struct i2c_client *c, unsigned char reg,
86			 unsigned char value, unsigned char mask);
87
88#endif
89