18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* GSPCA subdrivers for Genesys Logic webcams with the GL860 chip 38c2ecf20Sopenharmony_ci * Subdriver declarations 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * 2009/10/14 Olivier LORIN <o.lorin@laposte.net> 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci#ifndef GL860_DEV_H 88c2ecf20Sopenharmony_ci#define GL860_DEV_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include "gspca.h" 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#define MODULE_NAME "gspca_gl860" 138c2ecf20Sopenharmony_ci#define DRIVER_VERSION "0.9d10" 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#define ctrl_in gl860_RTx 168c2ecf20Sopenharmony_ci#define ctrl_out gl860_RTx 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#define ID_MI1320 1 198c2ecf20Sopenharmony_ci#define ID_OV2640 2 208c2ecf20Sopenharmony_ci#define ID_OV9655 4 218c2ecf20Sopenharmony_ci#define ID_MI2020 8 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci#define _MI1320_ (((struct sd *) gspca_dev)->sensor == ID_MI1320) 248c2ecf20Sopenharmony_ci#define _MI2020_ (((struct sd *) gspca_dev)->sensor == ID_MI2020) 258c2ecf20Sopenharmony_ci#define _OV2640_ (((struct sd *) gspca_dev)->sensor == ID_OV2640) 268c2ecf20Sopenharmony_ci#define _OV9655_ (((struct sd *) gspca_dev)->sensor == ID_OV9655) 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci#define IMAGE_640 0 298c2ecf20Sopenharmony_ci#define IMAGE_800 1 308c2ecf20Sopenharmony_ci#define IMAGE_1280 2 318c2ecf20Sopenharmony_ci#define IMAGE_1600 3 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_cistruct sd_gl860 { 348c2ecf20Sopenharmony_ci u16 backlight; 358c2ecf20Sopenharmony_ci u16 brightness; 368c2ecf20Sopenharmony_ci u16 sharpness; 378c2ecf20Sopenharmony_ci u16 contrast; 388c2ecf20Sopenharmony_ci u16 gamma; 398c2ecf20Sopenharmony_ci u16 hue; 408c2ecf20Sopenharmony_ci u16 saturation; 418c2ecf20Sopenharmony_ci u16 whitebal; 428c2ecf20Sopenharmony_ci u8 mirror; 438c2ecf20Sopenharmony_ci u8 flip; 448c2ecf20Sopenharmony_ci u8 AC50Hz; 458c2ecf20Sopenharmony_ci}; 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci/* Specific webcam descriptor */ 488c2ecf20Sopenharmony_cistruct sd { 498c2ecf20Sopenharmony_ci struct gspca_dev gspca_dev; /* !! must be the first item */ 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci struct sd_gl860 vcur; 528c2ecf20Sopenharmony_ci struct sd_gl860 vold; 538c2ecf20Sopenharmony_ci struct sd_gl860 vmax; 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci int (*dev_configure_alt) (struct gspca_dev *); 568c2ecf20Sopenharmony_ci int (*dev_init_at_startup)(struct gspca_dev *); 578c2ecf20Sopenharmony_ci int (*dev_init_pre_alt) (struct gspca_dev *); 588c2ecf20Sopenharmony_ci void (*dev_post_unset_alt) (struct gspca_dev *); 598c2ecf20Sopenharmony_ci int (*dev_camera_settings)(struct gspca_dev *); 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci u8 swapRB; 628c2ecf20Sopenharmony_ci u8 mirrorMask; 638c2ecf20Sopenharmony_ci u8 sensor; 648c2ecf20Sopenharmony_ci s32 nbIm; 658c2ecf20Sopenharmony_ci s32 nbRightUp; 668c2ecf20Sopenharmony_ci u8 waitSet; 678c2ecf20Sopenharmony_ci}; 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_cistruct validx { 708c2ecf20Sopenharmony_ci u16 val; 718c2ecf20Sopenharmony_ci u16 idx; 728c2ecf20Sopenharmony_ci}; 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_cistruct idxdata { 758c2ecf20Sopenharmony_ci u8 idx; 768c2ecf20Sopenharmony_ci u8 data[3]; 778c2ecf20Sopenharmony_ci}; 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ciint fetch_validx(struct gspca_dev *gspca_dev, struct validx *tbl, int len); 808c2ecf20Sopenharmony_ciint keep_on_fetching_validx(struct gspca_dev *gspca_dev, struct validx *tbl, 818c2ecf20Sopenharmony_ci int len, int n); 828c2ecf20Sopenharmony_civoid fetch_idxdata(struct gspca_dev *gspca_dev, struct idxdata *tbl, int len); 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_ciint gl860_RTx(struct gspca_dev *gspca_dev, 858c2ecf20Sopenharmony_ci unsigned char pref, u32 req, u16 val, u16 index, 868c2ecf20Sopenharmony_ci s32 len, void *pdata); 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_civoid mi1320_init_settings(struct gspca_dev *); 898c2ecf20Sopenharmony_civoid ov2640_init_settings(struct gspca_dev *); 908c2ecf20Sopenharmony_civoid ov9655_init_settings(struct gspca_dev *); 918c2ecf20Sopenharmony_civoid mi2020_init_settings(struct gspca_dev *); 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci#endif 94