1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* GSPCA subdrivers for Genesys Logic webcams with the GL860 chip 3 * Subdriver declarations 4 * 5 * 2009/10/14 Olivier LORIN <o.lorin@laposte.net> 6 */ 7 #ifndef GL860_DEV_H 8 #define GL860_DEV_H 9 10 #include "gspca.h" 11 12 #define MODULE_NAME "gspca_gl860" 13 #define DRIVER_VERSION "0.9d10" 14 15 #define ctrl_in gl860_RTx 16 #define ctrl_out gl860_RTx 17 18 #define ID_MI1320 1 19 #define ID_OV2640 2 20 #define ID_OV9655 4 21 #define ID_MI2020 8 22 23 #define _MI1320_ (((struct sd *) gspca_dev)->sensor == ID_MI1320) 24 #define _MI2020_ (((struct sd *) gspca_dev)->sensor == ID_MI2020) 25 #define _OV2640_ (((struct sd *) gspca_dev)->sensor == ID_OV2640) 26 #define _OV9655_ (((struct sd *) gspca_dev)->sensor == ID_OV9655) 27 28 #define IMAGE_640 0 29 #define IMAGE_800 1 30 #define IMAGE_1280 2 31 #define IMAGE_1600 3 32 33 struct sd_gl860 { 34 u16 backlight; 35 u16 brightness; 36 u16 sharpness; 37 u16 contrast; 38 u16 gamma; 39 u16 hue; 40 u16 saturation; 41 u16 whitebal; 42 u8 mirror; 43 u8 flip; 44 u8 AC50Hz; 45 }; 46 47 /* Specific webcam descriptor */ 48 struct sd { 49 struct gspca_dev gspca_dev; /* !! must be the first item */ 50 51 struct sd_gl860 vcur; 52 struct sd_gl860 vold; 53 struct sd_gl860 vmax; 54 55 int (*dev_configure_alt) (struct gspca_dev *); 56 int (*dev_init_at_startup)(struct gspca_dev *); 57 int (*dev_init_pre_alt) (struct gspca_dev *); 58 void (*dev_post_unset_alt) (struct gspca_dev *); 59 int (*dev_camera_settings)(struct gspca_dev *); 60 61 u8 swapRB; 62 u8 mirrorMask; 63 u8 sensor; 64 s32 nbIm; 65 s32 nbRightUp; 66 u8 waitSet; 67 }; 68 69 struct validx { 70 u16 val; 71 u16 idx; 72 }; 73 74 struct idxdata { 75 u8 idx; 76 u8 data[3]; 77 }; 78 79 int fetch_validx(struct gspca_dev *gspca_dev, struct validx *tbl, int len); 80 int keep_on_fetching_validx(struct gspca_dev *gspca_dev, struct validx *tbl, 81 int len, int n); 82 void fetch_idxdata(struct gspca_dev *gspca_dev, struct idxdata *tbl, int len); 83 84 int gl860_RTx(struct gspca_dev *gspca_dev, 85 unsigned char pref, u32 req, u16 val, u16 index, 86 s32 len, void *pdata); 87 88 void mi1320_init_settings(struct gspca_dev *); 89 void ov2640_init_settings(struct gspca_dev *); 90 void ov9655_init_settings(struct gspca_dev *); 91 void mi2020_init_settings(struct gspca_dev *); 92 93 #endif 94