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 struct v4l2_fract timeperframe; 41 u32 max_exp; /* Maximum exposure value */ 42 u32 bus_format; /* MEDIA_BUS_FMT_ */ 43 u32 sensitivity; /* 16.16 fixed point */ 44 }; 45 46 #define ET8EK8_REG_8BIT 1 47 #define ET8EK8_REG_16BIT 2 48 #define ET8EK8_REG_DELAY 100 49 #define ET8EK8_REG_TERM 0xff 50 struct et8ek8_reg { 51 u16 type; 52 u16 reg; /* 16-bit offset */ 53 u32 val; /* 8/16/32-bit value */ 54 }; 55 56 /* Possible struct smia_reglist types. */ 57 #define ET8EK8_REGLIST_STANDBY 0 58 #define ET8EK8_REGLIST_POWERON 1 59 #define ET8EK8_REGLIST_RESUME 2 60 #define ET8EK8_REGLIST_STREAMON 3 61 #define ET8EK8_REGLIST_STREAMOFF 4 62 #define ET8EK8_REGLIST_DISABLED 5 63 64 #define ET8EK8_REGLIST_MODE 10 65 66 #define ET8EK8_REGLIST_LSC_ENABLE 100 67 #define ET8EK8_REGLIST_LSC_DISABLE 101 68 #define ET8EK8_REGLIST_ANR_ENABLE 102 69 #define ET8EK8_REGLIST_ANR_DISABLE 103 70 71 struct et8ek8_reglist { 72 u32 type; 73 struct et8ek8_mode mode; 74 struct et8ek8_reg regs[]; 75 }; 76 77 #define ET8EK8_MAX_LEN 32 78 struct et8ek8_meta_reglist { 79 char version[ET8EK8_MAX_LEN]; 80 union { 81 struct et8ek8_reglist *ptr; 82 } reglist[]; 83 }; 84 85 extern struct et8ek8_meta_reglist meta_reglist; 86 87 #endif /* ET8EK8REGS */ 88