blob: e6f6ae26ade5e5506890ff9d0d2ebdcb4c65657b [file]
/*
* Copyright 2023 Google LLC
* Copyright lowRISC contributors
*
* 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.
*/
#include "sw/device/lib/dif/dif_isp_wrapper.h"
#include <stddef.h>
#include "sw/device/lib/base/bitfield.h"
#include "sw/device/lib/base/macros.h"
#include "sw/device/lib/dif/dif_base.h"
#include "external/isp_yocto/include/yocto_isp_register_address.h"
#include "isp_wrapper_regs.h" // Generated.
// ISP configuration:
// TPG 128 * 64, raw, bypass modes
dif_result_t dif_isp_wrapper_set_en(const dif_isp_wrapper_t *isp_wrapper) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
mmio_region_write32(isp_wrapper->base_addr, ISP_IMSC, 0xffffffff);
mmio_region_write32(isp_wrapper->base_addr, MI_IMSC, 0xffffffff);
mmio_region_write32(isp_wrapper->base_addr, VI_CCL, 0x00000002);
mmio_region_write32(isp_wrapper->base_addr, VI_ICCL, 0x00000059);
mmio_region_write32(isp_wrapper->base_addr, VI_IRCL, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_H_OFFS, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_V_OFFS, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_H_SIZE, 0x00000080);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_V_SIZE, 0x00000040);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_TOTAL_IN, 0x00bfc25f);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_ACT_IN, 0x00200040);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_FP_IN, 0x002bc11b);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_BP_IN, 0x0039c0a7);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_W_IN, 0x003a405d);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_GAP_IN, 0x000a8015);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_GAP_STD_IN, 0x00000010);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_RANDOM_SEED, 0xb6ccff1c);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_FRAME_NUM, 0x00000001);
mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_H_OFFS, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_V_OFFS, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_H_SIZE, 0x00000080);
mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_V_SIZE, 0x00000040);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_CTRL, 0x00000001);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_A_FIXED, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_B_FIXED, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_C_FIXED, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_D_FIXED, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_CONF, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_H_OFFSET, 0x00000012);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_V_OFFSET, 0x0000001f);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_H_SIZE, 0x00000012);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_V_SIZE, 0x00000004);
mmio_region_write32(isp_wrapper->base_addr, ISP_DGAIN_RB, 0x006600ba);
mmio_region_write32(isp_wrapper->base_addr, ISP_DGAIN_G, 0x00dd00e3);
mmio_region_write32(isp_wrapper->base_addr, ISP_DEMOSAIC, 0x00000462);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_MODE, 0x00000a12);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_BL0, 0x0000036d);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_BL1, 0x0000028e);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_SH0, 0x000003c8);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_SH1, 0x000003e2);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_LUM_WEIGHT, 0x000259b5);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_SH1, 0x0000003e);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_SH0, 0x0000003d);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_MID, 0x0000002c);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_BL0, 0x00000021);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_BL1, 0x0000000c);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_CTRL, 0x0000000a);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_COUNT_START, 0x00200040);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_A, 0x01f4018c);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_B, 0x012e01ca);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_C, 0x003401a4);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_X_NORM, 0x00030008);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_Y_NORM, 0x00020015);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_MODE, 0x00000001);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_0, 0x000001ae);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_1, 0x000002b0);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_2, 0x000002db);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_3, 0x000002f9);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_4, 0x000002fd);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_5, 0x000002fe);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_6, 0x000002fe);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_7, 0x000002fe);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_8, 0x000002fe);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_9, 0x000002fe);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_10, 0x000002fe);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_11, 0x000002fe);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_12, 0x000002fe);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_13, 0x000002fe);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_14, 0x000002fe);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_15, 0x000002fe);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_16, 0x000002fe);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_PROP, 0x80000007);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_H_OFFS, 0x0000005b);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_V_OFFS, 0x00000022);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_H_SIZE, 0x00000005);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_V_SIZE, 0x00000009);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_FRAMES, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_REF, 0x00006b55);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_THRESH, 0xeaef51fa);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_0, 0x00000004);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_1, 0x0000011b);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_2, 0x000001af);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_3, 0x000001e0);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_4, 0x00000020);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_5, 0x00000140);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_6, 0x00000053);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_7, 0x0000002e);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_8, 0x000001b7);
mmio_region_write32(isp_wrapper->base_addr, FORMAT_CONV_CTRL, 0x00000001);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_0, 0x00000588);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_1, 0x000005d9);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_2, 0x000004ea);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_3, 0x000004f9);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_4, 0x0000031e);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_5, 0x000006db);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_6, 0x000004f6);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_7, 0x00000307);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_8, 0x00000085);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_OFFSET_R, 0x00000310);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_OFFSET_G, 0x00000592);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_OFFSET_B, 0x00000d58);
mmio_region_write32(isp_wrapper->base_addr, ISP_IMSC, 0x000400fc);
mmio_region_write32(isp_wrapper->base_addr, ISP_ERR_CLR, 0x00000001);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_BASE_AD_INIT, 0x5a000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_SIZE_INIT, 0x0000a800);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_OFFS_CNT_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_IRQ_OFFS_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CB_BASE_AD_INIT, 0x5a00a800);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CB_SIZE_INIT, 0x00005400);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CB_OFFS_CNT_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CR_BASE_AD_INIT, 0x5a00a800);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CR_SIZE_INIT, 0x00005400);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CR_OFFS_CNT_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_IMSC, 0x000003ff);
mmio_region_write32(isp_wrapper->base_addr, MI_STATUS_CLR, 0x00000053);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_BASE_AD_INIT2, 0x5a01f800);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CB_BASE_AD_INIT2, 0x5a02a000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CR_BASE_AD_INIT2, 0x5a02f800);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_LLENGTH, 0x00000080);
mmio_region_write32(isp_wrapper->base_addr, MI_OUTPUT_ALIGN_FORMAT, 0x00000401);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_OUTPUT_FIFO_SIZE, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_PIC_WIDTH, 0x00000080);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_PIC_HEIGHT, 0x00000040);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_PIC_SIZE, 0x00002000);
mmio_region_write32(isp_wrapper->base_addr, SRSZ_CTRL, 0x0000011c);
mmio_region_write32(isp_wrapper->base_addr, SRSZ_SCALE_HY, 0x0000c177);
mmio_region_write32(isp_wrapper->base_addr, SRSZ_SCALE_HCB, 0x0000ec82);
mmio_region_write32(isp_wrapper->base_addr, SRSZ_SCALE_HCR, 0x00000057);
mmio_region_write32(isp_wrapper->base_addr, SRSZ_SCALE_VY, 0x000075d8);
mmio_region_write32(isp_wrapper->base_addr, SRSZ_SCALE_VC, 0x000075d8);
mmio_region_write32(isp_wrapper->base_addr, SRSZ_PHASE_HY, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, SRSZ_PHASE_HC, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, SRSZ_PHASE_VY, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, SRSZ_PHASE_VC, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, SRSZ_FORMAT_CONV_CTRL, 0x000000fa);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_Y_BASE_AD_INIT, 0x2354d5f8);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_Y_SIZE_INIT, 0x00008000);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_Y_OFFS_CNT_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_Y_LLENGTH, 0x00000080);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_CB_BASE_AD_INIT, 0x9fff2d98);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_CB_SIZE_INIT, 0x01673858);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_CB_OFFS_CNT_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_CR_BASE_AD_INIT, 0xd3bbca68);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_CR_SIZE_INIT, 0x0f8bf230);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_CR_OFFS_CNT_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_Y_PIC_WIDTH, 0x00000080);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_Y_PIC_HEIGHT, 0x00000040);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_Y_PIC_SIZE, 0x00002000);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_Y_BASE_AD_INIT2, 0x1939f6d8);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_CB_BASE_AD_INIT2, 0xf9f91948);
mmio_region_write32(isp_wrapper->base_addr, MI_SP_CR_BASE_AD_INIT2, 0x8335a0b0);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_PROP, 0x00000089);
mmio_region_write32(isp_wrapper->base_addr, SRSZ_CTRL, 0x0000011c);
mmio_region_write32(isp_wrapper->base_addr, ISP_CTRL, 0x80007250);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_CTRL, 0x00000d95);
mmio_region_write32(isp_wrapper->base_addr, MI_CTRL, 0x68360808);
mmio_region_write32(isp_wrapper->base_addr, MI_INIT, 0x000000b0);
return kDifOk;
}
// ISP configuration:
// raw:320x240, byp:320x240
dif_result_t dif_isp_wrapper_set_raw_320x240_byp_320x240_en(
const dif_isp_wrapper_t *isp_wrapper) {
return _dif_isp_wrapper_set_raw_320x240_byp_320x240_en(
isp_wrapper, 0x5a000000, 0x5a01a000, 0x5a01a000, 0x5a020000, 0x5a03a000,
0x5a03a000);
}
// ISP configuration:
// raw:320x240, byp:320x240, hps image address: 0x00300000
dif_result_t dif_isp_wrapper_set_ml_mem_byp_320x240_en(
const dif_isp_wrapper_t *isp_wrapper) {
return _dif_isp_wrapper_set_raw_320x240_byp_320x240_en(
isp_wrapper, 0x5a300000, 0x5a320000, 0x5a320000, 0x5a340000, 0x5a360000,
0x5a360000);
}
// TODO(ykwang): Remove the code duplication in this library. Use a config
// variable to describe which field to set and implement an initialization
// to setup ISP with the config. Unify all *_en functions in this library.
dif_result_t _dif_isp_wrapper_set_raw_320x240_byp_320x240_en(
const dif_isp_wrapper_t *isp_wrapper,
// TODO(ykwang): put these variables into a config variable.
const uint32_t y_base_ad_init_addr, const uint32_t cb_base_ad_init_addr,
const uint32_t cr_base_ad_init_addr, const uint32_t y_base_ad_init2_addr,
const uint32_t cb_base_ad_init2_addr,
const uint32_t cr_base_ad_init2_addr) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
mmio_region_write32(isp_wrapper->base_addr, VI_CCL, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, VI_ICCL, 0x00000049);
mmio_region_write32(isp_wrapper->base_addr, VI_IRCL, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_CTRL, 0x00206010);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_PROP, 0x00040011);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_H_OFFS, 0x00000002);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_V_OFFS, 0x00000002);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_H_SIZE, 0x00000140);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_V_SIZE, 0x000000f0);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_TOTAL_IN, 0x00ad3f05);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_ACT_IN, 0x00510144);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_FP_IN, 0x0d6e000f);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_BP_IN, 0x028b8004);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_W_IN, 0x0bad0001);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_GAP_IN, 0x04a1415b);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_GAP_STD_IN, 0x00002a97);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_RANDOM_SEED, 0x4d777439);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_FRAME_NUM, 0x00000001);
mmio_region_write32(isp_wrapper->base_addr, ISP_FRAME_RATE, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_H_OFFS, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_V_OFFS, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_H_SIZE, 0x00000140);
mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_V_SIZE, 0x000000f0);
mmio_region_write32(isp_wrapper->base_addr, ISP_BINNING_BASE, 0x00010001);
mmio_region_write32(isp_wrapper->base_addr, ISP_BINNING_NUM, 0x01580393);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_CTRL, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_A_FIXED, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_B_FIXED, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_C_FIXED, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_D_FIXED, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_CONF, 0x80000001);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_H_OFFSET, 0x00000020);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_V_OFFSET, 0x00000028);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_H_SIZE, 0x00000030);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_V_SIZE, 0x00000036);
mmio_region_write32(isp_wrapper->base_addr, ISP_DGAIN_RB, 0x011a00d1);
mmio_region_write32(isp_wrapper->base_addr, ISP_DGAIN_G, 0x01260109);
mmio_region_write32(isp_wrapper->base_addr, ISP_DEMOSAIC, 0x00000414);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_MODE, 0x00000692);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_BL0, 0x00000167);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_BL1, 0x00000142);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_SH0, 0x00000177);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_SH1, 0x000001c7);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_LUM_WEIGHT, 0x0006698a);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_SH1, 0x00000032);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_SH0, 0x00000023);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_MID, 0x00000019);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_BL0, 0x0000000f);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_BL1, 0x00000006);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_CTRL, 0x0000000a);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_COUNT_START, 0x00a200a2);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_A, 0x00170118);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_B, 0x01d101ed);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_C, 0x01c100f8);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_X_NORM, 0x00020005);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_Y_NORM, 0x00050019);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_MODE, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_0, 0x000002f4);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_1, 0x0000024e);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_2, 0x00000083);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_3, 0x000001af);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_4, 0x00000346);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_5, 0x000000a5);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_6, 0x00000304);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_7, 0x00000111);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_8, 0x000003b9);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_9, 0x00000383);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_10, 0x00000018);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_11, 0x0000028c);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_12, 0x0000001e);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_13, 0x00000087);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_14, 0x00000047);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_15, 0x000001a4);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_16, 0x000002bc);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_PROP, 0x80000007);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_H_OFFS, 0x0000011c);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_V_OFFS, 0x000000c1);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_H_SIZE, 0x0000001e);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_V_SIZE, 0x00000078);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_FRAMES, 0x00000002);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_REF, 0x0000c2e6);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_THRESH, 0x8ef9ad1e);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_0, 0x00000026);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_1, 0x0000004b);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_2, 0x0000000f);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_3, 0x000001ea);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_4, 0x000001d6);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_5, 0x00000040);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_6, 0x00000040);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_7, 0x000001ca);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_8, 0x000001f6);
mmio_region_write32(isp_wrapper->base_addr, FORMAT_CONV_CTRL, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_0, 0x000000dd);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_1, 0x000007c6);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_2, 0x000007df);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_3, 0x000007bf);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_4, 0x000000ec);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_5, 0x000007de);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_6, 0x00000002);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_7, 0x000007ae);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_8, 0x000000e0);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_OFFSET_R, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_OFFSET_G, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_OFFSET_B, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_IMSC, 0x00000020);
mmio_region_write32(isp_wrapper->base_addr, ISP_ICR, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_ISR, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_ERR_CLR, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_SCALE_HY, 0x00008469);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_SCALE_HCB, 0x0000a674);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_SCALE_HCR, 0x0000fa3d);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_SCALE_VY, 0x0000ef61);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_SCALE_VC, 0x0000f9b7);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_PHASE_HY, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_PHASE_HC, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_PHASE_VY, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_PHASE_VC, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_FORMAT_CONV_CTRL, 0x000000fa);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_BASE_AD_INIT,
y_base_ad_init_addr);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_SIZE_INIT, 0x00012c00);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_OFFS_CNT_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_IRQ_OFFS_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CB_BASE_AD_INIT,
cb_base_ad_init_addr);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CB_SIZE_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CB_OFFS_CNT_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CR_BASE_AD_INIT,
cr_base_ad_init_addr);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CR_SIZE_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CR_OFFS_CNT_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_IMSC, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_ICR, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_ISR, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_STATUS_CLR, 0x00000003);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_BASE_AD_INIT2,
y_base_ad_init2_addr);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CB_BASE_AD_INIT2,
cb_base_ad_init2_addr);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CR_BASE_AD_INIT2,
cr_base_ad_init2_addr);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_LLENGTH, 0x00000144);
mmio_region_write32(isp_wrapper->base_addr, MI_OUTPUT_ALIGN_FORMAT, 0x00000001);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_OUTPUT_FIFO_SIZE, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_PIC_WIDTH, 0x00000140);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_PIC_HEIGHT, 0x000000f0);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_PIC_SIZE, 0x00012c00);
mmio_region_write32(isp_wrapper->base_addr, MI_CTRL, 0x003a2808);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_CTRL, 0x00000868);
mmio_region_write32(isp_wrapper->base_addr, ISP_CTRL, 0x00207251);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_BASE, 0x00000190);
mmio_region_write32(isp_wrapper->base_addr, MI_INIT, 0x000000b0);
return kDifOk;
}
// ISP configuration:
// raw:324x324, byp:324x324
dif_result_t dif_isp_wrapper_set_raw_324x324_byp_324x324_en(
const dif_isp_wrapper_t *isp_wrapper) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
mmio_region_write32(isp_wrapper->base_addr, VI_CCL, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, VI_ICCL, 0x00000049);
mmio_region_write32(isp_wrapper->base_addr, VI_IRCL, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_CTRL, 0x00206018);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_PROP, 0x00040011);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_H_OFFS, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_V_OFFS, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_H_SIZE, 0x00000144);
mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_V_SIZE, 0x00000144);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_TOTAL_IN, 0x00ad3f05);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_ACT_IN, 0x00510144);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_FP_IN, 0x0d6e000f);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_BP_IN, 0x028b8004);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_W_IN, 0x0bad0001);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_GAP_IN, 0x04a1415b);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_GAP_STD_IN, 0x00002a97);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_RANDOM_SEED, 0x4d777439);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_FRAME_NUM, 0x00000001);
mmio_region_write32(isp_wrapper->base_addr, ISP_FRAME_RATE, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_H_OFFS, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_V_OFFS, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_H_SIZE, 0x00000144);
mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_V_SIZE, 0x00000144);
mmio_region_write32(isp_wrapper->base_addr, ISP_BINNING_BASE, 0x00010001);
mmio_region_write32(isp_wrapper->base_addr, ISP_BINNING_NUM, 0x01580393);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_CTRL, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_A_FIXED, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_B_FIXED, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_C_FIXED, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_BLS_D_FIXED, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_CONF, 0x80000001);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_H_OFFSET, 0x00000020);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_V_OFFSET, 0x00000028);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_H_SIZE, 0x00000030);
mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_V_SIZE, 0x00000036);
mmio_region_write32(isp_wrapper->base_addr, ISP_DGAIN_RB, 0x011a00d1);
mmio_region_write32(isp_wrapper->base_addr, ISP_DGAIN_G, 0x01260109);
mmio_region_write32(isp_wrapper->base_addr, ISP_DEMOSAIC, 0x00000414);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_MODE, 0x00000692);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_BL0, 0x00000167);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_BL1, 0x00000142);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_SH0, 0x00000177);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_SH1, 0x000001c7);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_LUM_WEIGHT, 0x0006698a);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_SH1, 0x00000032);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_SH0, 0x00000023);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_MID, 0x00000019);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_BL0, 0x0000000f);
mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_BL1, 0x00000006);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_CTRL, 0x0000000a);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_COUNT_START, 0x00a200a2);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_A, 0x00170118);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_B, 0x01d101ed);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_C, 0x01c100f8);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_X_NORM, 0x00020005);
mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_Y_NORM, 0x00050019);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_MODE, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_0, 0x000002f4);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_1, 0x0000024e);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_2, 0x00000083);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_3, 0x000001af);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_4, 0x00000346);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_5, 0x000000a5);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_6, 0x00000304);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_7, 0x00000111);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_8, 0x000003b9);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_9, 0x00000383);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_10, 0x00000018);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_11, 0x0000028c);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_12, 0x0000001e);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_13, 0x00000087);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_14, 0x00000047);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_15, 0x000001a4);
mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_16, 0x000002bc);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_PROP, 0x80000007);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_H_OFFS, 0x0000011c);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_V_OFFS, 0x000000c1);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_H_SIZE, 0x0000001e);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_V_SIZE, 0x00000078);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_FRAMES, 0x00000002);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_REF, 0x0000c2e6);
mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_THRESH, 0x8ef9ad1e);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_0, 0x00000026);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_1, 0x0000004b);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_2, 0x0000000f);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_3, 0x000001ea);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_4, 0x000001d6);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_5, 0x00000040);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_6, 0x00000040);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_7, 0x000001ca);
mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_8, 0x000001f6);
mmio_region_write32(isp_wrapper->base_addr, FORMAT_CONV_CTRL, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_0, 0x000000dd);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_1, 0x000007c6);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_2, 0x000007df);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_3, 0x000007bf);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_4, 0x000000ec);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_5, 0x000007de);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_6, 0x00000002);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_7, 0x000007ae);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_8, 0x000000e0);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_OFFSET_R, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_OFFSET_G, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_CT_OFFSET_B, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_IMSC, 0x00000020);
mmio_region_write32(isp_wrapper->base_addr, ISP_ICR, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_ISR, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_ERR_CLR, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_SCALE_HY, 0x00008469);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_SCALE_HCB, 0x0000a674);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_SCALE_HCR, 0x0000fa3d);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_SCALE_VY, 0x0000ef61);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_SCALE_VC, 0x0000f9b7);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_PHASE_HY, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_PHASE_HC, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_PHASE_VY, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_PHASE_VC, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_FORMAT_CONV_CTRL, 0x000000fa);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_BASE_AD_INIT, 0x5a000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_SIZE_INIT, 0x00019f20);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_OFFS_CNT_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_IRQ_OFFS_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CB_BASE_AD_INIT, 0x5a01a000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CB_SIZE_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CB_OFFS_CNT_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CR_BASE_AD_INIT, 0x5a01a000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CR_SIZE_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CR_OFFS_CNT_INIT, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_IMSC, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_ICR, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_ISR, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_STATUS_CLR, 0x00000003);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_BASE_AD_INIT2, 0x5a034000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CB_BASE_AD_INIT2, 0x5a04e000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_CR_BASE_AD_INIT2, 0x5a04e000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_LLENGTH, 0x00000144);
mmio_region_write32(isp_wrapper->base_addr, MI_OUTPUT_ALIGN_FORMAT, 0x00000001);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_OUTPUT_FIFO_SIZE, 0x00000000);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_PIC_WIDTH, 0x00000144);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_PIC_HEIGHT, 0x00000144);
mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_PIC_SIZE, 0x00019a10);
mmio_region_write32(isp_wrapper->base_addr, MI_CTRL, 0x003a2808);
mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_CTRL, 0x00000868);
mmio_region_write32(isp_wrapper->base_addr, ISP_CTRL, 0x00207259);
mmio_region_write32(isp_wrapper->base_addr, ISP_MRSZ_BASE, 0x00000190);
mmio_region_write32(isp_wrapper->base_addr, MI_INIT, 0x000000b0);
return kDifOk;
}
dif_result_t dif_isp_wrapper_clear_en(const dif_isp_wrapper_t *isp_wrapper) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
//TODO(Ray): not used currently, will update to real interrupt clear registers
mmio_region_write32(isp_wrapper->base_addr, 0xb00, 0x00040000);
return kDifOk;
}
// TODO(ykwang): replace mask function with done which clears status registers.
dif_result_t dif_isp_wrapper_isp_irq_mask(const dif_isp_wrapper_t *isp_wrapper) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
//ISP_IMSC Interrupt mask, 0 active
mmio_region_write32(isp_wrapper->base_addr, 0xb00, 0x00000000);
return kDifOk;
}
dif_result_t dif_isp_wrapper_mi_irq_mask(const dif_isp_wrapper_t *isp_wrapper) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
//MI_IMSC Interrupt mask, 0 active
mmio_region_write32(isp_wrapper->base_addr, 0xef8, 0x00000000);
return kDifOk;
}
dif_result_t dif_isp_wrapper_isp_irq_done(
const dif_isp_wrapper_t *isp_wrapper) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
uint32_t irq_status = mmio_region_read32(isp_wrapper->base_addr, ISP_MIS);
mmio_region_write32(isp_wrapper->base_addr, ISP_ICR, irq_status);
return kDifOk;
}
dif_result_t dif_isp_wrapper_mi_irq_done(const dif_isp_wrapper_t *isp_wrapper) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
uint32_t irq_status =
mmio_region_read32(isp_wrapper->base_addr, MI_MIS);
mmio_region_write32(isp_wrapper->base_addr, MI_ICR, irq_status);
return kDifOk;
}
dif_result_t dif_isp_wrapper_read_en(const dif_isp_wrapper_t *isp_wrapper,
uint32_t *result) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
//MI_MIS Masked Interrupt Status
*result = mmio_region_read32(isp_wrapper->base_addr, 0xf00);
return kDifOk;
}
dif_result_t dif_isp_wrapper_read_mi_mis(const dif_isp_wrapper_t *isp_wrapper, uint32_t *result) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
*result = mmio_region_read32(isp_wrapper->base_addr, MI_MIS);
return kDifOk;
}
dif_result_t dif_isp_wrapper_read_isp_mis(const dif_isp_wrapper_t *isp_wrapper, uint32_t *result) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
*result = mmio_region_read32(isp_wrapper->base_addr, ISP_MIS);
return kDifOk;
}
dif_result_t dif_isp_wrapper_write_isp_icr(const dif_isp_wrapper_t *isp_wrapper, uint32_t val) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
mmio_region_write32(isp_wrapper->base_addr, ISP_ICR, val);
return kDifOk;
}
dif_result_t dif_isp_wrapper_write_mi_icr(const dif_isp_wrapper_t *isp_wrapper, uint32_t val) {
if (isp_wrapper == NULL) {
return kDifBadArg;
}
mmio_region_write32(isp_wrapper->base_addr, MI_ICR, val);
return kDifOk;
}