Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  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/v4l2-subdev.h>
 20 #include <media/ovcamchip.h>
 21 
 22 #ifdef DEBUG
 23 extern int ovcamchip_debug;
 24 #endif
 25 
 26 #define PDEBUG(level, fmt, args...) \
 27         if (ovcamchip_debug >= (level)) pr_debug("[%s:%d] " fmt "\n", \
 28                 __func__, __LINE__ , ## args)
 29 
 30 #define DDEBUG(level, dev, fmt, args...) \
 31         if (ovcamchip_debug >= (level)) dev_dbg(dev, "[%s:%d] " fmt "\n", \
 32                 __func__, __LINE__ , ## args)
 33 
 34 /* Number of times to retry chip detection. Increase this if you are getting
 35  * "Failed to init camera chip" */
 36 #define I2C_DETECT_RETRIES      10
 37 
 38 struct ovcamchip_regvals {
 39         unsigned char reg;
 40         unsigned char val;
 41 };
 42 
 43 struct ovcamchip_ops {
 44         int (*init)(struct i2c_client *);
 45         int (*free)(struct i2c_client *);
 46         int (*command)(struct i2c_client *, unsigned int, void *);
 47 };
 48 
 49 struct ovcamchip {
 50         struct v4l2_subdev sd;
 51         struct ovcamchip_ops *sops;
 52         void *spriv;               /* Private data for OV7x10.c etc... */
 53         int subtype;               /* = SEN_OV7610 etc... */
 54         int mono;                  /* Monochrome chip? (invalid until init) */
 55         int initialized;           /* OVCAMCHIP_CMD_INITIALIZE was successful */
 56 };
 57 
 58 static inline struct ovcamchip *to_ovcamchip(struct v4l2_subdev *sd)
 59 {
 60         return container_of(sd, struct ovcamchip, sd);
 61 }
 62 
 63 extern struct ovcamchip_ops ov6x20_ops;
 64 extern struct ovcamchip_ops ov6x30_ops;
 65 extern struct ovcamchip_ops ov7x10_ops;
 66 extern struct ovcamchip_ops ov7x20_ops;
 67 extern struct ovcamchip_ops ov76be_ops;
 68 
 69 /* --------------------------------- */
 70 /*              I2C I/O              */
 71 /* --------------------------------- */
 72 
 73 static inline int ov_read(struct i2c_client *c, unsigned char reg,
 74                           unsigned char *value)
 75 {
 76         int rc;
 77 
 78         rc = i2c_smbus_read_byte_data(c, reg);
 79         *value = (unsigned char) rc;
 80         return rc;
 81 }
 82 
 83 static inline int ov_write(struct i2c_client *c, unsigned char reg,
 84                            unsigned char value )
 85 {
 86         return i2c_smbus_write_byte_data(c, reg, value);
 87 }
 88 
 89 /* --------------------------------- */
 90 /*        FUNCTION PROTOTYPES        */
 91 /* --------------------------------- */
 92 
 93 /* Functions in ovcamchip_core.c */
 94 
 95 extern int ov_write_regvals(struct i2c_client *c,
 96                             struct ovcamchip_regvals *rvals);
 97 
 98 extern int ov_write_mask(struct i2c_client *c, unsigned char reg,
 99                          unsigned char value, unsigned char mask);
100 
101 #endif
102 
  This page was automatically generated by the LXR engine.