/* GSPCA subdrivers for Genesys Logic webcams with the GL860 chip * Subdriver declarations * * 2009/10/14 Olivier LORIN <o.lorin@laposte.net> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #ifndef GL860_DEV_H #define GL860_DEV_H #include "gspca.h" #define MODULE_NAME "gspca_gl860" #define DRIVER_VERSION "0.9d10" #define ctrl_in gl860_RTx #define ctrl_out gl860_RTx #define ID_MI1320 1 #define ID_OV2640 2 #define ID_OV9655 4 #define ID_MI2020 8 #define _MI1320_ (((struct sd *) gspca_dev)->sensor == ID_MI1320) #define _MI2020_ (((struct sd *) gspca_dev)->sensor == ID_MI2020) #define _OV2640_ (((struct sd *) gspca_dev)->sensor == ID_OV2640) #define _OV9655_ (((struct sd *) gspca_dev)->sensor == ID_OV9655) #define IMAGE_640 0 #define IMAGE_800 1 #define IMAGE_1280 2 #define IMAGE_1600 3 struct sd_gl860 { u16 backlight; u16 brightness; u16 sharpness; u16 contrast; u16 gamma; u16 hue; u16 saturation; u16 whitebal; u8 mirror; u8 flip; u8 AC50Hz; }; /* Specific webcam descriptor */ struct sd { struct gspca_dev gspca_dev; /* !! must be the first item */ struct sd_gl860 vcur; struct sd_gl860 vold; struct sd_gl860 vmax; int (*dev_configure_alt) (struct gspca_dev *); int (*dev_init_at_startup)(struct gspca_dev *); int (*dev_init_pre_alt) (struct gspca_dev *); void (*dev_post_unset_alt) (struct gspca_dev *); int (*dev_camera_settings)(struct gspca_dev *); u8 swapRB; u8 mirrorMask; u8 sensor; s32 nbIm; s32 nbRightUp; u8 waitSet; }; struct validx { u16 val; u16 idx; }; struct idxdata { u8 idx; u8 data[3]; }; int fetch_validx(struct gspca_dev *gspca_dev, struct validx *tbl, int len); int keep_on_fetching_validx(struct gspca_dev *gspca_dev, struct validx *tbl, int len, int n); void fetch_idxdata(struct gspca_dev *gspca_dev, struct idxdata *tbl, int len); int gl860_RTx(struct gspca_dev *gspca_dev, unsigned char pref, u32 req, u16 val, u16 index, s32 len, void *pdata); void mi1320_init_settings(struct gspca_dev *); void ov2640_init_settings(struct gspca_dev *); void ov9655_init_settings(struct gspca_dev *); void mi2020_init_settings(struct gspca_dev *); #endif