linux/drivers/media/i2c/et8ek8/et8ek8_reg.h
<<
>>
Prefs
   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
  19struct v4l2_mbus_framefmt;
  20struct v4l2_subdev_pad_mbus_code_enum;
  21
  22struct 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
  51struct 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
  72struct et8ek8_reglist {
  73        u32 type;
  74        struct et8ek8_mode mode;
  75        struct et8ek8_reg regs[];
  76};
  77
  78#define ET8EK8_MAX_LEN                  32
  79struct et8ek8_meta_reglist {
  80        char version[ET8EK8_MAX_LEN];
  81        union {
  82                struct et8ek8_reglist *ptr;
  83        } reglist[];
  84};
  85
  86extern struct et8ek8_meta_reglist meta_reglist;
  87
  88#endif /* ET8EK8REGS */
  89