gl860.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 <[email protected]>
  6. */
  7. #ifndef GL860_DEV_H
  8. #define GL860_DEV_H
  9. #include "gspca.h"
  10. #define MODULE_NAME "gspca_gl860"
  11. #define DRIVER_VERSION "0.9d10"
  12. #define ctrl_in gl860_RTx
  13. #define ctrl_out gl860_RTx
  14. #define ID_MI1320 1
  15. #define ID_OV2640 2
  16. #define ID_OV9655 4
  17. #define ID_MI2020 8
  18. #define _MI1320_ (((struct sd *) gspca_dev)->sensor == ID_MI1320)
  19. #define _MI2020_ (((struct sd *) gspca_dev)->sensor == ID_MI2020)
  20. #define _OV2640_ (((struct sd *) gspca_dev)->sensor == ID_OV2640)
  21. #define _OV9655_ (((struct sd *) gspca_dev)->sensor == ID_OV9655)
  22. #define IMAGE_640 0
  23. #define IMAGE_800 1
  24. #define IMAGE_1280 2
  25. #define IMAGE_1600 3
  26. struct sd_gl860 {
  27. u16 backlight;
  28. u16 brightness;
  29. u16 sharpness;
  30. u16 contrast;
  31. u16 gamma;
  32. u16 hue;
  33. u16 saturation;
  34. u16 whitebal;
  35. u8 mirror;
  36. u8 flip;
  37. u8 AC50Hz;
  38. };
  39. /* Specific webcam descriptor */
  40. struct sd {
  41. struct gspca_dev gspca_dev; /* !! must be the first item */
  42. struct sd_gl860 vcur;
  43. struct sd_gl860 vold;
  44. struct sd_gl860 vmax;
  45. int (*dev_configure_alt) (struct gspca_dev *);
  46. int (*dev_init_at_startup)(struct gspca_dev *);
  47. int (*dev_init_pre_alt) (struct gspca_dev *);
  48. void (*dev_post_unset_alt) (struct gspca_dev *);
  49. int (*dev_camera_settings)(struct gspca_dev *);
  50. u8 swapRB;
  51. u8 mirrorMask;
  52. u8 sensor;
  53. s32 nbIm;
  54. s32 nbRightUp;
  55. u8 waitSet;
  56. };
  57. struct validx {
  58. u16 val;
  59. u16 idx;
  60. };
  61. struct idxdata {
  62. u8 idx;
  63. u8 data[3];
  64. };
  65. int fetch_validx(struct gspca_dev *gspca_dev, struct validx *tbl, int len);
  66. int keep_on_fetching_validx(struct gspca_dev *gspca_dev, struct validx *tbl,
  67. int len, int n);
  68. void fetch_idxdata(struct gspca_dev *gspca_dev, struct idxdata *tbl, int len);
  69. int gl860_RTx(struct gspca_dev *gspca_dev,
  70. unsigned char pref, u32 req, u16 val, u16 index,
  71. s32 len, void *pdata);
  72. void mi1320_init_settings(struct gspca_dev *);
  73. void ov2640_init_settings(struct gspca_dev *);
  74. void ov9655_init_settings(struct gspca_dev *);
  75. void mi2020_init_settings(struct gspca_dev *);
  76. #endif