Merge changes from topic "bring_up_hps_demo"

* changes:
  [sw][matcha] Update ISP registes setup for raw and bypass modes
  [sw][matcha] Update demo script for new server setup
diff --git a/sw/device/lib/dif/dif_isp_wrapper.c b/sw/device/lib/dif/dif_isp_wrapper.c
index e6f6ae2..3363d33 100644
--- a/sw/device/lib/dif/dif_isp_wrapper.c
+++ b/sw/device/lib/dif/dif_isp_wrapper.c
@@ -194,29 +194,11 @@
   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,
+// ISP confituration: live, raw and bypass modes
+// Input arguments are frame weight, frame height and Y,Cb,Cr written addresses.
+dif_result_t _dif_isp_wrapper_set_raw_byp_en(
+    const dif_isp_wrapper_t *isp_wrapper, const uint32_t frame_width,
+    uint32_t frame_height,
     // 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,
@@ -225,127 +207,113 @@
   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, 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_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_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, frame_width);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_V_SIZE, frame_height);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_TOTAL_IN, 0x011d8518);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_ACT_IN, 0x00a001e0);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_FP_IN, 0x001c8126);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_BP_IN, 0x00454129);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_W_IN, 0x001bc0e9);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_GAP_IN, 0x003540a0);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_GAP_STD_IN, 0x00000050);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_RANDOM_SEED, 0xe30ce95f);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_FRAME_NUM, 0x00000003);
   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_OUT_H_SIZE, frame_width);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_OUT_V_SIZE, frame_height);
   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, ISP_EXP_CONF, 0x00000001);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_H_OFFSET, 0x000000d3);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_V_OFFSET, 0x00000017);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_H_SIZE, 0x00000043);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_EXP_V_SIZE, 0x00000048);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_DGAIN_RB, 0x01a200d7);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_DGAIN_G, 0x00f9011e);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_DEMOSAIC, 0x000004f6);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_MODE, 0x00000810);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_BL0, 0x00000230);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_BL1, 0x00000018);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_SH0, 0x00000287);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_THRES_SH1, 0x000003f2);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_LUM_WEIGHT, 0x00061fdc);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_SH1, 0x00000031);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_SH0, 0x00000031);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_MID, 0x0000002c);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_BL0, 0x0000001a);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_FILT_FAC_BL1, 0x00000016);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_CTRL, 0x00000004);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_COUNT_START, 0x00f00140);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_A, 0x01160187);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_B, 0x005f004c);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_C, 0x0138017a);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_X_NORM, 0x00020001);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CAC_Y_NORM, 0x00060015);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_MODE, 0x00000001);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_0, 0x00000170);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_1, 0x00000178);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_2, 0x00000181);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_3, 0x0000018e);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_4, 0x00000194);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_5, 0x000001b4);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_6, 0x000001b7);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_7, 0x000001b9);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_8, 0x000001ba);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_9, 0x000001ba);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_10, 0x000001ba);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_11, 0x000001ba);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_12, 0x000001ba);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_13, 0x000001ba);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_14, 0x000001ba);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_15, 0x000001ba);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_GAMMA_OUT_Y_16, 0x00000303);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_PROP, 0x00000002);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_H_OFFS, 0x00000052);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_V_OFFS, 0x0000016f);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_H_SIZE, 0x000001be);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_V_SIZE, 0x00000061);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_FRAMES, 0x00000001);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_REF, 0x0000b0c6);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_AWB_THRESH, 0x0b145491);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_0, 0x0000008d);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_1, 0x000000b1);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_2, 0x000000a2);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_3, 0x00000078);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_4, 0x00000169);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_5, 0x000000ba);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_6, 0x0000015c);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_7, 0x000000f8);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CC_COEFF_8, 0x0000017c);
   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_0, 0x000005ff);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_1, 0x00000707);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_2, 0x00000464);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_3, 0x00000008);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_4, 0x00000058);
   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_CT_COEFF_6, 0x00000241);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_7, 0x000006ff);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CT_COEFF_8, 0x0000007d);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CT_OFFSET_R, 0x000005ec);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CT_OFFSET_G, 0x00000d7e);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CT_OFFSET_B, 0x00000dd7);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_IMSC, 0x000400fc);
   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_SIZE_INIT,
+                      frame_width * frame_height);
   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,
@@ -356,184 +324,92 @@
                       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_IMSC, 0x000003ff);
+  mmio_region_write32(isp_wrapper->base_addr, MI_STATUS_CLR, 0x00000077);
   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_Y_LLENGTH, 0x00000140);
+  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, 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_MP_Y_PIC_WIDTH, frame_width);
+  mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_PIC_HEIGHT, frame_height);
+  mmio_region_write32(isp_wrapper->base_addr, MI_MP_Y_PIC_SIZE,
+                      frame_width * frame_height);
+  mmio_region_write32(isp_wrapper->base_addr, SRSZ_CTRL, 0x000001c0);
+  mmio_region_write32(isp_wrapper->base_addr, SRSZ_SCALE_HY, 0x0000546d);
+  mmio_region_write32(isp_wrapper->base_addr, SRSZ_SCALE_HCB, 0x0000db23);
+  mmio_region_write32(isp_wrapper->base_addr, SRSZ_SCALE_HCR, 0x000071b7);
+  mmio_region_write32(isp_wrapper->base_addr, SRSZ_SCALE_VY, 0x00007803);
+  mmio_region_write32(isp_wrapper->base_addr, SRSZ_SCALE_VC, 0x00005628);
+  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, 0x50000000);
+  mmio_region_write32(isp_wrapper->base_addr, MI_SP_Y_SIZE_INIT, 0x0006c1c0);
+  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, 0x00000128);
+  mmio_region_write32(isp_wrapper->base_addr, MI_SP_CB_BASE_AD_INIT,
+                      0x5006c800);
+  mmio_region_write32(isp_wrapper->base_addr, MI_SP_CB_SIZE_INIT, 0x00000000);
+  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,
+                      0x5006c800);
+  mmio_region_write32(isp_wrapper->base_addr, MI_SP_CR_SIZE_INIT, 0x00000000);
+  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, 0x00000124);
+  mmio_region_write32(isp_wrapper->base_addr, MI_SP_Y_PIC_HEIGHT, 0x00000176);
+  mmio_region_write32(isp_wrapper->base_addr, MI_SP_Y_PIC_SIZE, 0x0001b070);
+  mmio_region_write32(isp_wrapper->base_addr, MI_SP_Y_BASE_AD_INIT2,
+                      0x500d9000);
+  mmio_region_write32(isp_wrapper->base_addr, MI_SP_CB_BASE_AD_INIT2,
+                      0x50145800);
+  mmio_region_write32(isp_wrapper->base_addr, MI_SP_CR_BASE_AD_INIT2,
+                      0x50145800);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_ACQ_PROP, 0x40011);
+  mmio_region_write32(isp_wrapper->base_addr, SRSZ_CTRL, 0x000001c0);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_CTRL, 0x00207211);
+  mmio_region_write32(isp_wrapper->base_addr, ISP_TPG_CTRL, 0x00000d76);
+  mmio_region_write32(isp_wrapper->base_addr, MI_CTRL, 0x68352808);
   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_byp_en(isp_wrapper, 0x140, 0xf0, 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_byp_en(isp_wrapper, 0x140, 0xf0, 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, 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;
+  return _dif_isp_wrapper_set_raw_byp_en(isp_wrapper, 0x144, 0x144, 0x5a000000,
+                                         0x5a01a000, 0x5a01a000, 0x5a034000,
+                                         0x5a04e000, 0x5a04e000);
 }
 
 dif_result_t dif_isp_wrapper_clear_en(const dif_isp_wrapper_t *isp_wrapper) {
diff --git a/sw/device/lib/dif/dif_isp_wrapper.h b/sw/device/lib/dif/dif_isp_wrapper.h
index 761eafc..3730cfd 100644
--- a/sw/device/lib/dif/dif_isp_wrapper.h
+++ b/sw/device/lib/dif/dif_isp_wrapper.h
@@ -39,11 +39,6 @@
     const dif_isp_wrapper_t *isp_wrapper);
 dif_result_t dif_isp_wrapper_set_ml_mem_byp_320x240_en(
     const dif_isp_wrapper_t *isp_wrapper);
-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);
 dif_result_t dif_isp_wrapper_set_raw_324x324_byp_324x324_en(
     const dif_isp_wrapper_t *isp_wrapper);
 
diff --git a/util/run_live_cam.py b/util/run_live_cam.py
index be825c0..b95da87 100644
--- a/util/run_live_cam.py
+++ b/util/run_live_cam.py
@@ -12,22 +12,22 @@
 # 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.
-"""
-Run a live camera stream from Nexus board
+"""Run a live camera stream from Nexus board
 """
 
 import argparse
 from datetime import datetime
 from functools import reduce
 import re
-import serial
 import subprocess
+import serial
 from PIL import Image, ImageDraw, ImageFont
 
 
 def main():
     """Args:
       smc_uart_port: SMC uart port
+      usb_serial: USB serial
       baudrate: Baud rate of smc uart
       input_shape: Input image shape
       input_mode: Input image mode
@@ -35,10 +35,9 @@
     parser = argparse.ArgumentParser(
         description='Generate inputs for ML models.')
     parser.add_argument("--smc_uart_port",
-                        "-p",
-                        dest='port',
                         required=True,
                         help="SMC uart port")
+    parser.add_argument("--usb_serial", required=True, help="USB serial")
     parser.add_argument("--baudrate",
                         "-b",
                         default=115200,
@@ -58,7 +57,7 @@
     parser.add_argument("--opentitantool_conf", type=str, required=True)
     args = parser.parse_args()
 
-    ser = serial.Serial(port=args.port, baudrate=args.baudrate)
+    ser = serial.Serial(port=args.smc_uart_port, baudrate=args.baudrate)
 
     while True:
         line = ser.readline()
@@ -71,17 +70,17 @@
         address = re.search(r"\[SMC\] Start of a frame, address (\d+)\.",
                            line.decode())
         if address:
-          address = address.groups(1)[0]
+            address = address.groups(1)[0]
         else:
-          continue
+            continue
         current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
         print("Start loading the frame")
         # Load the frame from uart
         byte_size = str(reduce(lambda x, y: x * y, args.input_shape))
         byte_str = subprocess.check_output([
             args.opentitantool_bin, '--conf', args.opentitantool_conf,
-            '--interface', 'nexus', 'spi', 'read-memory', '--length',
-            byte_size, '--start', address
+            '--interface', 'nexus', '--usb-serial', args.usb_serial, 'spi',
+            'read-memory', '--length', byte_size, '--start', address
         ])
 
         im_obj = Image.frombytes(mode=args.input_mode,