162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * et8ek8_reg.h 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2008 Nokia Corporation 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Contact: Sakari Ailus <sakari.ailus@iki.fi> 862306a36Sopenharmony_ci * Tuukka Toivonen <tuukkat76@gmail.com> 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#ifndef ET8EK8REGS_H 1262306a36Sopenharmony_ci#define ET8EK8REGS_H 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include <linux/i2c.h> 1562306a36Sopenharmony_ci#include <linux/types.h> 1662306a36Sopenharmony_ci#include <linux/videodev2.h> 1762306a36Sopenharmony_ci#include <linux/v4l2-subdev.h> 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_cistruct v4l2_mbus_framefmt; 2062306a36Sopenharmony_cistruct v4l2_subdev_pad_mbus_code_enum; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_cistruct et8ek8_mode { 2362306a36Sopenharmony_ci /* Physical sensor resolution and current image window */ 2462306a36Sopenharmony_ci u16 sensor_width; 2562306a36Sopenharmony_ci u16 sensor_height; 2662306a36Sopenharmony_ci u16 sensor_window_origin_x; 2762306a36Sopenharmony_ci u16 sensor_window_origin_y; 2862306a36Sopenharmony_ci u16 sensor_window_width; 2962306a36Sopenharmony_ci u16 sensor_window_height; 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci /* Image data coming from sensor (after scaling) */ 3262306a36Sopenharmony_ci u16 width; 3362306a36Sopenharmony_ci u16 height; 3462306a36Sopenharmony_ci u16 window_origin_x; 3562306a36Sopenharmony_ci u16 window_origin_y; 3662306a36Sopenharmony_ci u16 window_width; 3762306a36Sopenharmony_ci u16 window_height; 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci u32 pixel_clock; /* in Hz */ 4062306a36Sopenharmony_ci u32 ext_clock; /* in Hz */ 4162306a36Sopenharmony_ci struct v4l2_fract timeperframe; 4262306a36Sopenharmony_ci u32 max_exp; /* Maximum exposure value */ 4362306a36Sopenharmony_ci u32 bus_format; /* MEDIA_BUS_FMT_ */ 4462306a36Sopenharmony_ci u32 sensitivity; /* 16.16 fixed point */ 4562306a36Sopenharmony_ci}; 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci#define ET8EK8_REG_8BIT 1 4862306a36Sopenharmony_ci#define ET8EK8_REG_16BIT 2 4962306a36Sopenharmony_ci#define ET8EK8_REG_DELAY 100 5062306a36Sopenharmony_ci#define ET8EK8_REG_TERM 0xff 5162306a36Sopenharmony_cistruct et8ek8_reg { 5262306a36Sopenharmony_ci u16 type; 5362306a36Sopenharmony_ci u16 reg; /* 16-bit offset */ 5462306a36Sopenharmony_ci u32 val; /* 8/16/32-bit value */ 5562306a36Sopenharmony_ci}; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci/* Possible struct smia_reglist types. */ 5862306a36Sopenharmony_ci#define ET8EK8_REGLIST_STANDBY 0 5962306a36Sopenharmony_ci#define ET8EK8_REGLIST_POWERON 1 6062306a36Sopenharmony_ci#define ET8EK8_REGLIST_RESUME 2 6162306a36Sopenharmony_ci#define ET8EK8_REGLIST_STREAMON 3 6262306a36Sopenharmony_ci#define ET8EK8_REGLIST_STREAMOFF 4 6362306a36Sopenharmony_ci#define ET8EK8_REGLIST_DISABLED 5 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci#define ET8EK8_REGLIST_MODE 10 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci#define ET8EK8_REGLIST_LSC_ENABLE 100 6862306a36Sopenharmony_ci#define ET8EK8_REGLIST_LSC_DISABLE 101 6962306a36Sopenharmony_ci#define ET8EK8_REGLIST_ANR_ENABLE 102 7062306a36Sopenharmony_ci#define ET8EK8_REGLIST_ANR_DISABLE 103 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_cistruct et8ek8_reglist { 7362306a36Sopenharmony_ci u32 type; 7462306a36Sopenharmony_ci struct et8ek8_mode mode; 7562306a36Sopenharmony_ci struct et8ek8_reg regs[]; 7662306a36Sopenharmony_ci}; 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ci#define ET8EK8_MAX_LEN 32 7962306a36Sopenharmony_cistruct et8ek8_meta_reglist { 8062306a36Sopenharmony_ci char version[ET8EK8_MAX_LEN]; 8162306a36Sopenharmony_ci union { 8262306a36Sopenharmony_ci struct et8ek8_reglist *ptr; 8362306a36Sopenharmony_ci } reglist[]; 8462306a36Sopenharmony_ci}; 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ciextern struct et8ek8_meta_reglist meta_reglist; 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci#endif /* ET8EK8REGS */ 89