Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 | /* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Register map for M-5MOLS 8M Pixel camera sensor with ISP * * Copyright (C) 2011 Samsung Electronics Co., Ltd. * Author: HeungJun Kim <riverful.kim@samsung.com> * * Copyright (C) 2009 Samsung Electronics Co., Ltd. * Author: Dongsoo Nathaniel Kim <dongsoo45.kim@samsung.com> */ #ifndef M5MOLS_REG_H #define M5MOLS_REG_H #define M5MOLS_I2C_MAX_SIZE 4 #define M5MOLS_BYTE_READ 0x01 #define M5MOLS_BYTE_WRITE 0x02 #define I2C_CATEGORY(__cat) ((__cat >> 16) & 0xff) #define I2C_COMMAND(__comm) ((__comm >> 8) & 0xff) #define I2C_SIZE(__reg_s) ((__reg_s) & 0xff) #define I2C_REG(__cat, __cmd, __reg_s) ((__cat << 16) | (__cmd << 8) | __reg_s) /* * Category section register * * The category means set including relevant command of M-5MOLS. */ #define CAT_SYSTEM 0x00 #define CAT_PARAM 0x01 #define CAT_MONITOR 0x02 #define CAT_AE 0x03 #define CAT_WB 0x06 #define CAT_EXIF 0x07 #define CAT_FD 0x09 #define CAT_LENS 0x0a #define CAT_CAPT_PARM 0x0b #define CAT_CAPT_CTRL 0x0c #define CAT_FLASH 0x0f /* related to FW, revisions, booting */ /* * Category 0 - SYSTEM mode * * The SYSTEM mode in the M-5MOLS means area available to handle with the whole * & all-round system of sensor. It deals with version/interrupt/setting mode & * even sensor's status. Especially, the M-5MOLS sensor with ISP varies by * packaging & manufacturer, even the customer and project code. And the * function details may vary among them. The version information helps to * determine what methods shall be used in the driver. * * There is many registers between customer version address and awb one. For * more specific contents, see definition if file m5mols.h. */ #define SYSTEM_VER_CUSTOMER I2C_REG(CAT_SYSTEM, 0x00, 1) #define SYSTEM_VER_PROJECT I2C_REG(CAT_SYSTEM, 0x01, 1) #define SYSTEM_VER_FIRMWARE I2C_REG(CAT_SYSTEM, 0x02, 2) #define SYSTEM_VER_HARDWARE I2C_REG(CAT_SYSTEM, 0x04, 2) #define SYSTEM_VER_PARAMETER I2C_REG(CAT_SYSTEM, 0x06, 2) #define SYSTEM_VER_AWB I2C_REG(CAT_SYSTEM, 0x08, 2) #define SYSTEM_SYSMODE I2C_REG(CAT_SYSTEM, 0x0b, 1) #define REG_SYSINIT 0x00 /* SYSTEM mode */ #define REG_PARAMETER 0x01 /* PARAMETER mode */ #define REG_MONITOR 0x02 /* MONITOR mode */ #define REG_CAPTURE 0x03 /* CAPTURE mode */ #define SYSTEM_CMD(__cmd) I2C_REG(CAT_SYSTEM, cmd, 1) #define SYSTEM_VER_STRING I2C_REG(CAT_SYSTEM, 0x0a, 1) #define REG_SAMSUNG_ELECTRO "SE" /* Samsung Electro-Mechanics */ #define REG_SAMSUNG_OPTICS "OP" /* Samsung Fiber-Optics */ #define REG_SAMSUNG_TECHWIN "TB" /* Samsung Techwin */ /* SYSTEM mode status */ #define SYSTEM_STATUS I2C_REG(CAT_SYSTEM, 0x0c, 1) /* Interrupt pending register */ #define SYSTEM_INT_FACTOR I2C_REG(CAT_SYSTEM, 0x10, 1) /* interrupt enable register */ #define SYSTEM_INT_ENABLE I2C_REG(CAT_SYSTEM, 0x11, 1) #define REG_INT_MODE (1 << 0) #define REG_INT_AF (1 << 1) #define REG_INT_ZOOM (1 << 2) #define REG_INT_CAPTURE (1 << 3) #define REG_INT_FRAMESYNC (1 << 4) #define REG_INT_FD (1 << 5) #define REG_INT_LENS_INIT (1 << 6) #define REG_INT_SOUND (1 << 7) #define REG_INT_MASK 0x0f /* * category 1 - PARAMETER mode * * This category supports function of camera features of M-5MOLS. It means we * can handle with preview(MONITOR) resolution size/frame per second/interface * between the sensor and the Application Processor/even the image effect. */ /* Resolution in the MONITOR mode */ #define PARM_MON_SIZE I2C_REG(CAT_PARAM, 0x01, 1) /* Frame rate */ #define PARM_MON_FPS I2C_REG(CAT_PARAM, 0x02, 1) #define REG_FPS_30 0x02 /* Video bus between the sensor and a host processor */ #define PARM_INTERFACE I2C_REG(CAT_PARAM, 0x00, 1) #define REG_INTERFACE_MIPI 0x02 /* Image effects */ #define PARM_EFFECT I2C_REG(CAT_PARAM, 0x0b, 1) #define REG_EFFECT_OFF 0x00 #define REG_EFFECT_NEGA 0x01 #define REG_EFFECT_EMBOSS 0x06 #define REG_EFFECT_OUTLINE 0x07 #define REG_EFFECT_WATERCOLOR 0x08 /* * Category 2 - MONITOR mode * * The MONITOR mode is same as preview mode as we said. The M-5MOLS has another * mode named "Preview", but this preview mode is used at the case specific * vider-recording mode. This mmode supports only YUYV format. On the other * hand, the JPEG & RAW formats is supports by CAPTURE mode. And, there are * another options like zoom/color effect(different with effect in PARAMETER * mode)/anti hand shaking algorithm. */ /* Target digital zoom position */ #define MON_ZOOM I2C_REG(CAT_MONITOR, 0x01, 1) /* CR value for color effect */ #define MON_CFIXR I2C_REG(CAT_MONITOR, 0x0a, 1) /* CB value for color effect */ #define MON_CFIXB I2C_REG(CAT_MONITOR, 0x09, 1) #define REG_CFIXB_SEPIA 0xd8 #define REG_CFIXR_SEPIA 0x18 #define MON_EFFECT I2C_REG(CAT_MONITOR, 0x0b, 1) #define REG_COLOR_EFFECT_OFF 0x00 #define REG_COLOR_EFFECT_ON 0x01 /* Chroma enable */ #define MON_CHROMA_EN I2C_REG(CAT_MONITOR, 0x10, 1) /* Chroma level */ #define MON_CHROMA_LVL I2C_REG(CAT_MONITOR, 0x0f, 1) #define REG_CHROMA_OFF 0x00 #define REG_CHROMA_ON 0x01 /* Sharpness on/off */ #define MON_EDGE_EN I2C_REG(CAT_MONITOR, 0x12, 1) /* Sharpness level */ #define MON_EDGE_LVL I2C_REG(CAT_MONITOR, 0x11, 1) #define REG_EDGE_OFF 0x00 #define REG_EDGE_ON 0x01 /* Set color tone (contrast) */ #define MON_TONE_CTL I2C_REG(CAT_MONITOR, 0x25, 1) /* * Category 3 - Auto Exposure * * The M-5MOLS exposure capbility is detailed as which is similar to digital * camera. This category supports AE locking/various AE mode(range of exposure) * /ISO/flickering/EV bias/shutter/meteoring, and anything else. And the * maximum/minimum exposure gain value depending on M-5MOLS firmware, may be * different. So, this category also provide getting the max/min values. And, * each MONITOR and CAPTURE mode has each gain/shutter/max exposure values. */ /* Auto Exposure locking */ #define AE_LOCK I2C_REG(CAT_AE, 0x00, 1) #define REG_AE_UNLOCK 0x00 #define REG_AE_LOCK 0x01 /* Auto Exposure algorithm mode */ #define AE_MODE I2C_REG(CAT_AE, 0x01, 1) #define REG_AE_OFF 0x00 /* AE off */ #define REG_AE_ALL 0x01 /* calc AE in all block integral */ #define REG_AE_CENTER 0x03 /* calc AE in center weighted */ #define REG_AE_SPOT 0x06 /* calc AE in specific spot */ #define AE_ISO I2C_REG(CAT_AE, 0x05, 1) #define REG_ISO_AUTO 0x00 #define REG_ISO_50 0x01 #define REG_ISO_100 0x02 #define REG_ISO_200 0x03 #define REG_ISO_400 0x04 #define REG_ISO_800 0x05 /* EV (scenemode) preset for MONITOR */ #define AE_EV_PRESET_MONITOR I2C_REG(CAT_AE, 0x0a, 1) /* EV (scenemode) preset for CAPTURE */ #define AE_EV_PRESET_CAPTURE I2C_REG(CAT_AE, 0x0b, 1) #define REG_SCENE_NORMAL 0x00 #define REG_SCENE_PORTRAIT 0x01 #define REG_SCENE_LANDSCAPE 0x02 #define REG_SCENE_SPORTS 0x03 #define REG_SCENE_PARTY_INDOOR 0x04 #define REG_SCENE_BEACH_SNOW 0x05 #define REG_SCENE_SUNSET 0x06 #define REG_SCENE_DAWN_DUSK 0x07 #define REG_SCENE_FALL 0x08 #define REG_SCENE_NIGHT 0x09 #define REG_SCENE_AGAINST_LIGHT 0x0a #define REG_SCENE_FIRE 0x0b #define REG_SCENE_TEXT 0x0c #define REG_SCENE_CANDLE 0x0d /* Manual gain in MONITOR mode */ #define AE_MAN_GAIN_MON I2C_REG(CAT_AE, 0x12, 2) /* Maximum gain in MONITOR mode */ #define AE_MAX_GAIN_MON I2C_REG(CAT_AE, 0x1a, 2) /* Manual gain in CAPTURE mode */ #define AE_MAN_GAIN_CAP I2C_REG(CAT_AE, 0x26, 2) #define AE_INDEX I2C_REG(CAT_AE, 0x38, 1) #define REG_AE_INDEX_20_NEG 0x00 #define REG_AE_INDEX_15_NEG 0x01 #define REG_AE_INDEX_10_NEG 0x02 #define REG_AE_INDEX_05_NEG 0x03 #define REG_AE_INDEX_00 0x04 #define REG_AE_INDEX_05_POS 0x05 #define REG_AE_INDEX_10_POS 0x06 #define REG_AE_INDEX_15_POS 0x07 #define REG_AE_INDEX_20_POS 0x08 /* * Category 6 - White Balance */ /* Auto Whitebalance locking */ #define AWB_LOCK I2C_REG(CAT_WB, 0x00, 1) #define REG_AWB_UNLOCK 0x00 #define REG_AWB_LOCK 0x01 #define AWB_MODE I2C_REG(CAT_WB, 0x02, 1) #define REG_AWB_AUTO 0x01 /* AWB off */ #define REG_AWB_PRESET 0x02 /* AWB preset */ /* Manual WB (preset) */ #define AWB_MANUAL I2C_REG(CAT_WB, 0x03, 1) #define REG_AWB_INCANDESCENT 0x01 #define REG_AWB_FLUORESCENT_1 0x02 #define REG_AWB_FLUORESCENT_2 0x03 #define REG_AWB_DAYLIGHT 0x04 #define REG_AWB_CLOUDY 0x05 #define REG_AWB_SHADE 0x06 #define REG_AWB_HORIZON 0x07 #define REG_AWB_LEDLIGHT 0x09 /* * Category 7 - EXIF information */ #define EXIF_INFO_EXPTIME_NU I2C_REG(CAT_EXIF, 0x00, 4) #define EXIF_INFO_EXPTIME_DE I2C_REG(CAT_EXIF, 0x04, 4) #define EXIF_INFO_TV_NU I2C_REG(CAT_EXIF, 0x08, 4) #define EXIF_INFO_TV_DE I2C_REG(CAT_EXIF, 0x0c, 4) #define EXIF_INFO_AV_NU I2C_REG(CAT_EXIF, 0x10, 4) #define EXIF_INFO_AV_DE I2C_REG(CAT_EXIF, 0x14, 4) #define EXIF_INFO_BV_NU I2C_REG(CAT_EXIF, 0x18, 4) #define EXIF_INFO_BV_DE I2C_REG(CAT_EXIF, 0x1c, 4) #define EXIF_INFO_EBV_NU I2C_REG(CAT_EXIF, 0x20, 4) #define EXIF_INFO_EBV_DE I2C_REG(CAT_EXIF, 0x24, 4) #define EXIF_INFO_ISO I2C_REG(CAT_EXIF, 0x28, 2) #define EXIF_INFO_FLASH I2C_REG(CAT_EXIF, 0x2a, 2) #define EXIF_INFO_SDR I2C_REG(CAT_EXIF, 0x2c, 2) #define EXIF_INFO_QVAL I2C_REG(CAT_EXIF, 0x2e, 2) /* * Category 9 - Face Detection */ #define FD_CTL I2C_REG(CAT_FD, 0x00, 1) #define BIT_FD_EN 0 #define BIT_FD_DRAW_FACE_FRAME 4 #define BIT_FD_DRAW_SMILE_LVL 6 #define REG_FD(shift) (1 << shift) #define REG_FD_OFF 0x0 /* * Category A - Lens Parameter */ #define AF_MODE I2C_REG(CAT_LENS, 0x01, 1) #define REG_AF_NORMAL 0x00 /* Normal AF, one time */ #define REG_AF_MACRO 0x01 /* Macro AF, one time */ #define REG_AF_POWEROFF 0x07 #define AF_EXECUTE I2C_REG(CAT_LENS, 0x02, 1) #define REG_AF_STOP 0x00 #define REG_AF_EXE_AUTO 0x01 #define REG_AF_EXE_CAF 0x02 #define AF_STATUS I2C_REG(CAT_LENS, 0x03, 1) #define REG_AF_FAIL 0x00 #define REG_AF_SUCCESS 0x02 #define REG_AF_IDLE 0x04 #define REG_AF_BUSY 0x05 #define AF_VERSION I2C_REG(CAT_LENS, 0x0a, 1) /* * Category B - CAPTURE Parameter */ #define CAPP_YUVOUT_MAIN I2C_REG(CAT_CAPT_PARM, 0x00, 1) #define REG_YUV422 0x00 #define REG_BAYER10 0x05 #define REG_BAYER8 0x06 #define REG_JPEG 0x10 #define CAPP_MAIN_IMAGE_SIZE I2C_REG(CAT_CAPT_PARM, 0x01, 1) #define CAPP_JPEG_SIZE_MAX I2C_REG(CAT_CAPT_PARM, 0x0f, 4) #define CAPP_JPEG_RATIO I2C_REG(CAT_CAPT_PARM, 0x17, 1) #define CAPP_MCC_MODE I2C_REG(CAT_CAPT_PARM, 0x1d, 1) #define REG_MCC_OFF 0x00 #define REG_MCC_NORMAL 0x01 #define CAPP_WDR_EN I2C_REG(CAT_CAPT_PARM, 0x2c, 1) #define REG_WDR_OFF 0x00 #define REG_WDR_ON 0x01 #define REG_WDR_AUTO 0x02 #define CAPP_LIGHT_CTRL I2C_REG(CAT_CAPT_PARM, 0x40, 1) #define REG_LIGHT_OFF 0x00 #define REG_LIGHT_ON 0x01 #define REG_LIGHT_AUTO 0x02 #define CAPP_FLASH_CTRL I2C_REG(CAT_CAPT_PARM, 0x41, 1) #define REG_FLASH_OFF 0x00 #define REG_FLASH_ON 0x01 #define REG_FLASH_AUTO 0x02 /* * Category C - CAPTURE Control */ #define CAPC_MODE I2C_REG(CAT_CAPT_CTRL, 0x00, 1) #define REG_CAP_NONE 0x00 #define REG_CAP_ANTI_SHAKE 0x02 /* Select single- or multi-shot capture */ #define CAPC_SEL_FRAME I2C_REG(CAT_CAPT_CTRL, 0x06, 1) #define CAPC_START I2C_REG(CAT_CAPT_CTRL, 0x09, 1) #define REG_CAP_START_MAIN 0x01 #define REG_CAP_START_THUMB 0x03 #define CAPC_IMAGE_SIZE I2C_REG(CAT_CAPT_CTRL, 0x0d, 4) #define CAPC_THUMB_SIZE I2C_REG(CAT_CAPT_CTRL, 0x11, 4) /* * Category F - Flash * * This mode provides functions about internal flash stuff and system startup. */ /* Starts internal ARM core booting after power-up */ #define FLASH_CAM_START I2C_REG(CAT_FLASH, 0x12, 1) #define REG_START_ARM_BOOT 0x01 /* write value */ #define REG_IN_FLASH_MODE 0x00 /* read value */ #endif /* M5MOLS_REG_H */ |