Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /* GSPCA subdrivers for Genesys Logic webcams with the GL860 chip
0003  * Subdriver declarations
0004  *
0005  * 2009/10/14 Olivier LORIN <o.lorin@laposte.net>
0006  */
0007 #ifndef GL860_DEV_H
0008 #define GL860_DEV_H
0009 
0010 #include "gspca.h"
0011 
0012 #define MODULE_NAME "gspca_gl860"
0013 #define DRIVER_VERSION "0.9d10"
0014 
0015 #define ctrl_in  gl860_RTx
0016 #define ctrl_out gl860_RTx
0017 
0018 #define ID_MI1320   1
0019 #define ID_OV2640   2
0020 #define ID_OV9655   4
0021 #define ID_MI2020   8
0022 
0023 #define _MI1320_  (((struct sd *) gspca_dev)->sensor == ID_MI1320)
0024 #define _MI2020_  (((struct sd *) gspca_dev)->sensor == ID_MI2020)
0025 #define _OV2640_  (((struct sd *) gspca_dev)->sensor == ID_OV2640)
0026 #define _OV9655_  (((struct sd *) gspca_dev)->sensor == ID_OV9655)
0027 
0028 #define IMAGE_640   0
0029 #define IMAGE_800   1
0030 #define IMAGE_1280  2
0031 #define IMAGE_1600  3
0032 
0033 struct sd_gl860 {
0034     u16 backlight;
0035     u16 brightness;
0036     u16 sharpness;
0037     u16 contrast;
0038     u16 gamma;
0039     u16 hue;
0040     u16 saturation;
0041     u16 whitebal;
0042     u8  mirror;
0043     u8  flip;
0044     u8  AC50Hz;
0045 };
0046 
0047 /* Specific webcam descriptor */
0048 struct sd {
0049     struct gspca_dev gspca_dev; /* !! must be the first item */
0050 
0051     struct sd_gl860 vcur;
0052     struct sd_gl860 vold;
0053     struct sd_gl860 vmax;
0054 
0055     int  (*dev_configure_alt)  (struct gspca_dev *);
0056     int  (*dev_init_at_startup)(struct gspca_dev *);
0057     int  (*dev_init_pre_alt)   (struct gspca_dev *);
0058     void (*dev_post_unset_alt) (struct gspca_dev *);
0059     int  (*dev_camera_settings)(struct gspca_dev *);
0060 
0061     u8   swapRB;
0062     u8   mirrorMask;
0063     u8   sensor;
0064     s32  nbIm;
0065     s32  nbRightUp;
0066     u8   waitSet;
0067 };
0068 
0069 struct validx {
0070     u16 val;
0071     u16 idx;
0072 };
0073 
0074 struct idxdata {
0075     u8 idx;
0076     u8 data[3];
0077 };
0078 
0079 int fetch_validx(struct gspca_dev *gspca_dev, struct validx *tbl, int len);
0080 int keep_on_fetching_validx(struct gspca_dev *gspca_dev, struct validx *tbl,
0081                 int len, int n);
0082 void fetch_idxdata(struct gspca_dev *gspca_dev, struct idxdata *tbl, int len);
0083 
0084 int gl860_RTx(struct gspca_dev *gspca_dev,
0085             unsigned char pref, u32 req, u16 val, u16 index,
0086             s32 len, void *pdata);
0087 
0088 void mi1320_init_settings(struct gspca_dev *);
0089 void ov2640_init_settings(struct gspca_dev *);
0090 void ov9655_init_settings(struct gspca_dev *);
0091 void mi2020_init_settings(struct gspca_dev *);
0092 
0093 #endif