1 /* OmniVision* camera chip driver private definitions for core code and
4 * Copyright (c) 1999-2004 Mark McClelland
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.
11 * * OmniVision is a trademark of OmniVision Technologies, Inc. This driver
12 * is not sponsored or developed by them.
15 #ifndef __LINUX_OVCAMCHIP_PRIV_H
16 #define __LINUX_OVCAMCHIP_PRIV_H
18 #include <linux/i2c.h>
19 #include <media/ovcamchip.h>
22 extern int ovcamchip_debug
;
25 #define PDEBUG(level, fmt, args...) \
26 if (ovcamchip_debug >= (level)) pr_debug("[%s:%d] " fmt "\n", \
27 __FUNCTION__, __LINE__ , ## args)
29 #define DDEBUG(level, dev, fmt, args...) \
30 if (ovcamchip_debug >= (level)) dev_dbg(dev, "[%s:%d] " fmt "\n", \
31 __FUNCTION__, __LINE__ , ## args)
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
37 struct ovcamchip_regvals
{
42 struct ovcamchip_ops
{
43 int (*init
)(struct i2c_client
*);
44 int (*free
)(struct i2c_client
*);
45 int (*command
)(struct i2c_client
*, unsigned int, void *);
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 */
56 /* --------------------------------- */
58 /* --------------------------------- */
60 static inline int ov_read(struct i2c_client
*c
, unsigned char reg
,
65 rc
= i2c_smbus_read_byte_data(c
, reg
);
66 *value
= (unsigned char) rc
;
70 static inline int ov_write(struct i2c_client
*c
, unsigned char reg
,
73 return i2c_smbus_write_byte_data(c
, reg
, value
);
76 /* --------------------------------- */
77 /* FUNCTION PROTOTYPES */
78 /* --------------------------------- */
80 /* Functions in ovcamchip_core.c */
82 extern int ov_write_regvals(struct i2c_client
*c
,
83 struct ovcamchip_regvals
*rvals
);
85 extern int ov_write_mask(struct i2c_client
*c
, unsigned char reg
,
86 unsigned char value
, unsigned char mask
);