root/drivers/media/i2c/et8ek8/et8ek8_reg.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * et8ek8_reg.h
   4  *
   5  * Copyright (C) 2008 Nokia Corporation
   6  *
   7  * Contact: Sakari Ailus <sakari.ailus@iki.fi>
   8  *          Tuukka Toivonen <tuukkat76@gmail.com>
   9  */
  10 
  11 #ifndef ET8EK8REGS_H
  12 #define ET8EK8REGS_H
  13 
  14 #include <linux/i2c.h>
  15 #include <linux/types.h>
  16 #include <linux/videodev2.h>
  17 #include <linux/v4l2-subdev.h>
  18 
  19 struct v4l2_mbus_framefmt;
  20 struct v4l2_subdev_pad_mbus_code_enum;
  21 
  22 struct et8ek8_mode {
  23         /* Physical sensor resolution and current image window */
  24         u16 sensor_width;
  25         u16 sensor_height;
  26         u16 sensor_window_origin_x;
  27         u16 sensor_window_origin_y;
  28         u16 sensor_window_width;
  29         u16 sensor_window_height;
  30 
  31         /* Image data coming from sensor (after scaling) */
  32         u16 width;
  33         u16 height;
  34         u16 window_origin_x;
  35         u16 window_origin_y;
  36         u16 window_width;
  37         u16 window_height;
  38 
  39         u32 pixel_clock;                /* in Hz */
  40         u32 ext_clock;                  /* in Hz */
  41         struct v4l2_fract timeperframe;
  42         u32 max_exp;                    /* Maximum exposure value */
  43         u32 bus_format;                 /* MEDIA_BUS_FMT_ */
  44         u32 sensitivity;                /* 16.16 fixed point */
  45 };
  46 
  47 #define ET8EK8_REG_8BIT                 1
  48 #define ET8EK8_REG_16BIT                2
  49 #define ET8EK8_REG_DELAY                100
  50 #define ET8EK8_REG_TERM                 0xff
  51 struct et8ek8_reg {
  52         u16 type;
  53         u16 reg;                        /* 16-bit offset */
  54         u32 val;                        /* 8/16/32-bit value */
  55 };
  56 
  57 /* Possible struct smia_reglist types. */
  58 #define ET8EK8_REGLIST_STANDBY          0
  59 #define ET8EK8_REGLIST_POWERON          1
  60 #define ET8EK8_REGLIST_RESUME           2
  61 #define ET8EK8_REGLIST_STREAMON         3
  62 #define ET8EK8_REGLIST_STREAMOFF        4
  63 #define ET8EK8_REGLIST_DISABLED         5
  64 
  65 #define ET8EK8_REGLIST_MODE             10
  66 
  67 #define ET8EK8_REGLIST_LSC_ENABLE       100
  68 #define ET8EK8_REGLIST_LSC_DISABLE      101
  69 #define ET8EK8_REGLIST_ANR_ENABLE       102
  70 #define ET8EK8_REGLIST_ANR_DISABLE      103
  71 
  72 struct et8ek8_reglist {
  73         u32 type;
  74         struct et8ek8_mode mode;
  75         struct et8ek8_reg regs[];
  76 };
  77 
  78 #define ET8EK8_MAX_LEN                  32
  79 struct et8ek8_meta_reglist {
  80         char version[ET8EK8_MAX_LEN];
  81         union {
  82                 struct et8ek8_reglist *ptr;
  83         } reglist[];
  84 };
  85 
  86 extern struct et8ek8_meta_reglist meta_reglist;
  87 
  88 #endif /* ET8EK8REGS */

/* [<][>][^][v][top][bottom][index][help] */