Fixes for HPS on ASIC
- ifdef in a few fixes for the HPS demo on ASIC: different pinmuxing,
primarily.
- for the ASIC, un-rotate the camera to match the physical layout.
- register settings for the pico ISP in ASIC
Change-Id: Ie5c7f77e56d8807b224a8de3fe61c387be2a6c8c
diff --git a/sw/device/examples/demo_hps_live/BUILD b/sw/device/examples/demo_hps_live/BUILD
index 4c0b3dc..e8b2bdf 100644
--- a/sw/device/examples/demo_hps_live/BUILD
+++ b/sw/device/examples/demo_hps_live/BUILD
@@ -5,6 +5,7 @@
load(
"//rules:matcha.bzl",
+ "ASIC_CORE_TARGETS",
"NEXUS_CORE_TARGETS",
"sec_flash_binary",
"smc_flash_binary",
@@ -15,7 +16,6 @@
name = "hps_demo",
srcs = [
"hps_demo_sc.c",
- "hps_demo_smc_fpga_nexus_bin_c.h",
],
copts = [
"-nostdlib",
@@ -23,8 +23,10 @@
],
per_device_deps = {
"fpga_nexus": [NEXUS_CORE_TARGETS.get("secure_core")],
+ "asic": [ASIC_CORE_TARGETS.get("secure_core")],
},
deps = [
+ ":hps_demo_smc_h",
"//hw/top_matcha/ip/ml_top/data:ml_top_regs",
"//sw/device/lib/dif:rv_plic_sec",
"//sw/device/lib/dif:smc_ctrl",
@@ -46,6 +48,7 @@
],
per_device_deps = {
"fpga_nexus": [NEXUS_CORE_TARGETS.get("smc")],
+ "asic": [ASIC_CORE_TARGETS.get("smc")],
},
deps = [
"//hw/top_matcha/ip/ml_top/data:ml_top_regs",
@@ -58,3 +61,15 @@
"@lowrisc_opentitan//sw/device/lib/dif:rv_timer",
],
)
+
+cc_library(
+ name = "hps_demo_smc_h",
+ hdrs = select({
+ "//rules:sparrow_platform": [
+ "hps_demo_smc_asic_bin_c.h",
+ ],
+ "//conditions:default": [
+ "hps_demo_smc_fpga_nexus_bin_c.h",
+ ],
+ }),
+)
diff --git a/sw/device/examples/demo_hps_live/hps_demo_sc.c b/sw/device/examples/demo_hps_live/hps_demo_sc.c
index 0300213..e5a77f4 100644
--- a/sw/device/examples/demo_hps_live/hps_demo_sc.c
+++ b/sw/device/examples/demo_hps_live/hps_demo_sc.c
@@ -15,7 +15,6 @@
*/
#include "hw/top_matcha/sw/autogen/top_matcha.h"
-#include "sw/device/examples/demo_hps_live/hps_demo_smc_fpga_nexus_bin_c.h" // Generated.
#include "sw/device/lib/arch/device.h"
#include "sw/device/lib/dif/dif_gpio.h"
#include "sw/device/lib/dif/dif_pinmux.h"
@@ -30,6 +29,12 @@
#include "sw/device/lib/testing/test_framework/check.h"
#include "sw/device/lib/testing/test_framework/ottf_test_config.h"
+#if defined(MATCHA_SPARROW)
+#include "sw/device/examples/demo_hps_live/hps_demo_smc_asic_bin_c.h" // Generated.
+#else
+#include "sw/device/examples/demo_hps_live/hps_demo_smc_fpga_nexus_bin_c.h" // Generated.
+#endif
+
/*
* Sample program to run some code on all cores in the system.
* SC - Orchestrate the other cores, print status to UART.
@@ -103,10 +108,17 @@
CHECK_DIF_OK(dif_pinmux_init(
mmio_region_from_addr(TOP_MATCHA_PINMUX_AON_BASE_ADDR), &pinmux));
+#if defined(MATCHA_SPARROW)
+ CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIob11,
+ kTopMatchaPinmuxOutselGpioGpio16));
+ CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIob12,
+ kTopMatchaPinmuxOutselGpioGpio17));
+#else
CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIod0,
kTopMatchaPinmuxOutselGpioGpio16));
CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIod1,
kTopMatchaPinmuxOutselGpioGpio17));
+#endif
CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIoc0,
kTopMatchaPinmuxOutselGpioGpio22));
CHECK_DIF_OK(dif_pinmux_input_select(&pinmux,
@@ -123,6 +135,19 @@
CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInCamI2cScl, kTopMatchaPinmuxInselIoa4));
// Mux ISP wrapper
+#if defined(MATCHA_SPARROW)
+ CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInVideoAudioWrapperSData0, kTopMatchaPinmuxInselIob0));
+ CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInVideoAudioWrapperSData1, kTopMatchaPinmuxInselIob1));
+ CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInVideoAudioWrapperSData2, kTopMatchaPinmuxInselIob2));
+ CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInVideoAudioWrapperSData3, kTopMatchaPinmuxInselIob3));
+ CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInVideoAudioWrapperSData4, kTopMatchaPinmuxInselIob4));
+ CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInVideoAudioWrapperSData5, kTopMatchaPinmuxInselIob5));
+ CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInVideoAudioWrapperSData6, kTopMatchaPinmuxInselIob6));
+ CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInVideoAudioWrapperSData7, kTopMatchaPinmuxInselIob7));
+ CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInVideoAudioWrapperSVsync, kTopMatchaPinmuxInselIob9));
+ CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInVideoAudioWrapperSHsync, kTopMatchaPinmuxInselIob8));
+ CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInVsiCtlWrapperIspSclk, kTopMatchaPinmuxInselIob10));
+#else
CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInIspWrapperSData0, kTopMatchaPinmuxInselIob0));
CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInIspWrapperSData1, kTopMatchaPinmuxInselIob1));
CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInIspWrapperSData2, kTopMatchaPinmuxInselIob2));
@@ -134,6 +159,7 @@
CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInIspWrapperSVsync, kTopMatchaPinmuxInselIoa2));
CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInIspWrapperSHsync, kTopMatchaPinmuxInselIoa3));
CHECK_DIF_OK(dif_pinmux_input_select(&pinmux, kTopMatchaPinmuxPeripheralInIspWrapperSPclk, kTopMatchaPinmuxInselIob8));
+#endif
CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIoa2, kTopMatchaPinmuxOutselConstantHighZ));
CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIoa3, kTopMatchaPinmuxOutselConstantHighZ));
@@ -152,9 +178,15 @@
CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIoa7, kTopMatchaPinmuxOutselCamCtrlCamTrig));
// Mux SPI_HOST2 (clk, mosi, cs)
+#if defined(MATCHA_SPARROW)
+ CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIor12, kTopMatchaPinmuxOutselSpiHost2Sck));
+ CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIor10, kTopMatchaPinmuxOutselSpiHost2Sd0));
+ CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIor13, kTopMatchaPinmuxOutselSpiHost2Csb));
+#else
CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIor12, kTopMatchaPinmuxOutselSpiHost2Sck));
CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIob10, kTopMatchaPinmuxOutselSpiHost2Sd0));
CHECK_DIF_OK(dif_pinmux_output_select(&pinmux, kTopMatchaPinmuxMioOutIor13, kTopMatchaPinmuxOutselSpiHost2Csb));
+#endif
CHECK_DIF_OK(
dif_gpio_init(mmio_region_from_addr(TOP_MATCHA_GPIO_BASE_ADDR), &gpio));
diff --git a/sw/device/examples/demo_hps_live/hps_demo_smc.c b/sw/device/examples/demo_hps_live/hps_demo_smc.c
index 5cd11cf..7741835 100644
--- a/sw/device/examples/demo_hps_live/hps_demo_smc.c
+++ b/sw/device/examples/demo_hps_live/hps_demo_smc.c
@@ -20,6 +20,7 @@
#include "hw/top_matcha/sw/autogen/top_matcha.h"
#include "sw/device/examples/testdata/kelvin_model_ml_bin.h" // Generated.
#include "sw/device/lib/arch/device.h"
+#include "sw/device/lib/base/math.h"
#include "sw/device/lib/camera_hm01b0.h"
#include "sw/device/lib/dif/dif_isp_wrapper.h"
#include "sw/device/lib/dif/dif_ml_top.h"
@@ -42,6 +43,14 @@
#define TOP_MATCHA_RAM_ML_DMEM_CMD_OFFSET_ADDR 0x003FF000
#define IMAGE_FRAME_SIZE 320 * 240
+#if defined(MATCHA_SPARROW)
+#define COUNTER_FREQ 1000000
+#else
+#define COUNTER_FREQ 1000
+#endif
+
+#define COUNTER_SCALE (COUNTER_FREQ / 1000)
+
OTTF_DEFINE_TEST_CONFIG();
static dif_isp_wrapper_t isp_wrapper;
@@ -127,11 +136,19 @@
// NOTE: This initialization is superfluous, since the `default` case below
// is effectively noreturn, but the compiler is unable to prove this.
switch (interrupt_id) {
+#if defined(MATCHA_SPARROW)
+ case kTopMatchaPlicIrqIdVideoAudioWrapperIsp:
+#else
case kTopMatchaPlicIrqIdIspWrapperIsp:
+#endif
isp_frame_done = true;
CHECK_DIF_OK(dif_isp_wrapper_isp_irq_done(&isp_wrapper));
break;
+#if defined(MATCHA_SPARROW)
+ case kTopMatchaPlicIrqIdVideoAudioWrapperMi:
+#else
case kTopMatchaPlicIrqIdIspWrapperMi:
+#endif
CHECK_DIF_OK(dif_isp_wrapper_mi_irq_done(&isp_wrapper));
break;
default:
@@ -165,18 +182,31 @@
// Check if the interrupted peripheral is ISP WRAPPER.
top_matcha_plic_peripheral_smc_t peripheral_id =
top_matcha_plic_interrupt_for_peripheral_smc[interrupt_id];
+#if defined(MATCHA_SPARROW)
+ CHECK(peripheral_id == kTopMatchaPlicPeripheralVideoAudioWrapper ||
+ peripheral_id == kTopMatchaPlicPeripheralCamI2c ||
+ peripheral_id == kTopMatchaPlicPeripheralSpiHost2 ||
+ peripheral_id == kTopMatchaPlicPeripheralTlulMailboxSmc ||
+ peripheral_id == kTopMatchaPlicPeripheralMlTop,
+ "Unexpected peripheral in ISR: %d", peripheral_id);
+#else
CHECK(peripheral_id == kTopMatchaPlicPeripheralIspWrapper ||
peripheral_id == kTopMatchaPlicPeripheralCamI2c ||
peripheral_id == kTopMatchaPlicPeripheralSpiHost2 ||
peripheral_id == kTopMatchaPlicPeripheralTlulMailboxSmc ||
peripheral_id == kTopMatchaPlicPeripheralMlTop,
"Unexpected peripheral in ISR: %d", peripheral_id);
+#endif
switch (peripheral_id) {
case kTopMatchaPlicPeripheralCamI2c: {
CHECK_DIF_OK(camera_hm01b0_irq_handler(interrupt_id));
break;
}
+#if defined(MATCHA_SPARROW)
+ case kTopMatchaPlicPeripheralVideoAudioWrapper:
+#else
case kTopMatchaPlicPeripheralIspWrapper:
+#endif
handle_isp_wrapper_isrs(interrupt_id);
break;
case kTopMatchaPlicPeripheralTlulMailboxSmc: {
@@ -207,10 +237,17 @@
static void plic_smc_configure_irqs(dif_rv_plic_t *plic) {
CHECK_DIF_OK(camera_hm01b0_irq_init(plic, kTopMatchaPlicTargetIbex0Smc));
// Set IRQ priorities to MAX
+#if defined(MATCHA_SPARROW)
+ CHECK_DIF_OK(dif_rv_plic_irq_set_priority(
+ plic, kTopMatchaPlicIrqIdVideoAudioWrapperIsp, kDifRvPlicMaxPriority));
+ CHECK_DIF_OK(dif_rv_plic_irq_set_priority(
+ plic, kTopMatchaPlicIrqIdVideoAudioWrapperMi, kDifRvPlicMaxPriority));
+#else
CHECK_DIF_OK(dif_rv_plic_irq_set_priority(
plic, kTopMatchaPlicIrqIdIspWrapperIsp, kDifRvPlicMaxPriority));
CHECK_DIF_OK(dif_rv_plic_irq_set_priority(
plic, kTopMatchaPlicIrqIdIspWrapperMi, kDifRvPlicMaxPriority));
+#endif
CHECK_DIF_OK(dif_rv_plic_irq_set_priority(
plic, kTopMatchaPlicIrqIdMlTopFinish, kDifRvPlicMaxPriority));
CHECK_DIF_OK(dif_rv_plic_irq_set_priority(plic, kTopMatchaPlicIrqIdMlTopFault,
@@ -222,12 +259,21 @@
// Enable IRQs in PLIC
// Enable ISP IRQs
+#if defined(MATCHA_SPARROW)
+ CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
+ plic, kTopMatchaPlicIrqIdVideoAudioWrapperIsp, kTopMatchaPlicTargetIbex0Smc,
+ kDifToggleEnabled));
+ CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
+ plic, kTopMatchaPlicIrqIdVideoAudioWrapperMi, kTopMatchaPlicTargetIbex0Smc,
+ kDifToggleEnabled));
+#else
CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
plic, kTopMatchaPlicIrqIdIspWrapperIsp, kTopMatchaPlicTargetIbex0Smc,
kDifToggleEnabled));
CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
plic, kTopMatchaPlicIrqIdIspWrapperMi, kTopMatchaPlicTargetIbex0Smc,
kDifToggleEnabled));
+#endif
// Enable Mailbox IRQs
CHECK_DIF_OK(dif_rv_plic_irq_set_enabled(
plic, kTopMatchaPlicIrqIdTlulMailboxSmcRtirq,
@@ -246,8 +292,13 @@
void _ottf_main(void) {
test_status_set(kTestStatusInTest);
+#if defined(MATCHA_SPARROW)
+ CHECK_DIF_OK(dif_isp_wrapper_init(
+ mmio_region_from_addr(TOP_MATCHA_VIDEO_AUDIO_WRAPPER_ISP_BASE_ADDR), &isp_wrapper));
+#else
CHECK_DIF_OK(dif_isp_wrapper_init(
mmio_region_from_addr(TOP_MATCHA_ISP_WRAPPER_BASE_ADDR), &isp_wrapper));
+#endif
CHECK_DIF_OK(dif_rv_plic_init(
mmio_region_from_addr(TOP_MATCHA_RV_PLIC_SMC_BASE_ADDR), &plic_smc));
LOG_INFO("Configure isp into CAM live mode.");
@@ -350,7 +401,7 @@
CHECK_DIF_OK(dif_rv_timer_init(
mmio_region_from_addr(TOP_MATCHA_RV_TIMER_SMC_BASE_ADDR), &rv_timer));
CHECK_DIF_OK(dif_rv_timer_approximate_tick_params(kClockFreqPeripheralHz,
- 1000, &tick_params));
+ COUNTER_FREQ, &tick_params));
CHECK_DIF_OK(dif_rv_timer_set_tick_params(&rv_timer, 0, tick_params));
CHECK_DIF_OK(
dif_rv_timer_counter_set_enabled(&rv_timer, 0, kDifToggleEnabled));
@@ -367,6 +418,6 @@
handle_isp_wrapper_isp_irq();
CHECK_DIF_OK(dif_rv_timer_counter_read(&rv_timer, 0, &counter_end));
LOG_INFO("Capture + eval + render took %d ms",
- (uint32_t)(counter_end - counter_start));
+ (uint32_t)udiv64_slow(counter_end - counter_start, COUNTER_SCALE, NULL));
}
}
diff --git a/sw/device/lib/arch/device_sc_asic.c b/sw/device/lib/arch/device_sc_asic.c
index 27d3dc6..00fe315 100644
--- a/sw/device/lib/arch/device_sc_asic.c
+++ b/sw/device/lib/arch/device_sc_asic.c
@@ -41,8 +41,8 @@
const uint64_t kClockFreqAonHz = 200 * 1000; // 200kHz
const uint64_t kClockFreqSpiFlashHz = 24 * 1000 * 1000; // 24MHz
-const uint64_t kClockFreqSpiDisplayHz = 5 * 1000 * 1000; // 5MHz
-const uint64_t kClockFreqSpiPassthroughHz = 5 * 1000 * 1000; // 5MHz
+const uint64_t kClockFreqSpiDisplayHz = 24 * 1000 * 1000; // 5MHz
+const uint64_t kClockFreqSpiPassthroughHz = 24 * 1000 * 1000; // 5MHz
const uint64_t kUartBaudrate = 115200;
diff --git a/sw/device/lib/arch/device_smc_asic.c b/sw/device/lib/arch/device_smc_asic.c
index 5133734..26ccf05 100644
--- a/sw/device/lib/arch/device_smc_asic.c
+++ b/sw/device/lib/arch/device_smc_asic.c
@@ -41,8 +41,8 @@
const uint64_t kClockFreqAonHz = 200 * 1000; // 200kHz
const uint64_t kClockFreqSpiFlashHz = 24 * 1000 * 1000; // 24MHz
-const uint64_t kClockFreqSpiDisplayHz = 5 * 1000 * 1000; // 5MHz
-const uint64_t kClockFreqSpiPassthroughHz = 5 * 1000 * 1000; // 5MHz
+const uint64_t kClockFreqSpiDisplayHz = 24 * 1000 * 1000; // 5MHz
+const uint64_t kClockFreqSpiPassthroughHz = 24 * 1000 * 1000; // 5MHz
const uint64_t kUartBaudrate = 115200;
diff --git a/sw/device/lib/camera_hm01b0.c b/sw/device/lib/camera_hm01b0.c
index 337a59a..56e8b18 100644
--- a/sw/device/lib/camera_hm01b0.c
+++ b/sw/device/lib/camera_hm01b0.c
@@ -17,6 +17,7 @@
#include "sw/device/lib/camera_hm01b0.h"
#include "hw/top_matcha/sw/autogen/top_matcha.h"
+#include "sw/device/lib/base/math.h"
#include "sw/device/lib/camera_hm01b0_regs.h"
#include "sw/device/lib/dif/dif_base.h"
#include "sw/device/lib/dif/dif_i2c.h"
@@ -100,12 +101,13 @@
}
dif_result_t camera_hm01b0_init(void) {
+ uint64_t i2cclk = udiv64_slow(1000000000U, 24000000, NULL);
CHECK_DIF_OK(dif_i2c_init(mmio_region_from_addr(TOP_MATCHA_CAM_I2C_BASE_ADDR),
&cam_i2c));
dif_i2c_config_t cam_i2c_config;
dif_i2c_timing_config_t cam_i2c_timing_config = {
.lowest_target_device_speed = kDifI2cSpeedStandard,
- .clock_period_nanos = 400,
+ .clock_period_nanos = i2cclk,
.sda_rise_nanos = 800,
.sda_fall_nanos = 600,
.scl_period_nanos = 1000000 / 100000,
@@ -173,7 +175,11 @@
CHECK_DIF_OK(camera_hm01b0_write_reg(HM01B0_SW_RESET, 0x00));
CHECK_DIF_OK(camera_hm01b0_write_reg(HM01B0_MODE_SELECT, 0x00));
+#if defined(MATCHA_SPARROW)
+ CHECK_DIF_OK(camera_hm01b0_write_reg(HM01B0_IMAGE_ORIENTATION, 0x00));
+#else
CHECK_DIF_OK(camera_hm01b0_write_reg(HM01B0_IMAGE_ORIENTATION, 0x03));
+#endif
CHECK_DIF_OK(camera_hm01b0_write_reg(HM01B0_BLC_TGT, 0x08));
CHECK_DIF_OK(camera_hm01b0_write_reg(HM01B0_BLC2_TGT, 0x08));
CHECK_DIF_OK(camera_hm01b0_write_reg(0x3044, 0x0A));
diff --git a/sw/device/lib/dif/BUILD b/sw/device/lib/dif/BUILD
index 19a0f06..8008deb 100644
--- a/sw/device/lib/dif/BUILD
+++ b/sw/device/lib/dif/BUILD
@@ -50,8 +50,14 @@
srcs = [
"autogen/dif_isp_wrapper_autogen.c",
"autogen/dif_isp_wrapper_autogen.h",
- "dif_isp_wrapper.c",
- ],
+ ] + select({
+ "//rules:sparrow_platform": [
+ "dif_isp_wrapper_pico.c",
+ ],
+ "//conditions:default": [
+ "dif_isp_wrapper.c",
+ ],
+ }),
hdrs = [
"dif_isp_wrapper.h",
"@isp_yocto//include:yocto_isp_register_address.h",
diff --git a/sw/device/lib/dif/dif_isp_wrapper_pico.c b/sw/device/lib/dif/dif_isp_wrapper_pico.c
new file mode 100644
index 0000000..ab04034
--- /dev/null
+++ b/sw/device/lib/dif/dif_isp_wrapper_pico.c
@@ -0,0 +1,1400 @@
+// Copyright 2022 Google LLC.
+// Copyright lowRISC contributors.
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+#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 "isp_wrapper_regs.h" // Generated.
+
+// ISP configuration:
+// size: 120 * 64, colar bar, force triggering interrupts(isp_irq and mi_irq)
+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, 0x0000, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0010, 0x00000049);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0014, 0x00000000);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400, 0x00206016);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0004, 0x00000011);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0008, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x000C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0010, 0x00000078);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0014, 0x00000040);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x04,
+ 0x00d9c054);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x08,
+ 0x001e0040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x0C, 0x002e400f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x10, 0x00484004);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x14, 0x00454001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x18,
+ 0x000a0015);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x1C,
+ 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x20,
+ 0x4d777439);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x24,
+ 0x00000003);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x000, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x004, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x008, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x00C, 0x00000078);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x010, 0x00000040);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x624 + 0x0, 0x00010001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x624 + 0x4, 0x01580393);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x0, 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x4, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x8, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0xC, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x10, 0x00000000);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x000, 0x80000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x004, 0x0000000c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x008, 0x00000008);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x00C, 0x00000015);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x010, 0x00000008);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x800 + 0x0,
+ 0x011a0109);
+ mmio_region_write32(isp_wrapper->base_addr, 0x800 + 0x4, 0x01260109);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x810, 0x00000004);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x000, 0x000003f3);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x004,
+ 0x0000001a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x008,
+ 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x00C, 0x00000029);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x010, 0x00000043);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x014,
+ 0x00032040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x018, 0x0000000c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x01C, 0x0000000a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x020, 0x00000008);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x024, 0x00000004);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x028,
+ 0x00000000);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x000, 0x0000000c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x004,
+ 0x0020003c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x008, 0x002b01e5);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x00C, 0x01f10014);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x010, 0x01fa0000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x014, 0x00050010);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x018, 0x00050010);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x04, 0x000000f6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x08, 0x00000252);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x0C, 0x000000c9);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x10, 0x000000db);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x14, 0x00000036);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x18, 0x00000269);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x1C, 0x0000008a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x20, 0x00000299);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x24, 0x00000217);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x28, 0x00000118);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x2C, 0x000001d1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x30, 0x000003ed);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x34, 0x000001c1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x38, 0x000000f8);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x3C, 0x0000026a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x40, 0x000002f4);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x44, 0x0000024e);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0550, 0x80000006);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0554, 0x00000060);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0558, 0x0000002f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x055c, 0x00000009);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0560, 0x0000000d);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0564, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0568, 0x0000a504);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x056C, 0x11b98318);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x0, 0x00000026);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x4, 0x0000004b);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x8, 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0xC, 0x000001ea);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x10, 0x000001d6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x14, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x18, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x1C, 0x000001ca);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x20, 0x000001f6);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0xA24,
+ 0x00000000);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A30, 0x000000dd);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A34, 0x000007c6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A38, 0x000007df);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A3C, 0x000007bf);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A40, 0x000000ec);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A44, 0x000007de);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A48, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A4C, 0x000007ae);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A50, 0x000000e0);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A54, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A58, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A5C, 0x00000000);
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B00, 0x0004007c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B0C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B10, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B18, 0x00000001);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x04 + 0x0C00,
+ 0x00008c10);
+ mmio_region_write32(isp_wrapper->base_addr, 0x08 + 0x0C00,
+ 0x000041f5);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0C + 0x0C00,
+ 0x0000604f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x10 + 0x0C00,
+ 0x0000bad1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x14 + 0x0C00,
+ 0x0000d46c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x18 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x1C + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x20 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x24 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x6C + 0x0C00,
+ 0x0000006a);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x08 + 0x0E00,
+ 0x5a000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0C + 0x0E00,
+ 0x00001e00);
+ mmio_region_write32(isp_wrapper->base_addr, 0x10 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x18 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x1C + 0x0E00,
+ 0x5a002000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x20 + 0x0E00,
+ 0x00001e00);
+ mmio_region_write32(isp_wrapper->base_addr, 0x24 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x2C + 0x0E00,
+ 0x5a004000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x30 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x34 + 0x0E00,
+ 0x00000000);
+
+ mmio_region_write32(isp_wrapper->base_addr, 0xF8 + 0x0E00, 0x0000007d);
+ mmio_region_write32(isp_wrapper->base_addr, 0x104 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x108 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x110 + 0x0E00,
+ 0x00000000);
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x130 + 0x0E00,
+ 0x00008000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x134 + 0x0E00,
+ 0x0000a000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x138 + 0x0E00,
+ 0x0000c000);
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x150 + 0x0E00,
+ 0x00000078);
+ mmio_region_write32(isp_wrapper->base_addr, 0x15C + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x160 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x164 + 0x0E00,
+ 0x00000078);
+ mmio_region_write32(isp_wrapper->base_addr, 0x168 + 0x0E00,
+ 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x16C + 0x0E00,
+ 0x00001e00);
+
+
+ mmio_region_write32(isp_wrapper->base_addr, 0x00 + 0x0E00, 0x007a2801);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x00, 0x00000c63);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0000, 0x00207257);
+ mmio_region_write32(isp_wrapper->base_addr, 0x00 + 0x0C00, 0x00000120);
+ mmio_region_write32(isp_wrapper->base_addr, 0x04 + 0x0E00, 0x00000050);
+ return kDifOk;
+}
+
+// ISP configuration:
+// size: 64 * 64, TPG(test pattern generation mode)
+dif_result_t
+dif_isp_wrapper_set_tpg_64_64_en(const dif_isp_wrapper_t *isp_wrapper)
+{
+ if (isp_wrapper == NULL) {
+ return kDifBadArg;
+ }
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0000, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0010, 0x00000049);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0014, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0000, 0x00206016);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0004, 0x00000011);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0008, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x000C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0010, 0x00000080);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0014, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x04,
+ 0x00d1c054);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x08,
+ 0x00200040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x0C, 0x003e400f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x10, 0x002e4004);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x14, 0x00454001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x18,
+ 0x000a8015);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x1C,
+ 0x00000010);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x20,
+ 0x4d777439);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x24,
+ 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x000, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x004, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x008, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x00C, 0x00000080);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x010, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x624 + 0x0, 0x00010001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x624 + 0x4, 0x01580393);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x0, 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x4, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x8, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0xC, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x10, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x000, 0x80000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x004, 0x00000017);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x008, 0x0000001e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x00C, 0x00000013);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x010, 0x00000006);
+ mmio_region_write32(isp_wrapper->base_addr, 0x800 + 0x0,
+ 0x011a0109);
+ mmio_region_write32(isp_wrapper->base_addr, 0x800 + 0x4, 0x01260109);
+ mmio_region_write32(isp_wrapper->base_addr, 0x810, 0x00000004);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x000, 0x000003f3);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x004,
+ 0x0000001a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x008,
+ 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x00C, 0x00000029);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x010, 0x00000043);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x014,
+ 0x00032040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x018, 0x0000000c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x01C, 0x0000000a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x020, 0x00000008);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x024, 0x00000004);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x028,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x000, 0x0000000c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x004,
+ 0x00200040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x008, 0x002b01e5);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x00C, 0x01f10014);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x010, 0x01fa0000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x014, 0x00050010);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x018, 0x00050010);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x04, 0x000000f6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x08, 0x00000252);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x0C, 0x000000c9);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x10, 0x000000db);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x14, 0x00000036);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x18, 0x00000269);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x1C, 0x0000008a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x20, 0x00000299);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x24, 0x00000217);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x28, 0x00000118);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x2C, 0x000001d1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x30, 0x000003ed);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x34, 0x000001c1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x38, 0x000000f8);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x3C, 0x0000026a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x40, 0x000002f4);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x44, 0x0000024e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0550, 0x80000006);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0554, 0x00000074);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0558, 0x00000021);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x055c, 0x00000006);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0560, 0x00000010);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0564, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0568, 0x0000a504);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x056C, 0x11b98318);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x0, 0x00000026);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x4, 0x0000004b);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x8, 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0xC, 0x000001ea);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x10, 0x000001d6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x14, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x18, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x1C, 0x000001ca);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x20, 0x000001f6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0xA24,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A30, 0x000000dd);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A34, 0x000007c6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A38, 0x000007df);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A3C, 0x000007bf);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A40, 0x000000ec);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A44, 0x000007de);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A48, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A4C, 0x000007ae);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A50, 0x000000e0);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A54, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A58, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A5C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B00, 0x0004007c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B0C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B10, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B18, 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x04 + 0x0C00,
+ 0x00007efe);
+ mmio_region_write32(isp_wrapper->base_addr, 0x08 + 0x0C00,
+ 0x00007df8);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0C + 0x0C00,
+ 0x00007df8);
+ mmio_region_write32(isp_wrapper->base_addr, 0x10 + 0x0C00,
+ 0x00008c10);
+ mmio_region_write32(isp_wrapper->base_addr, 0x14 + 0x0C00,
+ 0x0000bad1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x18 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x1C + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x20 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x24 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x6C + 0x0C00,
+ 0x0000006a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x08 + 0x0E00,
+ 0x5a000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0C + 0x0E00,
+ 0x00001000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x10 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x18 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x1C + 0x0E00,
+ 0x5a001000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x20 + 0x0E00,
+ 0x00001000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x24 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x2C + 0x0E00,
+ 0x5a002000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x30 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x34 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0xF8 + 0x0E00, 0x0000007d);
+ mmio_region_write32(isp_wrapper->base_addr, 0x104 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x108 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x110 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x130 + 0x0E00,
+ 0x00004000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x134 + 0x0E00,
+ 0x00005000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x138 + 0x0E00,
+ 0x00006000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x150 + 0x0E00,
+ 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x15C + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x160 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x164 + 0x0E00,
+ 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x168 + 0x0E00,
+ 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x16C + 0x0E00,
+ 0x00001000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x00 + 0x0E00, 0x007a2801);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x00, 0x00000c63);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0000, 0x00207257);
+ mmio_region_write32(isp_wrapper->base_addr, 0x00 + 0x0C00, 0x00000103);
+ mmio_region_write32(isp_wrapper->base_addr, 0x04 + 0x0E00, 0x00000050);
+ return kDifOk;
+}
+
+dif_result_t
+dif_isp_wrapper_set_tpg_64_64_en_for_enc(const dif_isp_wrapper_t *isp_wrapper)
+{
+ if (isp_wrapper == NULL) {
+ return kDifBadArg;
+ }
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0000, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0010, 0x00000049);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0014, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0000, 0x00206016);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0004, 0x00000011);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0008, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x000C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0010, 0x00000080);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0014, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x04,
+ 0x00d1c054);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x08,
+ 0x00200040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x0C, 0x003e400f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x10, 0x002e4004);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x14, 0x00454001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x18,
+ 0x000a8015);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x1C,
+ 0x00000010);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x20,
+ 0x4d777439);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x24,
+ 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x000, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x004, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x008, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x00C, 0x00000080);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x010, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x624 + 0x0, 0x00010001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x624 + 0x4, 0x01580393);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x0, 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x4, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x8, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0xC, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x10, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x000, 0x80000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x004, 0x00000017);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x008, 0x0000001e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x00C, 0x00000013);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x010, 0x00000006);
+ mmio_region_write32(isp_wrapper->base_addr, 0x800 + 0x0,
+ 0x011a0109);
+ mmio_region_write32(isp_wrapper->base_addr, 0x800 + 0x4, 0x01260109);
+ mmio_region_write32(isp_wrapper->base_addr, 0x810, 0x00000004);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x000, 0x000003f3);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x004,
+ 0x0000001a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x008,
+ 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x00C, 0x00000029);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x010, 0x00000043);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x014,
+ 0x00032040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x018, 0x0000000c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x01C, 0x0000000a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x020, 0x00000008);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x024, 0x00000004);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x028,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x000, 0x0000000c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x004,
+ 0x00200040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x008, 0x002b01e5);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x00C, 0x01f10014);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x010, 0x01fa0000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x014, 0x00050010);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x018, 0x00050010);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x04, 0x000000f6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x08, 0x00000252);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x0C, 0x000000c9);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x10, 0x000000db);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x14, 0x00000036);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x18, 0x00000269);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x1C, 0x0000008a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x20, 0x00000299);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x24, 0x00000217);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x28, 0x00000118);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x2C, 0x000001d1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x30, 0x000003ed);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x34, 0x000001c1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x38, 0x000000f8);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x3C, 0x0000026a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x40, 0x000002f4);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x44, 0x0000024e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0550, 0x80000006);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0554, 0x00000074);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0558, 0x00000021);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x055c, 0x00000006);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0560, 0x00000010);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0564, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0568, 0x0000a504);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x056C, 0x11b98318);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x0, 0x00000026);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x4, 0x0000004b);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x8, 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0xC, 0x000001ea);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x10, 0x000001d6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x14, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x18, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x1C, 0x000001ca);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x20, 0x000001f6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0xA24,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A30, 0x000000dd);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A34, 0x000007c6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A38, 0x000007df);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A3C, 0x000007bf);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A40, 0x000000ec);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A44, 0x000007de);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A48, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A4C, 0x000007ae);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A50, 0x000000e0);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A54, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A58, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A5C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B00, 0x0004007c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B0C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B10, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B18, 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x04 + 0x0C00,
+ 0x00007efe);
+ mmio_region_write32(isp_wrapper->base_addr, 0x08 + 0x0C00,
+ 0x00007df8);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0C + 0x0C00,
+ 0x00007df8);
+ mmio_region_write32(isp_wrapper->base_addr, 0x10 + 0x0C00,
+ 0x00008c10);
+ mmio_region_write32(isp_wrapper->base_addr, 0x14 + 0x0C00,
+ 0x0000bad1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x18 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x1C + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x20 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x24 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x6C + 0x0C00,
+ 0x0000006a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x08 + 0x0E00,
+ 0x55000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0C + 0x0E00,
+ 0x00001000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x10 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x18 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x1C + 0x0E00,
+ 0x55001000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x20 + 0x0E00,
+ 0x00001000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x24 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x2C + 0x0E00,
+ 0x55002000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x30 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x34 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0xF8 + 0x0E00, 0x0000007d);
+ mmio_region_write32(isp_wrapper->base_addr, 0x104 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x108 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x110 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x130 + 0x0E00,
+ 0x00004000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x134 + 0x0E00,
+ 0x00005000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x138 + 0x0E00,
+ 0x00006000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x150 + 0x0E00,
+ 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x15C + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x160 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x164 + 0x0E00,
+ 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x168 + 0x0E00,
+ 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x16C + 0x0E00,
+ 0x00001000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x00 + 0x0E00, 0x007a2801);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x00, 0x00000c63);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0000, 0x00207257);
+ mmio_region_write32(isp_wrapper->base_addr, 0x00 + 0x0C00, 0x00000103);
+ mmio_region_write32(isp_wrapper->base_addr, 0x04 + 0x0E00, 0x00000050);
+ return kDifOk;
+}
+
+dif_result_t
+dif_isp_wrapper_set_ml_mem_byp_324x324_en(const dif_isp_wrapper_t *isp_wrapper)
+{
+ if (isp_wrapper == NULL) {
+ return kDifBadArg;
+ }
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0000, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0010, 0x00000049);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0014, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0000, 0x00206018);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0004, 0x00000199);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0008, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x000C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0010, 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0014, 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x04,
+ 0x00ad3f05);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x08,
+ 0x00510144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x0C, 0x0d6e000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x10, 0x028b8004);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x14, 0x0bad0001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x18,
+ 0x04a1415b);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x1C,
+ 0x00002a97);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x20,
+ 0x4d777439);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x24,
+ 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x000, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x004, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x008, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x00C, 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x010, 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x624 + 0x0, 0x00010001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x624 + 0x4, 0x01580393);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x0, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x4, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x8, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0xC, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x10, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x000, 0x80000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x004, 0x00000020);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x008, 0x00000028);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x00C, 0x00000030);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x010, 0x00000036);
+ mmio_region_write32(isp_wrapper->base_addr, 0x800 + 0x0,
+ 0x011a00d1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x800 + 0x4, 0x01260109);
+ mmio_region_write32(isp_wrapper->base_addr, 0x810, 0x00000414);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x000, 0x00000692);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x004,
+ 0x00000167);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x008,
+ 0x00000142);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x00C, 0x00000177);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x010, 0x000001c7);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x014,
+ 0x0006698a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x018, 0x00000032);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x01C, 0x00000023);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x020, 0x00000019);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x024, 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x028,
+ 0x00000006);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x000, 0x0000000a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x004,
+ 0x00a200a2);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x008, 0x00170118);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x00C, 0x01d101ed);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x010, 0x01c100f8);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x014, 0x00020005);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x018, 0x00050019);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x04, 0x000002f4);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x08, 0x0000024e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x0C, 0x00000083);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x10, 0x000001af);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x14, 0x00000346);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x18, 0x000000a5);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x1C, 0x00000304);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x20, 0x00000111);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x24, 0x000003b9);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x28, 0x00000383);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x2C, 0x00000018);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x30, 0x0000028c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x34, 0x0000001e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x38, 0x00000087);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x3C, 0x00000047);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x40, 0x000001a4);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x44, 0x000002bc);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0550, 0x80000007);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0554, 0x0000011c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0558, 0x000000c1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x055c, 0x0000001e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0560, 0x00000078);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0564, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0568, 0x0000c2e6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x056C, 0x8ef9ad1e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x0, 0x00000026);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x4, 0x0000004b);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x8, 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0xC, 0x000001ea);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x10, 0x000001d6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x14, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x18, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x1C, 0x000001ca);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x20, 0x000001f6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0xA24,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A30, 0x000000dd);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A34, 0x000007c6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A38, 0x000007df);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A3C, 0x000007bf);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A40, 0x000000ec);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A44, 0x000007de);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A48, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A4C, 0x000007ae);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A50, 0x000000e0);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A54, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A58, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A5C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B00, 0x00000020);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B0C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B10, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B18, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x04 + 0x0C00,
+ 0x00008469);
+ mmio_region_write32(isp_wrapper->base_addr, 0x08 + 0x0C00,
+ 0x0000a674);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0C + 0x0C00,
+ 0x0000fa3d);
+ mmio_region_write32(isp_wrapper->base_addr, 0x10 + 0x0C00,
+ 0x0000ef61);
+ mmio_region_write32(isp_wrapper->base_addr, 0x14 + 0x0C00,
+ 0x0000f9b7);
+ mmio_region_write32(isp_wrapper->base_addr, 0x18 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x1C + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x20 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x24 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x6C + 0x0C00,
+ 0x000000fa);
+ mmio_region_write32(isp_wrapper->base_addr, 0x08 + 0x0E00,
+ 0x5a300000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0C + 0x0E00,
+ 0x00019f20);
+ mmio_region_write32(isp_wrapper->base_addr, 0x10 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x18 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x1C + 0x0E00,
+ 0x5a320000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x20 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x24 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x2C + 0x0E00,
+ 0x5a320000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x30 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x34 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0xF8 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x104 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x108 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x110 + 0x0E00,
+ 0x00000003);
+ mmio_region_write32(isp_wrapper->base_addr, 0x130 + 0x0E00,
+ 0x5a340000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x134 + 0x0E00,
+ 0x5a360000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x138 + 0x0E00,
+ 0x5a360000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x150 + 0x0E00,
+ 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x15C + 0x0E00,
+ 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x160 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x164 + 0x0E00,
+ 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x168 + 0x0E00,
+ 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x16C + 0x0E00,
+ 0x00019a10);
+ mmio_region_write32(isp_wrapper->base_addr, 0x00 + 0x0E00, 0x003a2808);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x00, 0x00000868);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0000, 0x00207259);
+ mmio_region_write32(isp_wrapper->base_addr, 0x00 + 0x0C00, 0x00000190);
+ mmio_region_write32(isp_wrapper->base_addr, 0x04 + 0x0E00, 0x000000b0);
+ return kDifOk;
+}
+
+dif_result_t _dif_isp_wrapper_set_raw_320x240_byp_320x240_en(
+ const dif_isp_wrapper_t *isp_wrapper,
+ 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, 0x0000 + 0x0000, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0010, 0x00000049);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0014, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0000, 0x00206018);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0004, 0x000199);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0008, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x000C, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0010, 0x00000140);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0014, 0x000000f0);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x04,
+ 0x00ad3f05);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x08,
+ 0x00510144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x0C, 0x0d6e000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x10, 0x028b8004);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x14, 0x0bad0001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x18,
+ 0x04a1415b);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x1C,
+ 0x00002a97);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x20,
+ 0x4d777439);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x24,
+ 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x000, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x004, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x008, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x00C, 0x00000140);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x010, 0x000000f0);
+ mmio_region_write32(isp_wrapper->base_addr, 0x624 + 0x0, 0x00010001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x624 + 0x4, 0x01580393);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x0, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x4, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x8, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0xC, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x10, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x000, 0x80000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x004, 0x00000020);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x008, 0x00000028);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x00C, 0x00000030);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x010, 0x00000036);
+ mmio_region_write32(isp_wrapper->base_addr, 0x800 + 0x0,
+ 0x011a00d1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x800 + 0x4, 0x01260109);
+ mmio_region_write32(isp_wrapper->base_addr, 0x810, 0x00000414);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x000, 0x00000692);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x004,
+ 0x00000167);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x008,
+ 0x00000142);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x00C, 0x00000177);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x010, 0x000001c7);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x014,
+ 0x0006698a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x018, 0x00000032);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x01C, 0x00000023);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x020, 0x00000019);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x024, 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x028,
+ 0x00000006);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x000, 0x0000000a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x004,
+ 0x00a200a2);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x008, 0x00170118);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x00C, 0x01d101ed);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x010, 0x01c100f8);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x014, 0x00020005);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x018, 0x00050019);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x04, 0x000002f4);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x08, 0x0000024e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x0C, 0x00000083);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x10, 0x000001af);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x14, 0x00000346);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x18, 0x000000a5);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x1C, 0x00000304);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x20, 0x00000111);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x24, 0x000003b9);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x28, 0x00000383);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x2C, 0x00000018);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x30, 0x0000028c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x34, 0x0000001e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x38, 0x00000087);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x3C, 0x00000047);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x40, 0x000001a4);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x44, 0x000002bc);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0550, 0x80000007);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0554, 0x0000011c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0558, 0x000000c1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x055c, 0x0000001e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0560, 0x00000078);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0564, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0568, 0x0000c2e6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x056C, 0x8ef9ad1e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x0, 0x00000026);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x4, 0x0000004b);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x8, 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0xC, 0x000001ea);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x10, 0x000001d6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x14, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x18, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x1C, 0x000001ca);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x20, 0x000001f6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0xA24,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A30, 0x000000dd);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A34, 0x000007c6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A38, 0x000007df);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A3C, 0x000007bf);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A40, 0x000000ec);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A44, 0x000007de);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A48, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A4C, 0x000007ae);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A50, 0x000000e0);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A54, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A58, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A5C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B00, 0x00000020);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B0C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B10, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B18, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x04 + 0x0C00,
+ 0x00008469);
+ mmio_region_write32(isp_wrapper->base_addr, 0x08 + 0x0C00,
+ 0x0000a674);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0C + 0x0C00,
+ 0x0000fa3d);
+ mmio_region_write32(isp_wrapper->base_addr, 0x10 + 0x0C00,
+ 0x0000ef61);
+ mmio_region_write32(isp_wrapper->base_addr, 0x14 + 0x0C00,
+ 0x0000f9b7);
+ mmio_region_write32(isp_wrapper->base_addr, 0x18 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x1C + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x20 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x24 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x6C + 0x0C00,
+ 0x000000fa);
+ mmio_region_write32(isp_wrapper->base_addr, 0x08 + 0x0E00,
+ y_base_ad_init_addr);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0C + 0x0E00,
+ 0x00012c00);
+ mmio_region_write32(isp_wrapper->base_addr, 0x10 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x18 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x1C + 0x0E00,
+ cb_base_ad_init_addr);
+ mmio_region_write32(isp_wrapper->base_addr, 0x20 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x24 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x2C + 0x0E00,
+ cr_base_ad_init_addr);
+ mmio_region_write32(isp_wrapper->base_addr, 0x30 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x34 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0xF8 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x104 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x108 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x110 + 0x0E00,
+ 0x00000003);
+ mmio_region_write32(isp_wrapper->base_addr, 0x130 + 0x0E00,
+ y_base_ad_init2_addr);
+ mmio_region_write32(isp_wrapper->base_addr, 0x134 + 0x0E00,
+ cb_base_ad_init2_addr);
+ mmio_region_write32(isp_wrapper->base_addr, 0x138 + 0x0E00,
+ cr_base_ad_init2_addr);
+ mmio_region_write32(isp_wrapper->base_addr, 0x150 + 0x0E00,
+ 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x15C + 0x0E00,
+ 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x160 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x164 + 0x0E00,
+ 0x00000140);
+ mmio_region_write32(isp_wrapper->base_addr, 0x168 + 0x0E00,
+ 0x000000f0);
+ mmio_region_write32(isp_wrapper->base_addr, 0x16C + 0x0E00,
+ 0x00012c00);
+ mmio_region_write32(isp_wrapper->base_addr, 0x00 + 0x0E00, 0x003a2808);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x00, 0x00000868);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0000, 0x00207251);
+ mmio_region_write32(isp_wrapper->base_addr, 0x00 + 0x0C00, 0x00000190);
+ mmio_region_write32(isp_wrapper->base_addr, 0x04 + 0x0E00, 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);
+}
+
+
+// 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, 0x0000 + 0x0000, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0010, 0x00000049);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0014, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0000, 0x00206018);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0004, 0x00000199);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0008, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x000C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0010, 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0014, 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x04,
+ 0x00ad3f05);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x08,
+ 0x00510144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x0C, 0x0d6e000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x10, 0x028b8004);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x14, 0x0bad0001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x18,
+ 0x04a1415b);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x1C,
+ 0x00002a97);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x20,
+ 0x4d777439);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x24,
+ 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x000, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x004, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x008, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x00C, 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0600 + 0x010, 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x624 + 0x0, 0x00010001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x624 + 0x4, 0x01580393);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x0, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x4, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x8, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0xC, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x700 + 0x10, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x000, 0x80000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x004, 0x00000020);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x008, 0x00000028);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x00C, 0x00000030);
+ mmio_region_write32(isp_wrapper->base_addr, 0x720 + 0x010, 0x00000036);
+ mmio_region_write32(isp_wrapper->base_addr, 0x800 + 0x0,
+ 0x011a00d1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x800 + 0x4, 0x01260109);
+ mmio_region_write32(isp_wrapper->base_addr, 0x810, 0x00000414);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x000, 0x00000692);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x004,
+ 0x00000167);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x008,
+ 0x00000142);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x00C, 0x00000177);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x010, 0x000001c7);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x014,
+ 0x0006698a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x018, 0x00000032);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x01C, 0x00000023);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x020, 0x00000019);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x024, 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0814 + 0x028,
+ 0x00000006);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x000, 0x0000000a);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x004,
+ 0x00a200a2);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x008, 0x00170118);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x00C, 0x01d101ed);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x010, 0x01c100f8);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x014, 0x00020005);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0870 + 0x018, 0x00050019);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x04, 0x000002f4);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x08, 0x0000024e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x0C, 0x00000083);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x10, 0x000001af);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x14, 0x00000346);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x18, 0x000000a5);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x1C, 0x00000304);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x20, 0x00000111);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x24, 0x000003b9);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x28, 0x00000383);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x2C, 0x00000018);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x30, 0x0000028c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x34, 0x0000001e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x38, 0x00000087);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x3C, 0x00000047);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x40, 0x000001a4);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0900 + 0x44, 0x000002bc);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0550, 0x80000007);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0554, 0x0000011c);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0558, 0x000000c1);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x055c, 0x0000001e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0560, 0x00000078);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0564, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0568, 0x0000c2e6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x056C, 0x8ef9ad1e);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x0, 0x00000026);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x4, 0x0000004b);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x8, 0x0000000f);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0xC, 0x000001ea);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x10, 0x000001d6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x14, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x18, 0x00000040);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x1C, 0x000001ca);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0A00 + 0x20, 0x000001f6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0xA24,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A30, 0x000000dd);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A34, 0x000007c6);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A38, 0x000007df);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A3C, 0x000007bf);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A40, 0x000000ec);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A44, 0x000007de);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A48, 0x00000002);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A4C, 0x000007ae);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A50, 0x000000e0);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A54, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A58, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0A5C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B00, 0x00000020);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B0C, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B10, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B18, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x04 + 0x0C00,
+ 0x00008469);
+ mmio_region_write32(isp_wrapper->base_addr, 0x08 + 0x0C00,
+ 0x0000a674);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0C + 0x0C00,
+ 0x0000fa3d);
+ mmio_region_write32(isp_wrapper->base_addr, 0x10 + 0x0C00,
+ 0x0000ef61);
+ mmio_region_write32(isp_wrapper->base_addr, 0x14 + 0x0C00,
+ 0x0000f9b7);
+ mmio_region_write32(isp_wrapper->base_addr, 0x18 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x1C + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x20 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x24 + 0x0C00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x6C + 0x0C00,
+ 0x000000fa);
+ mmio_region_write32(isp_wrapper->base_addr, 0x08 + 0x0E00,
+ 0x5a000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0C + 0x0E00,
+ 0x00019f20);
+ mmio_region_write32(isp_wrapper->base_addr, 0x10 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x18 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x1C + 0x0E00,
+ 0x5a01a000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x20 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x24 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x2C + 0x0E00,
+ 0x5a01a000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x30 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x34 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0xF8 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x104 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x108 + 0x0E00, 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x110 + 0x0E00,
+ 0x00000003);
+ mmio_region_write32(isp_wrapper->base_addr, 0x130 + 0x0E00,
+ 0x00034000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x134 + 0x0E00,
+ 0x0004e000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x138 + 0x0E00,
+ 0x0004e000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x150 + 0x0E00,
+ 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x15C + 0x0E00,
+ 0x00000001);
+ mmio_region_write32(isp_wrapper->base_addr, 0x160 + 0x0E00,
+ 0x00000000);
+ mmio_region_write32(isp_wrapper->base_addr, 0x164 + 0x0E00,
+ 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x168 + 0x0E00,
+ 0x00000144);
+ mmio_region_write32(isp_wrapper->base_addr, 0x16C + 0x0E00,
+ 0x00019a10);
+ mmio_region_write32(isp_wrapper->base_addr, 0x00 + 0x0E00, 0x003a2808);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0500 + 0x00, 0x00000868);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0400 + 0x0000, 0x00207259);
+ mmio_region_write32(isp_wrapper->base_addr, 0x00 + 0x0C00, 0x00000190);
+ mmio_region_write32(isp_wrapper->base_addr, 0x04 + 0x0E00, 0x000000b0);
+ return kDifOk;
+}
+
+dif_result_t dif_isp_wrapper_clear_en(const dif_isp_wrapper_t *isp_wrapper)
+{
+ if (isp_wrapper == NULL) {
+ return kDifBadArg;
+ }
+ mmio_region_write32(isp_wrapper->base_addr, 0xb00, 0x00040000);
+ return kDifOk;
+}
+
+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, 0x0000 + 0x0B08);
+ mmio_region_write32(isp_wrapper->base_addr, 0x0000 + 0x0B0C, 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, 0x100 + 0x0E00);
+ mmio_region_write32(isp_wrapper->base_addr, 0x104 + 0x0E00, 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, 0x100 + 0x0E00);
+ 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, 0x0000 + 0x0B08);
+ return kDifOk;
+}
+
+dif_result_t dif_isp_wrapper_read_isp_ris(const dif_isp_wrapper_t *isp_wrapper,
+ uint32_t *val)
+{
+ if (isp_wrapper == NULL) {
+ return kDifBadArg;
+ }
+ *val = mmio_region_read32(isp_wrapper->base_addr, 0x0000 + 0x0B04);
+ return kDifOk;
+}
+
+dif_result_t dif_isp_wrapper_read_mi_ris(const dif_isp_wrapper_t *isp_wrapper,
+ uint32_t *val)
+{
+ if (isp_wrapper == NULL) {
+ return kDifBadArg;
+ }
+ *val = mmio_region_read32(isp_wrapper->base_addr, 0xFC + 0x0E00);
+ 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, 0x0000 + 0x0B0C, 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, 0x104 + 0x0E00, val);
+ return kDifOk;
+}