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