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,
