os/linux-2.6-tag--devboard-R2_10-4/arch/cris/arch-v32/drivers/elphel/cc3x3.h

Go to the documentation of this file.
00001 /*
00002  cc313.h
00003  */
00004 #ifndef _313CAM_H
00005 #define _313CAM_H
00006 //#define MD(x) printk("%s:%d:",__FILE__,__LINE__);x
00007 #define MD(x)
00008 
00009 // Defines for revA/M camera
00010 // Defines for both revisions
00011 /*static unsigned long ccam_cr_shadow=0;*/
00012 #define X313_SETFIELD(x,y) ccamCRAndOr(~(((1 << X313__##x##__WIDTH)-1)  << X313__##x##__BITNM) ,\
00013  (((y) & ((1 << X313__##x##__WIDTH)-1)) << X313__##x##__BITNM) )
00014 
00015 
00016 #endif
00017 
00018 
00019 extern struct autoexp_t * autoexp_state;
00020 extern struct autoexp_t * autoexp_set;
00021 extern struct aexp_window_t * aexp_window;
00022 extern struct aexp_window_t * aexp_window_set;
00023 
00024 void init_autoexp_struct(void);
00025 
00026 
00027 
00028 int           get_sensor_i2c_regs16(int n);
00029 unsigned char get_sensor_i2c_regs(int n);
00030 unsigned long get_imageParamsR   (int n);
00031 unsigned long get_imageParamsW   (int n);
00032 unsigned char get_sensor_i2c_addr(void);
00033 void set_sensor_i2c_regs(int n, unsigned char d);
00034 void set_imageParamsR   (int n, unsigned long d);
00035 void set_imageParamsW   (int n, unsigned long d);
00036 void set_sensor_i2c_addr(       unsigned char d);
00037 
00038 void ccamCRAnd(unsigned long d);
00039 void ccamCROr(unsigned long d);
00040 void ccamCRXor(unsigned long d);
00041 void ccamCRAndOr(unsigned long d_and, unsigned long d_or);
00042 unsigned long ccamGetCR(void);
00043 
00044 void writeSensorDefaults(unsigned long * data, int count);
00045 // readSensorReg and writeSensorReg hacked to accomodate KAC5000 "hidden" registers - the same address can point to multiple registers,
00046 // such as color gains. Now ra will be unsigned int, if > 255 the high word will point to shadow array index (up to 511),
00047 // else - array index is the same as ra
00048 int writeSensorReg(unsigned int ra, unsigned char rd, int uncond);
00049 int readSensorReg(unsigned int ra, int mode); //  mode=0 - shadow, 1 - actual register
00050 #if 0
00051 int writeSensorReg(unsigned char ra, unsigned char rd, int uncond);
00052 int readSensorReg(unsigned char ra, int mode); //  mode=0 - shadow, 1 - actual register
00053 #endif
00054 // 16-bit access for Micron sensor (MI1300) 16-bit registers
00055 // For shadows use a pair of unsigned char elements (MSB first)
00056 
00057 int readSensorReg16(unsigned char ra, int mode); //  mode=0 - shadow, 1 - actual register
00058 int writeSensorReg16(unsigned char ra, int rd, int uncond); // returns -1 (error) , 1 - set, 0 - did not have to change
00059 
00060 // for FillFactory sensor
00061 int writeSensorRegFF(unsigned char ra, int rd, int uncond); // returns -1 (error) , 1 - set, 0 - did not have to change
00062 
00063 void camSeqStop(void);
00064 /*
00065 len <0, nfr>0 - acquire nfr frames, no length restrictions
00066 len =0, nfr>0 - acquire nfr frames, unchanged length restriction
00067 len >0, nfr>0 - acquire nfr frames, set new length restriction
00068 len >0, nfr <0 - acquire unlimited number of frames, only total length restriction
00069 len >0, nfr =0 - do not change number of frames to acquire, update total length restriction
00070 len =0, nfr =0 - reread from memory (if was off).
00071 */
00072 int camSeqStartClip(int nfr, int len);
00073 int  camSeqGetJPEG_wp(void);
00074 int  camSeqGetJPEG_rp(void);
00075 void camSeqSetJPEG_rp(int p);
00076 
00077 int program_sensor_exposition(void);
00078 int program_sensor_exposition_just(void);
00079 void  program_trigger(void);
00080 void  program_i2c(void);
00081 void  program_smart_irq(void);
00082 void  program_early_timestamp(void);
00083 
00084 void exposition_unlock(void);
00085 void dumpFrameParams(struct frame_params_t * fp, const char * title); // just for debugging
00086 
00087 
00088 // #define ccam_window_valid  imageParamsR[P_DMA_VALID] /* window parameters valid                  */
00089 //#define ccam_window_width  imageParamsR[P_ACTUAL_WIDTH]       /* pixels/row                               */
00090 // #define ccam_window_height imageParamsR[P_ACTUAL_HEIGHT]     /* pixels/column                            */
00091 //#define ccamLongsPerRow    imageParamsR[P_LPR]        /* 32-bit words per row (aligned each row)  */
00092 //#define ccamImgSize        imageParamsR[P_IMAGE_SIZE] /* total image size (dma data) in bytes     */
00093 
00094 // used in cc353.c cc333.c, mt9x001.c 
00095 #ifdef CONFIG_ETRAX_ELPHEL353
00096  #define X313_MARGINS 4
00097  #define X313_TILEHOR 16
00098  #define X313_TILEVERT 16
00099 #endif
00100 
00101 #ifdef CONFIG_ETRAX_333
00102  #define X313_MARGINS 4
00103  #define X313_TILEHOR 16
00104  #define X313_TILEVERT 16
00105 #endif
00106 #ifdef CONFIG_ETRAX_323
00107  #define X313_MARGINS 2
00108  #define X313_TILEHOR 16
00109  #define X313_TILEVERT 16
00110 #endif
00111 #ifdef CONFIG_ETRAX_313
00112  #define X313_MARGINS 2
00113  #define X313_TILEHOR 16
00114  #define X313_TILEVERT 16
00115 #endif
00116 #define X313_TIMESTAMPLEN 28
00117 
00118 //#define JPEG_HEADER_SIZE    0x26f

Generated on Thu Aug 7 16:18:59 2008 for elphel by  doxygen 1.5.1