/*
 * Copyright 2023 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef SW_DEVICE_LIB_CAMERA_HM01B0_REGS_H_
#define SW_DEVICE_LIB_CAMERA_HM01B0_REGS_H_

#define HM01B0_MODEL_ID_H (0x0000)
#define HM01B0_MODEL_ID_L (0x0001)
#define HM01B0_MODE_SELECT (0x0100)
#define HM01B0_IMAGE_ORIENTATION (0x0101)
#define HM01B0_SW_RESET (0x0103)
#define HM01B0_GRP_PARAM_HOLD (0x0104)
#define HM01B0_FRAME_LENGTH_LINES_H (0x0340)
#define HM01B0_FRAME_LENGTH_LINES_L (0x0341)
#define HM01B0_LINE_LENGTH_PCK_H (0x0342)
#define HM01B0_LINE_LENGTH_PCK_L (0x0343)
#define HM01B0_READOUT_X (0x0383)
#define HM01B0_READOUT_Y (0x0387)
#define HM01B0_BINNING_MODE (0x0390)
#define HM01B0_TEST_PATTERN_MODE (0x0601)
#define HM01B0_BLC_CFG (0x1000)
#define HM01B0_BLC_TGT (0x1003)
#define HM01B0_BLC2_EN (0x1006)
#define HM01B0_BLC2_TGT (0x1007)
#define HM01B0_VSYNC_HSYNC_PIXEL_SHIFT_EN (0x1012)
#define HM01B0_STATISTIC_CTRL (0x2000)
#define HM01B0_MD_LROI_Y_START_H (0x2013)
#define HM01B0_MD_LROI_Y_START_L (0x2014)
#define HM01B0_MD_LROI_X_END_H (0x2017)
#define HM01B0_MD_LROI_X_END_L (0x2018)
#define HM01B0_AE_CTRL (0x2100)
#define HM01B0_CONVERGE_OUT_TH (0x2104)
#define HM01B0_MAX_INTG_H (0x2105)
#define HM01B0_MAX_INTG_L (0x2106)
#define HM01B0_MAX_AGAIN_FULL (0x2108)
#define HM01B0_MAX_AGAIN_BIN2 (0x2109)
#define HM01B0_MAX_DGAIN (0x210B)
#define HM01B0_FS_60HZ_H (0x210F)
#define HM01B0_FS_60HZ_L (0x2110)
#define HM01B0_FS_50HZ_H (0x2111)
#define HM01B0_FS_50HZ_L (0x2112)
#define HM01B0_MD_CTRL (0x2150)
#define HM01B0_QVGA_WIN_EN (0x3010)
#define HM01B0_SIX_BIT_MODE_EN (0x3011)
#define HM01B0_PMU_PROGRAMMABLE_FRAMECNT (0x3020)
#define HM01B0_BIT_CONTROL (0x3059)
#define HM01B0_OSC_CLK_DIV (0x3060)
#define HM01B0_SYNC_EN (0x3064)
#define HM01B0_OUTPUT_PIN_STATUS_CTRL (0x3065)

#endif  // SW_DEVICE_LIB_CAMERA_HM01B0_REGS_H_
